自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (5)
  • 收藏
  • 关注

翻译 roscontrol学习笔记

0 概述一组包,包括控制器接口、控制器管理器、传输和硬件接口。1 overview输入:机器人编码器的关节状态数据、输入设定点功能:使用闭环控制器(如PID),控制输出(如扭矩)...

2019-10-30 16:27:41 503

原创 最优化理论简述

概述优化问题的类型:NLP:非线性优化Dynamic Optimization(Optimal Control):与时间有关Stochastic optimization 随机优化multi—objective optimization 多目标优化game-theory 博弈论0 最优化的概念凸集(convex sets):两个元素任意线性组合,仍在两个元素所在集合。凸函数:定义...

2019-06-28 18:04:40 4175

翻译 ROS pluginlib笔记

概述pluginlib可以用来创建和加载plugin。思想:pluginlib是一个用于从ROS包中加载和卸载插件的C++库。 插件是从运行时库(即共享对象,动态链接库)加载的动态可加载类。使用pluginlib,不必显式地将其应用程序与包含类的库链接。pluginlib可以在任何时候打开包含导出类的库,而应用程序不必预先知道库或包含类定义的头文件。插件可用于扩展/修改应用程序行为,...

2019-05-05 17:13:18 392

翻译 AMCL简介

概述amcl是一种机器人二维运动的概率定位系统。它实现了自适应(或kld采样)蒙特卡罗定位方法(如Dieter Fox所述),该方法使用粒子过滤器跟踪机器人对已知地图的姿态。1 算法只适用于激光扫描2 exampleamcl scan:=base_scan3 节点3.1 amcl3.1.1 订阅scan (sensor_msgs/LaserScan)tf (tf/tfMessa...

2019-04-29 20:35:51 2353

翻译 map_server简介

概述提供了map_server 节点,以服务的方式提供地图数据。也提供了命令行。1 地图格式yaml描述的是地图meta-data,并且命名了image文件。image文件编码了occupancy data。1.1 image 格式该图像以相应像素的颜色描述世界上每个单元的占用状态。1.2 yaml 格式image:image的路径resolution:地图分辨率 单位:met...

2019-04-29 19:40:40 3085

翻译 ros stage仿真工具学习

概述ros的这个教程写的很不完善。1 stage controller介绍可以仿真机器人运动。2 开始一个turtlebot的仿真提到了一个turtlebot_stage包3 自定义stage仿真器四个文件:.png.world里面可以改变机器人的初始位姿,障碍的位置等.yaml.inc可以定义一些动态障碍的大小,传感器信息。定义机器人这两个文件的参数不同,必须对齐。在...

2019-04-28 21:34:53 2034

翻译 Git GitHub

Git 是一种专为处理文本文件而设计的版本控制系统。与github的简单介绍可见http://blog.jobbole.com/111187/

2019-04-23 20:54:36 151

翻译 qpOASES使用笔记

概述qpOASES是一个开源c++项目,是一个可结构开发的有效集求解器(structure-exploiting active-set QP solver)。qp可用于解决具有一下标准形式的问题:H为半正定对称hessian矩阵。下载https://projects.coin-or.org/qpOASES/wiki/QpoasesDownload解压该文件夹,在该文件夹下直接make...

2019-04-15 21:04:03 5682 2

翻译 cmake实践笔记

概述camke是一款工程构建工具。特点:1、开放源码,使用类BSD许可发布2、跨平台,可生成native编译配置文件,在linux下生成makefile。3、简化编译构建过程和编译过程。 camke的工具链非常简单:cmake+make清理构建结果可用make clean 。初试cmakePROJECT(projectname [CXX] [C] [Java])1、指定项目名称,...

2019-04-13 17:01:40 267

转载 Linux、ros常用操作指令(面试用)

https://www.cnblogs.com/ccy1106/p/6637661.html

2019-04-13 13:17:09 2764

翻译 GitHub简介

概述关键词:repository(仓库 ) branch(分支)commits(提交)On GitHub, saved changes are called commits。Pull Requests(合并请求)GitHub是什么?GitHub是一个用于版本控制和协作的代码托管平台。创建repository一个repository用来组织一个项目。可包含文件、文件夹、图像甚至视频...

2019-04-10 20:35:45 192

原创 VehicleDynamicAndControl(五)-introduction to longitudinalcontrol

概述纵向控制器用于控制汽车纵向的运动,例如速度、加速度、纵向距离5.1.1 自适应巡航控制(ACC)5.1.2 collision aviodance前方无车辆时,定速巡航。前方有车辆时,减速+警告车主5.1.3 Automated highway systems(AHS)控制车辆以紧密的间隔在高速公路中行驶。5.3 巡航控制控制速度PI控制器。...

2019-04-09 15:12:17 750

原创 VehicleDynamicsAndCoontrol(四) -LONGITUDINAL VEHICLE DYNAMICS

概述主要讨论纵向动力学。纵向车辆模型的两个主要要素是车辆动力学和动力总成动力学4.1 纵向车辆动力学4.1.1 aerodynamic drag force(空气阻力)与空气密度、Cd为空气阻力系数,迎风面积、车速、风速有关。书中有介绍这些数的计算和选取。4.1.2 longitude tyre force与slip ratio(滑移率)、tire nomal load(轮胎垂向载...

2019-04-09 13:47:28 689

原创 Vehicle Dynamics And Control(二)-lateral vehicle dynamics

2.1 商业开发中的横向控制系统汽车行业开发了三种横向系统:车道偏离预警系统(LDWS):如果发现偏离则预警车道保持系统(LKS):保持在道上偏航稳定控制系统:防止车辆旋转和漂移。其中偏航稳定控制系统大致有三种:Differential Braking systems:利用汽车上的ABS制动系统,在左右车轮之间采用差动制动来控制偏航力矩的系统Steer-by-Wire systems...

2019-04-04 20:49:48 3046

转载 无人驾驶公司排名

转载自:https://blog.csdn.net/weixin_42229404/article/details/81409096 企业类型 企业名称 成立时间 定位 定位 方案 专利数量 牌照 最新融资 国内初创公司 roadstar.ai 2017.5 L4 自动驾驶出租车队 ...

2019-03-25 16:15:18 6744

原创 无人驾驶模型预测控制(七)-航向跟踪预估控制算法

之前的算法,书籍作者并未在实际中运用(优化算法耗时较长)然后他写了一个单步航向预估控制算法,结合pid在单片机中实现了一下。二自由度无人驾驶车辆动力学模型书里竟然没给航向预估算法原理思想是模型预测控制的超级简化只预估下一时刻的航向角与参考航向角的偏差,以此偏差作为反馈量来控制。连优化都没有了。PID控制增量pid:点评:简单的思想的一个实验。...

2019-03-08 17:11:34 3071 1

原创 无人驾驶模型预测控制(六)-加入规划层的轨迹跟踪控制

结合规划层的轨迹跟踪控制系统思想:局部规划+轨迹跟踪局部规划:低精度模型+长周期跟踪控制层:高精度模型+短周期基于MPC规划层需满足的条件:满足运动学、动力学约束能避障基于MPC控制层需满足的条件:实际跟踪轨迹与期望轨迹偏差尽量小优化出的控制量满足执行机构的限制不打滑,不侧翻基于MPC的规划器模型:点质量动力学模型参考点的选择:(考虑目标点信息时)离车最近的轨迹...

2019-03-08 16:00:27 5422 4

原创 无人驾驶模型预测控制(五)-基于动力学模型的无人驾驶车辆主动转向控制

理论基础各种概念非线性系统:状态变量之间有相乘,无法表达为x点=Ax+Bu形式根据是否有时间t作为参数,还分为非线性时变和非线性定常系统。线性系统,可以表达为线性形式。线性时变:参数随时间变化A(t),B(t)线性定常:参数不随时间变化线性误差方程状态变量:速度和位置量(共六个),控制变量:前轮偏转角根据小角度假设的动力学模型,进行泰勒展开,可等到以误差为状态变量的线性时变方程。...

2019-03-07 22:15:28 7410 20

转载 c++使用vector建立最大堆和最小堆

一、建堆vector nums = {9, 6, 2, 4, 7, 0, 1, 8, 3, 5};1、如果使用nums构建最大堆:make_heap(nums.begin(), nums.end());//或make_heap(nums.begin(), nums.end(), less());输出nums的结果为9 8 2 6 7 0 1 4 3 52、如果使用nums构建最小堆...

2019-03-06 22:15:27 871

原创 无人驾驶车辆与模型预测控制(三)——模型预测控制算法基础

0 模型预测控制三个步骤预测模型:根据历史信息、未来输入预测未来输出。滚动优化:某一性能指标最优,反复在线优化。反馈校正:基于测量对模型预测进行修正。图例:对于参考轨迹1,以时刻k作为当前时刻,预测[K,K+Np]的系统输出,通过求解以某目标的优化问题,得到预测控制量4,以该控制序列的第一个元素作为实际控制量。下一时刻,重复该过程(滚动)。根据所用模型不同,模型预测控制分为动态...

2019-03-05 20:07:16 10083

原创 无人驾驶车辆模型预测控制(一)

一些概念路径跟踪: 跟踪reference path即可,不受时间约束。轨迹跟踪: path和时间均需跟上。模型预测控制与运动规划和控制:低速:运动学特性大高速:动力学特性影响大基于简化的动力学模型与运动学模型的模型预测控制是轨迹跟踪研究热点...

2019-03-04 11:29:40 3158

原创 卡尔曼滤波概念

概述目的:对目标进行状态估计。本质:考虑对当前的预测(基于运动模型)和当前的测量,给出状态估计。卡尔曼增益:体现了预测和测量的权重。过程:预测+更新应用场景:可用于无人驾驶领域多传感器信息融合卡尔曼滤波算法为什么会叫滤波算法?以一维卡尔曼滤波为例,如果我们单纯的相信测量的信号,那么这个信号是包含噪声的,是很毛糙的,但是当我们运行卡尔曼滤波算法去做估计,我们估计的信号会很光滑,看起来...

2019-02-28 16:19:58 253

原创 navigation代码行数统计

概述仅仅是出于无聊,统计一下ros navigation代码行数。amclcostmap_2dnav_coremove_baseglobal_plannerteb_local_plannerdwa_local_plannerbase_local_plannermap_serverfake_localizationclear_costmap_recover...

2019-02-26 13:01:36 273 2

原创 teb优化轨迹流程

概述teb源码分析中,我大概了解到了teb算法的底层实现过程,涉及到弹性带定义、初始化、g2o优化、各种参数配置。但是我对于teb的轨迹优化流程不甚明了。弹性带轨迹存放在哪里?何时、如何初始化?何时优化?多久优化一次?如何将costmap的障碍进行表示?movebase多久调用一次teb?怀揣着这些问题,读源码了解调用流程。movebase对teb_local_planner_ros类功能的...

2019-02-23 17:26:14 8455 6

转载 c++中 .hpp和.h文件的区别

.hpp文件本质:将.cpp的实现代码混入.h头文件当中,使定义与实现都在同一文件。对该类的调用只需要include该.hpp文件,不需要将cpp加入编译。实现代表直接编译到调用者的.obj文件中,不再生成单独的obj文件。好处:采用hpp将大幅度减少调用project中cpp文件数与编译次数,也不用发布lib与dll文件,因此非常适合来编写公用的开源库。hpp的优点不少,但是编写中有以下几...

2019-02-23 09:56:00 4194

原创 costmap2D数据结构及生成过程

概述前一篇源码分析,让我了解到了costmap_2d包类的具体功能。但costmap2d包的到底整体包含什么地图数据?如何维护地图数据?何时调用各层更新?何时聚合?这些问题还不甚明了。这篇对costmap2d维护的地图数据、更新过程做一个总结。地图数据结构‘如中序号对应了地图生成过程的步骤,可能不全,但是已经对地图的数据有了清晰的认识。地图生成过程move_base类的构造函数,调用了...

2019-01-18 23:51:38 1077

原创 costmap_2d包源码学习

0 概述该软件包订阅现实世界的传感器数据,实现2d栅格costmap。该软件包还支持基于map_server的costmap初始化,基于滚动窗口的costmaps,以及基于参数的订阅和传感器主题的配置。0.1 层次分为三层:staticlayer,obstaclelayer,inflationlayer。0.2 基础cost值每个单元分为三个状态。Occupied(costmap_2d...

2019-01-18 23:47:00 1941 1

转载 stringstream基本用法

http://www.cnblogs.com/firstmiki/p/6128639.html

2019-01-15 20:25:53 268

原创 tf中的常用类和函数

geometry_msgs::PoseStamped消息简介:内容包括序列号、时间戳、frameID、位姿(点表示位置和四元数表示姿态)tf::Transform和tf::pose完全一样,就是一个typedef类简介:储存了3×3旋转矩阵和3×1平移矢量。tf::StampedTransform类简介:保存stamped transform类型的数据。带有ROS时间戳、子坐标系、父坐标...

2019-01-15 11:11:56 1297

转载 LINUX常用命令

一、Linux权限的概念 Linux下有两种用户:普通用户和超级用户()。 普通用户:在linux下做有限的事情; 超级用户:可以在linux系统下做任何事情,不受限制。 普通用户的提示符是“$”,超级用户的命令提示符是“#”。 命令: su [用户名] 功...

2019-01-15 11:10:52 168

转载 boost线程知识

BOOST 线程完全攻略 1 创建线程 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0& threadfunc):&n...

2019-01-15 11:10:33 154

原创 boost库之多线程编程

多线程与多进程的概念说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物...

2019-01-15 11:10:09 505

原创 actionlib常规操作

actionlib::ActionServer< ActionSpec >::ActionServer ( ros::NodeHandle n,std::string name,boost::function< void(GoalHandle)> goal_cb,boost::function< void(GoalHandle)> cancel_c...

2019-01-15 11:09:32 446

原创 导航recovery机制

概述recovery机制是当移动机器人认为自己被卡住时,指导机器人进行一系列的恢复行为。1 恢复机制如图:move_base节点可以在机器人认为自己被卡住时选择性地执行恢复行为。默认情况下,move_base节点将采取以下操作来清除空间:首先,用户指定区域以外的障碍物将从机器人的地图上清除。接下来,如果可能的话,机器人将进行原地旋转以清除空间。如果这也失败了,机器人将更积极地清除地图,...

2019-01-14 18:43:19 2544

原创 global_planner源码学习

简介global_planner负责全局规划,主要利用了A*算法和Dijkstra算法。提供了makeplan接口做全局规划。可以发布geometry_msgs::PoseStamped类型的信息。类简介

2019-01-07 20:13:33 1142

原创 nav_core包源码学习

简介gav_core包里面只有四个头文件,规定了导航核心功能包必须有的接口。四个头文件中:三个虚基类:BaseGlobalPlanner、BaseLocalPlanner、RecoveryBehavior函数:loadParameterWithDeprecation加载ros参数服务器中的参数。BaseGlobalPlanner类1、虚函数initialize:需实现功能:设定全局规...

2019-01-06 14:52:27 344

原创 ros tf2包学习

rosrun tf tf_echo [reference_frame] [target_frame] :look at the transform of the [target_frame] frame with respect to [reference_frame] frametf2_ros::StaticTransformBroadcaster该类可以被用作发布静态transform。...

2018-12-27 21:04:17 3771 1

原创 move_base源码学习

综述这个类调用actionlib::ActionServer接口接受目标,然后将小车导航到目标位置。move_base类公有接口MoveBase ():初始化类成员,通过模板化的插件构造全局、局部规划器。基于传感器数据,激活全局与局部costmap。提供了ros服务:“make_plan”,“clear_costmaps”提供动态参数配置。回调函数void MoveBase::go...

2018-12-27 10:37:41 946

原创 ros::nodehandle常规操作

ros::nodehandle::param(const std::string & param_name,T & param_val,const T & default_val )此方法尝试从参数服务器检索指示的参数值,并将结果存储在param_val中。 如果无法从服务器检索该值,则使用default_val。param_name:参数服务器中的参数名par...

2018-12-24 20:16:31 4699

原创 teb_localplanner源码学习

概述teb_localplanner是以优化的方法进行局部导航的软件包。基于timed elastic band 方法进行轨迹生成。考虑了运动时的轨迹执行时间、避障、动力学的界约束等条件。此笔记是对teb包的源代码进行学习的一个记录。teb包的类继承图1、teb中的g2o类型利用doxywizard+graphiz对包进行解析,查看类继承图teb的优化问题的解决利用了开源软件包g2o,先...

2018-12-23 16:05:16 10291

Planning Algorithm

Planning Algorithm 英文版 Steven M. LaValle 著 规划算法

2019-03-01

机器人操作的数学导论

李泽湘教授写的机器人操作的数学导论 从数学角度系统介绍了机器人操作的运动学、动力学、控制和运动规划。

2019-03-01

Introduction to Autonomous Mobile Robots(自主移动机器人导论)

Introduction to Autonomous Mobile Robots,英文清晰版,经典的机器人学习书籍

2018-09-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除