cmake C++代码从ROS 1迁移到ROS 2-如何在ROS 2中使用C++串行库?

ohfgkhjo  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(318)

我正在将一个包从ROS 1迁移到ROS 2。它是一个电机控制器驱动程序,因此它通过USB进行通信,并使用“串行”C库。我见过其他类似于此的ROS 2 C驱动程序使用串行库,但我想知道如何在构建时修复此错误:

CMake Error at CMakeLists.txt:26 (find_package):

  By not providing "Findserial.cmake" in CMAKE_MODULE_PATH this project has

asked CMake to find a package configuration file provided by "serial", but
  CMake did not find one.

  Could not find a package configuration file provided by "serial" with any
  of the following names:

    serialConfig.cmake
    serial-config.cmake

  Add the installation prefix of "serial" to CMAKE_PREFIX_PATH or set
  "serial_DIR" to a directory containing one of the above files.  If "serial"
  provides a separate development package or SDK, be sure it has been
  installed.

    ---

Failed   <<<

我在我的文件中包含了标题#include〈serial/serial.h〉,并在CMakeLists.txt中包含了find_package(serial REQUIRED)。我是否遗漏了什么才能正常工作?这是全新安装,我是否需要安装任何内容?谢谢
在ROS 1中,你可以简单地使用apt-get install ros-noetic-serial。这在ROS 2中不起作用。当我运行colcon build时,我得到了上面的错误。

m1m5dgzv

m1m5dgzv1#

你确定你见过的其他ROS 2驱动程序使用的是完全相同的软件包吗?据我所知,没有官方发布的ROS 2串行软件包(基于官方GIT仓库here的问题部分)。
然而,话虽如此,你可以看到有一些“非官方”的版本,人们已经移植了确切的串行库,现在在ROS 2中用colcon构建。serial-ros 2项目here和原始库here的ros 2分支目前可能非常相似,是串行包的非官方版本。你可以给予一下。
我在这个用例中遇到的另一个软件包是transport_drivers仓库,其中包含serial_driver软件包,该软件包针对ROS 2 here进行了一些开发。然而,使用该软件包可能需要修改原始代码以使用该软件包,还需要做一些额外的工作:)
希望这有帮助!

相关问题