ROS1和ROS2的选择

小车型号是HUNTER SE,给的官方教程是使用ROS1操作,但是安装教程过于陈旧,需要使用ubuntu16版本,和ROS KENICT版本,网上说ROS2是兼容ROS1的,而且有更好的性能,所以选择ROS2。

配置ROS2环境记录

环境:ubuntu22.04+vscode

教程1

一、安装必要的ROS2工具

网上教程很丰富,采用了直接进入官网下载安装包本地安装,选择代号为rolling的最新版本。

二、配置vscode环境

考虑使用cmake+ament_cmake+colcon构建。
可以使用教程中的ros2 pkg命令创建新的项目,参数可以问chatgpt。

需要的包和工具:

  • cmake是多文件编译的基本工具,可以根据CMakeLists.txt自动生成MakeFile文件
  • ament_cmake用于辅助ROS2的项目构建,注意这个包不会随着ROS工具集一起下载,需要使用apt-get命令单独安装。
  • colcon用于管理ros2的package的工作空间。这个工具是一个vscode插件。colcon基于CMake工作,在调试过程中,可单独使用CMake运行项目,在最终完成项目时,按下ctrl+shift+B,使用colcon build进行package的安装。

需要注意的坑

坑1:装好ROS相关工具之后,无法在命令行使用

  • 解决1:每次打开shell前,需要运行命令
    source /opt/ros/rolling.setup.bash
    可以通过修改shell配置的方法,使得每次打开shell时自动运行该命令。
    vim ~/.bashrc
    在文件的末尾加入该命令。

    坑2:ztrl+shift+P,输入Edit Config,配置好c_cpp_preproperties的第三方引用路径之后,代码提示中还是报错,找不到头文件。

  • 解决2:在CmakeLists.txt文件中,使用include_directories语句,将需要使用的头文件地址引用。注意,这个语句不会进行递归搜索,所以需要写清楚引用头文件的相对路径。

    坑3:习惯性的想使用External consoler,但是launch.json文件配置不成功

  • 解决3:没什么办法,想要使用外部终端,只能在外面打开一个新的shell了

    坑4:CMake编译运行成功之后,没有install的输出

  • 解决4:install的默认路径中的lib,是 $CMAKE_INSTALL_PREFIX的相对路径,需要单独使用make install命令才会有输出。注意需要在cmake ..之后使用,即在CMakeLists.txt的子目录下进行使用。

    坑5:CMake编译运行成功,但是使用ros2 run命令找不到package

  • 解决5:没有理解colcon的作用,需要先使用colcon build构建工作空间,然后必须运行source install/setup.bat,之后才能找到自定义的package。package的名称,可以在package.pom中设置,executable_name可以在CMakeLists.txt中设置,即导出文件的名称。

ROS2工作原理的初步理解