使用Bazel构建的Drake与ROS2项目链接问题求助
将Bazel构建的Drake链接到ROS2项目的问题
硬件
运行Ubuntu 24.04的树莓派5,因为是arm64架构,所以需要自行构建Drake。
搭建过程
已成功构建Drake,步骤如下:
- 通过bazelisk安装Bazel
- 在
.bazelrc文件中添加build --define NO_DREAL=ON和build --jobs=1 - 从
packages_noble.txt中移除libquadmath0 - 执行
bazel build //tools/install/libdrake:libdrake.so构建Drake
问题
现在没法在ROS2控制项目里正常使用它。查了外部Drake示例,但没找到匹配场景的(CMake示例里的Drake也是用CMake构建的,不是Bazel)。在CMake的ROS项目里用Drake,必须用CMake构建Drake吗?
已尝试的方法
- 在ROS2包的
CMakeLists.txt里加了这些配置:set(drake_DIR /home/louis/drake/tools/install/libdrake)set(drake_DIR /home/louis/drake/bazel-drake/tools/install/libdrake)list(APPEND CMAKE_PREFIX_PATH /home/louis/drake/tools/install)list(APPEND CMAKE_PREFIX_PATH /home/louis/drake/tools/install/libdrake/)list(APPEND CMAKE_PREFIX_PATH /home/louis/drake)find_package(drake REQUIRED)target_link_libraries(my_ros2_package_name PUBLIC drake::drake)
- 手动把
drake/tools/install/libdrake里的drake-config.cmake.in后缀去掉,让colcon build能识别,确实成功识别了,但之后又出现lcm-config.cmake的类似错误。知道这不是正确方法,但还是说一下。BUILD.bazel里有drake_config_cmake_expand命令能把.cmake.in转成.cmake,但Bazel构建后没生成这个文件。
Bazel构建输出
INFO: Found 1 target... Target //tools/install/libdrake:libdrake.so up-to-date: bazel-bin/tools/install/libdrake/libdrake.so INFO: Elapsed time: 17295.341s, Critical Path: 156.09s INFO: 8175 processes: 4062 internal, 4113 processwrapper-sandbox. INFO: Build completed successfully, 8175 total actions
ROS2包执行colcon build时的错误信息
By not providing "Finddrake.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "drake", but CMake did not find one. Could not find a package configuration file provided by "drake" with any of the following names: drakeConfig.cmake drake-config.cmake Add the installation prefix of "drake" to CMAKE_PREFIX_PATH or set "drake_DIR" to a directory containing one of the above files. If "drake" provides a separate development package or SDK, be sure it has been installed.
参考资源
- Stack Overflow相关问题
- GitHub相关Issue
- 使用drake_DIR的ROS2示例项目
内容的提问来源于stack exchange,提问作者louis
相关产品推荐
相关产品推荐

