之前搞定了ROS2,下一步就去研究nav2,一个导航库,因为工作需要,我要从一个嵌入式软件工程师,转到算法工程师了,不准备搞学院派的mabltab或者python那一套,而是准备直接从ros2开始搞,反正各种工具都挺全面的。
ros2的源码安装就不说了,nav2的安装文档如下:
Build and Install — Nav2 1.0.0 documentation
点开
外部依赖通过rosdep能安装,内部依赖却没有在官网教程说,只在代码的readme文档或者package.xml写了,不知道是不是我没找到相关的说明,有点坑,去这个网站找包,版本要求也会在索引中列出来。
https://index.ros.org/
ros2的构建系统有个好处,包源码的位置随便放,但也带来一些凌乱,添加新得包之后,记得用命令安装一下外部依赖:
rosdep install -y --from-paths ./src --ignore-src
目前似乎有些问题,有些内部依赖也被识别为外部依赖,并且提示找不到,但并没有影响最终结果。
-
内部依赖包:
-
bond
https://github.com/ros/bond_core
git checkout ros2,切换到ros2分支,编译通过
-
behaviortree_cpp_v3
https://github.com/BehaviorTree/BehaviorTree.CPP.git
git checkout v3.8,切换到v3.8分支,编译通过
-
diagnostics
https://github.com/ros/diagnostics
git checkout ros2-humble
-
angles
https://github.com/ros/angles
用主分支,编过了,但要求是foxy-devel
-
ompl
https://github.com/ompl/ompl
main分支在编译nav2_smac_planner时有错误,切换到master,编过了,但index页面要求是1.5.0版本
-
cv_bridge
https://github.com/ros-perception/vision_opencv.git
git checkout humble
-
gazebo_ros_pkgs
https://github.com/ros-simulation/gazebo_ros_pkgs.git
这个可以不要,是测试部分依赖的,index页面中说是需要切换到foxy开发版,但编译有错误,我切换到ros2版本应该可以编过了,但我的22.04的虚拟机一直花屏,编到一半会卡死,就没再试。
花了半天的时间,400多个包全编译完成,下面开始跑一跑nav2的用例,学习下nav官方页面的概念,nav2几乎把ros2的高级功能都用上了,还是蛮复杂的。
turtlebot3-gazebo这个包还没有用源码安装,所以例程就在二进制安装的版本中跑了:
https://docs.nav2.org/getting_started/index.html#installation
预计再过一个月,可以开始研究算法在项目中的应用,但在此之前,还要把nav2的框架、流程搞完。
但因为例程是用turtlebot3-gazebo跑的,不准备去研究这个,打算先看文档,再从nav2_bringup开始看(nav2_waypoint_follower也可以),先看行为树,再看四个action server,再到具体算法,熟悉nav2的工作流程是第一步必须要完成的。