源码构建ROS2
发布时间:2025-11-03 16:21:12.415 文章来源:AiSoftCloud 浏览次数:69 下载次数:1 

ROS2 Humble

下载ros2源码:

  1. git clone https://github.com/ros2/ros2.git -b humble
  2. cd ros2
  3. mkdir -p src
  4. vcs import --recursive src < ros2.repos

编译:

  1. colcon build --event-handlers console_cohesion+ --cmake-args -DBUILD_TESTING=ON --no-warn-unused-cli

单独编译某个模块:

  1. colcon build --event-handlers console_cohesion+ --packages-select rviz_ogre_vendor

编译过程中遇到一些依赖库下载慢导致编译时间很长或失败,可以手动下载依赖库,参考下面的参考文章,修改对应的CMakeLists.txt,如rviz_ogre_vendor这个依赖库:
修改src/ros2/rviz/rviz_ogre_vendor/CMakeLists.txt
修改对应的URL和URL_MD5

  1. ExternalProject_Add(ogre-v1.12.1
  2. #URL https://github.com/OGRECave/ogre/archive/v1.12.1.zip
  3. #URL_MD5 cdbea4006d223c173e0a93864111b936
  4. URL /home/ubuntu/ros2/build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-1.12.1.zip
  5. URL_MD5 cdbea4006d223c173e0a93864111b936
  6. TIMEOUT 1200
  7. LOG_CONFIGURE ${should_log}
  8. LOG_BUILD ${should_log}
  9. CMAKE_ARGS
  10. -DOGRE_STATIC:BOOL=OFF
  11. -DOGRE_DEPENDENCIES_DIR=${CMAKE_CURRENT_BINARY_DIR}/ogredeps
  12. -DOGRE_INSTALL_PDB:BOOL=OFF
  13. -DOGRE_BUILD_DEPENDENCIES:BOOL=OFF
  14. -DOGRE_BUILD_TESTS:BOOL=OFF
  15. -DOGRE_BUILD_SAMPLES:BOOL=FALSE
  16. -DOGRE_INSTALL_SAMPLES:BOOL=FALSE
  17. -DOGRE_INSTALL_SAMPLES_SOURCE:BOOL=FALSE
  18. -DOGRE_CONFIG_THREADS:STRING=0
  19. -DOGRE_RESOURCEMANAGER_STRICT:STRING=2
  20. -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON
  21. -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/ogre_install
  22. -DOGRE_BUILD_LIBS_AS_FRAMEWORKS:BOOL=OFF
  23. -DOGRE_BUILD_COMPONENT_PYTHON:BOOL=FALSE
  24. -DOGRE_BUILD_COMPONENT_JAVA:BOOL=FALSE
  25. -DOGRE_BUILD_COMPONENT_CSHARP:BOOL=FALSE
  26. -DOGRE_BUILD_COMPONENT_BITES:BOOL=FALSE
  27. ${extra_cmake_args}
  28. -Wno-dev
  29. PATCH_COMMAND
  30. ${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/pragma-patch.diff &&
  31. ${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/fix-arm64.diff &&
  32. ${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/relocatable.patch
  33. COMMAND
  34. ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/FindFreetype.cmake ${CMAKE_CURRENT_BINARY_DIR}/ogre-v1.12.1-prefix/src/ogre-v1.12.1/CMake/Packages/FindFreetype.cmake
  35. )

测试:
打开一个终端,运行C++编写的talker:

  1. ros2 run demo_nodes_cpp talker

打开另外一个终端,运行Python编写的listener:

  1. ros2 run demo_nodes_py listener

参考文章

Ubuntu 20.04下源码编译安装ROS 2 Foxy Fitzroy

更多文章可关注公众号
aisoftcloud