ROS1迁移至ROS2:如何在ROS2中使用C++ serial库?
解决ROS2中serial库编译找不到的问题
ROS2官方apt源没有提供像ROS1那样的ros-<distro>-serial预编译包,所以你需要手动处理serial库的依赖,以下是两种可行方案:
方案1:将serial库作为包的子模块集成
- 进入你的ROS2驱动包目录,执行命令添加子模块:
git submodule add https://github.com/wjwwood/serial.git - 在包的
CMakeLists.txt中,在add_executable之前添加:add_subdirectory(serial) - 在链接目标库时,替换原来的依赖配置为
serial::serial:target_link_libraries(你的节点名称 serial::serial rclcpp # 其他你的ROS2依赖 )
方案2:手动编译安装serial库到系统
- 克隆serial库源码:
git clone https://github.com/wjwwood/serial.git cd serial mkdir build && cd build - 编译并安装到系统路径:
cmake .. make -j$(nproc) sudo make install - 完成后,你的
CMakeLists.txt中find_package(serial REQUIRED)就能正常找到库的配置文件,无需额外修改。
补充说明
ROS1中的ros-noetic-serial本质是官方将wjwwood/serial库打包成了ROS包,安装后会自动将CMake配置文件加入ROS的查找路径,所以find_package能直接生效。但ROS2没有提供这个预编译包,因此需要手动集成或安装该库。
内容的提问来源于stack exchange,提问作者Chase
相关产品推荐
相关产品推荐

