计划分两步,第一步熟悉nav2框架,把nav2的框架搞明白,例子看一看nav2_waypoint_follower。
然后会用了,还要进一步研究算法,无人机领域的算法还好,但该搞定的概念一个都不能少。
-
navigation概念
-
行为树,behaviortree_cpp_v3是行为树操作库,他被主程序使用
-
代价地图,应该是节点和插件
-
状态估计与坐标变换
-
SLAM或者静态环境建模,地图表示
-
机器人描述文件,可以被gazebo读取
-
gazebo和rviz,gazebo可以模拟各种传感器数据,rviz可以可视化配置系统。
-
-
nav2框架
-
nav_bt_navigator,应该算主程序,主节点,参数挺多
-
nav2_behavior_tree,提供各种动作插件,供nav_bt_navigator使用,主要分为动作插件、条件判定插件、控制插件等,每一个插件都算是行为树的节点。
-
控制器server、规划器server、动作器server,都是生命周期节点,而实际的规划器、动作器,都是插件形式
-
nav2_map_server负责加载和广播环境地图,可以是静态配置文件的静态地图,也可以是运行时加载的动态地图(应该是来自slam之类的),加载地图可以从launch阶段的.map文件(应该主要是仿真时),也可以通过yaml描述文件。但不知道是不是和slam互斥的,估计我做仿真,应该会用静态地图。
-
如果要结合SLAM进行导航,还要安装slam_toolbox包,这好像是nav2之外的一个包了,我早期应该不需要,先用静态地图搞就行。
-
AMCL,好像这个是结合nav2_map_server,可以在读取yaml或则.map文件的地图数据后,完成定位(借助传感器),这样就相当于完成了静态环境构建,不需要使用SLAM包了。
-