根据官方Distributions说明,Dashing Diademata为Ubuntu 18.04上支持最长的版本,下一个长期版本目标系统为 Ubuntu 20.04,因此作为学习的话,建议安装该版本,同时经过简单测试,当前ROS2对一般开发者并不算太友好,很多功能包也没有,不建议作为主力开发使用。
ROS2架构说明可参考ROS2探索总结(六)——迎接ROS2.0时代的到来
一、安装
1. 设置本地环境
sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8
2. 设置软件源
sudo apt update && sudo apt install curl gnupg2 lsb-release curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
3. 安装
sudo apt update
- 完整版
sudo apt install ros-dashing-desktop
- 基础版,无GUI工具
sudo apt install ros-dashing-ros-base
4. 安装argcomplete(可选)
用于ROS2的命令行工具(ROS 2命令行工具使用argcomplete自动完成。因此,如果您想要自动完成,安装argcomplete是必要的。)
sudo apt install python3-argcomplete
5. 配置环境
若多版本共存,或以ros1为主力开发,不要写入到.bashrc,使用ros2前在终端手动输入加载ros2环境
source /opt/ros/dashing/setup.bash
单版本使用,或以ros2为主力开发
echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
6. 安装RMW implementation
RMW implementation为中间件,默认使用FastRTPS
sudo apt update sudo apt install ros-dashing-rmw-opensplice-cpp # for OpenSplice sudo apt install ros-dashing-rmw-connext-cpp # for RTI Connext (requires license agreement)
切换中间件
RMW_IMPLEMENTATION=rmw_opensplice_cpp: OpenSplice
RMW_IMPLEMENTATION=rmw_connext_cpp: RTI Connext(Bouncy新增)
7. 安装ros1_bridge
ros1_bridge用于ros1和ros2通讯,使ros2可以使用ros1的功能包。
sudo apt update sudo apt install ros-dashing-ros1-bridge
8. ROS2测试
ros2 run demo_nodes_cpp talker ros2 run demo_nodes_cpp listener
二、使用
1.安装colcon
在Bouncy版本后,ROS2采用colcon替代 ament_tools 用于程序编译。 sudo apt install python3-colcon-common-extensions
2.创建工作空间
mkdir -p ~/ros2_ws/src cd ~/ros2_ws
当前目录结构(编译后会自动生成其余目录)
. └── src 1 directory, 0 files
3. 创建功能包
这里直接clone例程。
git clone https://github.com/ros2/examples src/examples
切换版本到Bouncy
cd ~/ros2_ws/src/examples/ git checkout $ROS_DISTRO cd ~/ros2_ws
当前目录结构
. └── src └── examples ├── CONTRIBUTING.md ├── LICENSE ├── rclcpp ├── rclpy └── README.md 4 directories, 3 files
手动创建功能包
usage: ros2 pkg create [-h] [--package_format {2,3}] [--description DESCRIPTION] [--license LICENSE] [--destination-directory DESTINATION_DIRECTORY] [--build-type {cmake,ament_cmake}] [--dependencies DEPENDENCIES [DEPENDENCIES ...]] [--maintainer-email MAINTAINER_EMAIL] [--maintainer-name MAINTAINER_NAME] [--cpp-node-name CPP_NODE_NAME] [--cpp-library-name CPP_LIBRARY_NAME] package_name
4. 编译
colcon build --symlink-install
完整目录结构
. ├── build ├── install ├── log └── src 4 directories, 0 files
- src,程序目录
- build,编译的缓存信息和中间文件
- install,编译输出文件目录
- log,colcon调用的各种日志信息
当前目录结构(编译后会自动生成其余目录)
然后回到工作空间下使用“colcon build”编译:
编译完成的功能包都会放置在install文件夹下,可以看下有没有顺利生成可执行文件。
5. 加载环境
编译完成后,在install目录下会生成配置文件setup.bash,运行该文件可以加载运行所需相关环境,确保在运行节点前在终端运行该文件。
source install/setup.bash
6. 测试
启动订阅节点
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
启动发布节点
ros2 run examples_rclcpp_minimal_publisher publisher_member_function