
导航算法阅读
若愚和小巧
懂深度学习、SLAM的软件工程师
展开
-
HDL-localization源码阅读
在一般的激光定位中,原创 2020-09-26 15:10:21 · 4051 阅读 · 5 评论 -
move_base中的actionlib机制的源码探析
actionlib是原创 2020-05-17 11:52:13 · 2996 阅读 · 0 评论 -
Navigation源码阅读之dwa_local_planner(DWA动态窗口法)
DWAPlannerROS是封装类,提供了与move_base的接口,而DWAPlanner是具体实现类,它非常依赖costmap(当然不指望让小车动态避障的话就无所谓了),因此我们在使用时需要保证代价地图的膨胀度以及实时更新频率。btw:在此类代码中,基本上下反复使用的变量在函数形参中都是引用,实在放心不下还是看声明吧~move_base是规划路径与速度的大类,DWAPlannerROS提供...原创 2018-11-13 15:19:17 · 8964 阅读 · 2 评论 -
Navigation源码阅读之move_base
move_base是小车控制的核心模块,这一块从宏观上调控了整个导航过程。先瞄一眼头文件:typedef actionlib::SimpleActionServer<move_base_msgs::MoveBaseAction> MoveBaseActionServer; enum MoveBaseState { PLANNING, CONTROLLIN...原创 2018-11-15 16:48:06 · 1552 阅读 · 1 评论 -
Navigation源码阅读之base_local_planner
base_local_planner是直接决策小车以何种轨迹运行、下发何种速度的大类,可能由于开发的历史原因,下面的文件全部放在这个包里,显得有些杂乱,咱们慢慢捋一捋。首先看看navigation包的nav_core包,nav_core是一个纯虚类,里面对base_local_planner进行了父类的虚函数声明,它使用默认构造函数,initialize函数接受名字、tf、代价地图进行“构造”...原创 2018-11-16 18:54:46 · 2483 阅读 · 2 评论 -
Navigation源码阅读之costmap_2d
costmap可谓是激光slam的商标一般,它直接决定了小车的路径设计与速度计算,不把它搞清楚心里都发虚。当然,作为一个只分析代码、不贴图也不进行科普的人,还是从导航的核心模块——move_base开始:planner_costmap_ros_ = new costmap_2d::Costmap2DROS("global_costmap", tf_);planner_costmap_ros...原创 2018-11-19 17:45:27 · 2285 阅读 · 0 评论 -
Navigation源码阅读之robot_pose_ekf
卡尔曼滤波器是传感器融合的利器,而navigation源码中的对于小车感知这一块的处理也是依靠EKF来实现,我们来阅读一下这个包的实现方法,以及网上的贝叶斯滤波的官方API,在实际使用时,可以更快地定位错误与改写。一、首先看看cmakelists,这个包只生成一个节点,主函数在odom_estimation_node.cpp中,定位到OdomEstimationNode类的构造函数,这里有一溜...原创 2018-11-28 11:31:39 · 4063 阅读 · 6 评论 -
Navigation源码阅读之amcl
amcl(自适应蒙特卡罗)定位方法是目前比较流行的定位算法,它利用粒子表示置信度,通过把合适的概率运动模型与感知模型代入到粒子滤波算法模型中得到估算出的机器人状态。而根据tf树就可以看到,它实际上是估算了base_link到map的tf变换。和local_planner相似,这个包的文件也很多,先在CmakeList看看它们的依赖关系,可以看到它生成了amcl_sensors,amcl_map...原创 2019-01-03 17:23:03 · 1966 阅读 · 0 评论