# 如何在 ROS2 中构建和运行 ## 概述 在 ROS2 环境下使用雷达驱动,需要安装 ROS2 相关依赖库。 - Ubuntu 16.04 - 不支持 - Ubuntu 18.04 - ROS2 Eloquent desktop - Ubuntu 20.04 - ROS2 Foxy desktop - Ubuntu 22.04 - ROS2 Humble desktop 安装方法请参考 https://index.ros.org/doc/ros2/Installation/Eloquent/Linux-Install-Debians/ **请不要在一台电脑上同时安装 ROS 和 ROS2,以避免可能的版本冲突,和手工安装其他库(如 Yaml)的麻烦。** ## 安装依赖 ### 安装 Yaml(必需) 版本号: >= v0.5.2 *若已安装 ROS desktop-full, 可跳过* 安装方法如下: ```bash $ sudo apt-get update $ sudo apt-get install -y libyaml-cpp-dev ``` ### 安装 libpcap(必需) 版本号: >= v1.7.4 安装方法如下: ```bash $ sudo apt-get install -y libpcap-dev ``` ## 基于 ROS2-colcon 编译 (1) 打开工程内的 *CMakeLists.txt* 文件,将文件顶部的变量 **COMPILE_METHOD** 改为 **COLCON**。 ```cmake #======================================= # Compile setup (ORIGINAL,CATKIN,COLCON) #======================================= set(COMPILE_METHOD COLCON) ``` (2) 将 aglidar_sdk 工程目录下的 *package_ros2.xml* 文件重命名为 *package.xml*。 (3) 新建一个文件夹作为工作空间,然后再新建一个名为 *src* 的文件夹,将 SDK 工程放入 *src* 文件夹内。或者在 clone 的时候进行重命名,例如: ```bash $ mkdir Asensing_LiDAR_ROS && cd Asensing_LiDAR_ROS # 工作空间 $ git clone git@gitlab.ag.com:fusionposition/software/lidar/lidar_sdk/asensing_lidar_ros2.git src ``` (4) 返回工作空间目录,执行以下命令即可编译、运行。如果使用 .zsh,将第二行替换为 *source install/setup.zsh*。 ```bash $ source /opt/ros/humble/setup.bash $ colcon build $ source install/setup.bash $ ros2 launch aglidar_sdk start.py ``` 此时,会启动 Rviz,如果正确连接 LiDAR 或者提供预先录制好的数据文件,将会看到点云,如下图所示。 ![](./img/ros2-rviz-test.png) (5) 若需要使用深度图,重新打开一个命令行窗口,执行以下命令即可编译、运行该节点。 ```bash $ source install/setup.bash $ ros2 run depth_make depth_make ``` 提示:若 colcon build 时提示 CMake Error at CMakeLists.txt:45(if),执行 `source /opt/ros/humble/setup.bash` 即可。 另外,不同 ROS2 版本 start.py 的格式可能不同,请使用对应版本的 start.py。如 ROS2 Elequent,请使用 elequent_start.py。 ## FAQs (1)使用 `colcon build` 编译 SDK 时出现如“ fatal error: ros/package.h: 没有那个文件或目录”的错误,怎么解决? 这个错误通常是由于你的系统同时安装了 ROS1 和 ROS2 导致的,ros/package.h 是 ROS1 特有的文件,在 ROS2 中找不到。因为目前 CMake 是通过查找文件的方式来判断当前系统是否安装了 ROS 或 ROS2,后续将修复该问题。 如果你使用旧版本的 SDK,可以通过修改 CMakeLists.txt 文件的方式来解决,具体来说,打开 aglidar_sdk/CMakeLists.txt 文件,找到第 81 行(附近)的 `add_definitions(-DROS_FOUND)`,在前面加上 `#` 符将其注释掉即可。 ```cmake #add_definitions(-DROS_FOUND) ```