ROS2 Dashing源码编译和安装
安装前的准备
1 |
官方教程: |
可选项:
- 安装系统备份和恢复工具timeshift,避免发生灾难性错误后无法恢复,使用方法:链接
- 修改DNS(有助于避免安装过程中频繁出现的网络超时,如果你可以科学上网更好),教程链接
- 修改apt源(提高其它工具的下载速度)教程链接
搭建编译环境
ROS2在规划之初就约定了各个依赖的版本,具体请到此链接查看:REP 2000
我们使用的环境为18.04,所以对应的各个依赖项的版本如下:
搭建步骤
1. 设置语言环境
1 |
sudo locale-gen en_US en_US.UTF-8 |
ROS编译及运行需要将语言编码设置为UTF-8,中文系统可以不需要设置(未测试)
2. 添加ROS 2 apt仓库
1 |
#首先使用如下所示的apt授权我们的GPG密钥: |
3. 安装开发工具和ROS工具
1 |
sudo apt update && sudo apt install -y \ |
4. 获取ROS 2代码
创建一个工作区并克隆所有存储库:
1 |
mkdir -p ~/ros2_dashing/src |
注:此步骤可能因为网络原因失败,多试几次
vcs是一个版本管理工具,你可以理解为它为git、svn等做了统一的封装
5. 使用rosdep安装依赖
1 |
sudo rosdep init |
注:在执行最后一步时可能会失败,rosdep的本质相当于一个安装脚本(多个 sudo apt install),所以失败后重新执行几次,直到提示所有安装操作都成功即可。
6. 在工作区中构建代码
1 |
cd ~/ros2_dashing/ |
这个指令是编译所有ROS packages,所以在执行过程中可能会出现错误,官方文档中给出的解决方案如下:
Note: if you are having trouble compiling all examples and this is preventing you from completing a successful build, you can use AMENT_IGNORE in the same manner as CATKIN_IGNORE to ignore the subtree or remove the folder from the workspace. Take for instance: you would like to avoid installing the large OpenCV library. Well then simply $ touch AMENT_IGNORE in the cam2image demo directory to leave it out of the build process.
翻译:
注意:如果在编译所有示例时遇到麻烦,并且这妨碍了您成功完成构建,则可以AMENT_IGNORE按照与CATKIN_IGNORE相同的方式使用,以忽略子树或从工作空间中删除文件夹。例如:您希望避免安装大型OpenCV库。那么,只需在demo目录中将其排除在构建过程之外即可。$ touch AMENT_IGNOREcam2image
我的解决方案:
重新单独构建失败的packages,指令如下:
colcon build --package-select [PKG_NAME]
有的失败的包可能并不需要,不必理会。
至此,所有编译安装完成。
环境设置
. ~/ros2_dashing/install/setup.bash
安装命令自动补全工具
sudo apt install python3-argcomplete
在一个终端中,获取安装文件的源代码,然后运行C ++ talker
:
. ~/ros2_dashing/install/local_setup.bash ros2 run demo_nodes_cpp talker
在另一个终端源中,安装文件,然后运行Python listener
:
. ~/ros2_dashing/install/local_setup.bash ros2 run demo_nodes_py listener
您应该看到talker
这是Publishing
消息的listener
说法以及这些消息的说法。这可以验证C ++和Python API是否正常工作。
备用编译器?
使用gcc以外的其他编译器来编译ROS 2很容易。如果分别为工作的C和C ++编译器设置环境变量CC
和CXX
可执行文件,并重新触发CMake配置(通过使用--force-cmake-config
或删除要受影响的软件包),则CMake将重新配置并使用其他编译器。
锵?
要将CMake配置为检测和使用Clang:
sudo apt install clang export CC=clang export CXX=clang++ colcon build --cmake-force-configure
待办事项:使用ThreadSanitizer,MemorySanitizer
保持最新?
请参阅维护ROS 2的源签出以定期刷新源安装。
故障排除?
故障排除技术可以在这里找到。
卸载?
如果您按照上面的指示使用colcon安装了工作区,则“卸载”可能只是打开一个新终端而不是获取工作区
setup
文件的问题。这样,您的环境将表现为系统上没有安装Dashing。如果您还试图释放空间,则可以使用以下方法删除整个工作区目录:
rm -rf ~/ros2_dashing