下载ros2源码:
git clone https://github.com/ros2/ros2.git -b humblecd ros2mkdir -p srcvcs import --recursive src < ros2.repos
编译:
colcon build --event-handlers console_cohesion+ --cmake-args -DBUILD_TESTING=ON --no-warn-unused-cli
单独编译某个模块:
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
ExternalProject_Add(ogre-v1.12.1#URL https://github.com/OGRECave/ogre/archive/v1.12.1.zip#URL_MD5 cdbea4006d223c173e0a93864111b936URL /home/ubuntu/ros2/build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-1.12.1.zipURL_MD5 cdbea4006d223c173e0a93864111b936TIMEOUT 1200LOG_CONFIGURE ${should_log}LOG_BUILD ${should_log}CMAKE_ARGS-DOGRE_STATIC:BOOL=OFF-DOGRE_DEPENDENCIES_DIR=${CMAKE_CURRENT_BINARY_DIR}/ogredeps-DOGRE_INSTALL_PDB:BOOL=OFF-DOGRE_BUILD_DEPENDENCIES:BOOL=OFF-DOGRE_BUILD_TESTS:BOOL=OFF-DOGRE_BUILD_SAMPLES:BOOL=FALSE-DOGRE_INSTALL_SAMPLES:BOOL=FALSE-DOGRE_INSTALL_SAMPLES_SOURCE:BOOL=FALSE-DOGRE_CONFIG_THREADS:STRING=0-DOGRE_RESOURCEMANAGER_STRICT:STRING=2-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/ogre_install-DOGRE_BUILD_LIBS_AS_FRAMEWORKS:BOOL=OFF-DOGRE_BUILD_COMPONENT_PYTHON:BOOL=FALSE-DOGRE_BUILD_COMPONENT_JAVA:BOOL=FALSE-DOGRE_BUILD_COMPONENT_CSHARP:BOOL=FALSE-DOGRE_BUILD_COMPONENT_BITES:BOOL=FALSE${extra_cmake_args}-Wno-devPATCH_COMMAND${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/pragma-patch.diff &&${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/fix-arm64.diff &&${Patch_EXECUTABLE} -p1 -N < ${CMAKE_CURRENT_SOURCE_DIR}/relocatable.patchCOMMAND${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)
测试:
打开一个终端,运行C++编写的talker:
ros2 run demo_nodes_cpp talker
打开另外一个终端,运行Python编写的listener:
ros2 run demo_nodes_py listener