ROS实战(九)安装ROS2

摘要:转眼间三年已经过去,而我也开始面临毕业的问题。由于导师放养式的教学,导致我的论文一直没什么长进。抱怨没有用,一切靠自己。还是得把之前丢下的捡起来。

本文主要介绍如何在Linux平台上安装ROS2。

关键词:ROS2

ROS2安装

ROS2的安装受ubuntu发行版的限制,比如ubuntu 20.04 LTS只能安装foxy这个发行版;

ubuntu 22.04 LTS只能按照ROS2长期支持版humble这个发行版。

本文以ubuntu 20.04 LTS安装foxy发行版为例。

设置编码

1
2
3
4
sudo apt update && sudo apt install locales
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

安装必要软件

1
2
sudo apt update && sudo apt install curl gnupg lsb-release software-properties-common
sudo add-apt-repository universe

设置源

此处注意,需要确认你的网络可以连接raw.githubusercontent.com,这里先下载完key然后上传到服务器

1
2
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key
sudo mv ros.key /usr/share/keyrings/ros-archive-keyring.gpg

这里使用清华源

1
2
3
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update

安装ROS2

1
2
3
sudo apt update
sudo apt upgrade
sudo apt install ros-foxy-desktop python3-argcomplete -y

注意,如果是嵌入式设备,使用

1
sudo apt install ros-foxy-ros-base python3-argcomplete -y 

如果需要安装编译的环境

1
sudo apt install ros-dev-tools -y

设置环境变量

1
2
source /opt/ros/foxy/setup.bash
echo " source /opt/ros/foxy/setup.bash" >> ~/.bashrc

ROS2测试

命令行

启动一个终端,允许一个数据的发布者节点:

1
ros2 run demo_nodes_cpp talker

启动第二个终端,通过以下命令启动一个数据的订阅者节点:

1
ros2 run demo_nodes_py listener

GUI

运行一个ROS的经典实例——小海龟仿真器

启动两个终端,分别执行如下指令:

1
2
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

第一句指令将启动一个蓝色背景的海龟仿真器,第二局指令将启动一个键盘控制节点,在该终端中点击键盘上的上下左右按键,就可以控制小海龟移动了。

常见的命令行操作

ROS2的命令行的操作机制与Linux相同,不过所有的操作都集中在ros2的总命令中,后面第一个参数表示不同的操作目的,比如node表示对节点的操作,topic表示对话题的操作,后面还可以继续跟参数表示具体操作。

接下来以小乌龟仿真为例,感受下ROS2命令行的主要功能,也对ROS2中的核心概念有一个大体了解。

运行节点程序

想要运行ROS2中的某个节点,可以使用ros2 run命令进行操作。

例如我们要运行海龟仿真节点:

1
ros2 run turtlesim turtlesim_node

我们要运行键盘控制节点:

1
ros2 run turtlesim turtle_teleop_key

查看节点信息

1
ros2 node list

1
ros2 node info /turtlesim

查看话题信息

使用以下命令即可查看:

1
ros2 topic list

查看指定话题的消息数据

1
ros2 topic echo /turtle1/pose

发布话题消息

想让海龟直接动起来,可以直接通过命令行发布话题指令:

1
ros2 topic pub --rate 1 /turtule1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

发送服务请求

一只小海龟太孤单,仿真器还提供了另外一个服务,产生海龟,我们试一试服务调用,再来一只小海龟,图片也如上图所示

1
ros2 service call /spawn turtlesim/srv/Spwan "{x: 2, y: 2, theta: 0.2, name:''}""

发送动作目标

想让海龟完成一个具体动作,比如转到指定角度,仿真器提供的action可以实现:

1
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: 3"

再继续发布上述话题的基础上,会发现小乌龟在转变了角度以后继续转圈:

录制控制命令

系统中运行的数据有很多,如果想要把某段数据录制下来,然后再复现这段数据。

ros2中的rosbag命令可以实现上面的需求:

1
2
ros2 bag record /turtle1/cmd_vel
ros2 bag play rosbag2_2022_04_11-17_35_40/rosbag2_2022_04_11-17_35_40_0.db3

以上就是ROS2中的常见命令。