跳转至

ROS:智能机器人的灵魂

ROS 2系统安装

1.4 ROS 2安装方法

Ubuntu 操作系统准备好之后,就可以安装ROS 2,安装过程需要使用Ubuntu操作系统中的命令行工具——Terminal,也称终端,大家可以直接在系统中使用快捷键"Ctrl+Alt+T"打开。

启动后,可依次输入以下命令安装ROS 2,本书选择的ROS 2版本为Jazzy,对应Ubuntu 24.04 LTS。

提示:以下是ROS官方给出的详细安装步骤,如果大家是第一次使用或者希望通过更简单的方式安装,那么可以使用本书配套代码中的快捷安装脚本ros_install.sh。在脚本所在的路径下,通过终端输入./ros_install.sh指令,跟随提示即可完成安装。或者可以使用wget oss.guyuehome.com/upload/2024/11/111120478121/install.txt -O install_ros && . install_ros指令也可以完成安装。

1. 设置编码格式

确保系统使用正确的本地化设置和语言环境,以便在安装和运行软件时能够正确地显示语言并进行本地化支持。

启动一个终端,输入如下命令:

$ 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 

2. 添加软件源

安装ROS 2之前还需要告诉系统从哪里下载ROS 2的安装包,这些安装包所放置的服务器被称为软件源。从软件源中下载安装包还需要配置好密钥,这样才能打开下载的"大门"。

在打开的终端中继续输入如下命令,将ROS 2的签名密钥签署到系统密钥环中,并添加软件源的地址信息,系统才可以通过APT管理器安装ROS 2软件包。

$ sudo apt install software-properties-common 
$ sudo add-apt-repository universe 
$ sudo apt update && sudo apt install curl -y
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) 
signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] [ROS 软件源基地址] $(. /etc/os-release && 
echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null 

3. 安装ROS 2

准备工作已完成,接下来在终端中输入如下命令,开始下载并安装ROS 2的桌面版软件。

$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install ros-jazzy-desktop      

4. 设置环境变量

现在,ROS 2 已经成功安装到计算机中了,默认在/opt路径下。由于后续会频繁使用终端 输入ROS 2命令,所以在使用前还需要设置系统环境变量,让系统知道ROS 2的各种功能在哪 里,设置的命令如下。

$ source /opt/ros/jazzy/setup.bash 
$ echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc 

5. 测试示例

安装完成,可以通过以下示例测试ROS 2是否安装成功。 启动第一个终端,通过以下命令启动一个数据的发布者节点。

$ ros2 run demo_nodes_cpp talker

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

$ ros2 run demo_nodes_py listener 

如果“Hello World”字符串在两个终端中正常传输,则说明ROS 2的通信系统没有问题。 至此,ROS 2已经在系统中安装好了。

ROS 2命令行操作

对应1.5.3 ROS 2中的命令行

运行节点程序

想要运行ROS 2中某个节点,可以使用ros2 run命令进行操作,之后第一个参数表示功能包的名称,第二个参数表示功能包内节点的名称,对于运行海龟仿真节点和键盘控制节点的命令:

$ ros2 run turtlesim turtlesim_node 
$ ros2 run turtlesim turtle_teleop_key 

查看运行节点

$ ros2 node list 

查看话题信息

$ ros2 topic list

发布话题信息

$ ros2 topic pub --rate 1 /turtle1/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}}" 

发布服务请求

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

发送动作目标

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

数据录制与播放

#数据录制 
$ ros2 bag record /turtle1/cmd_vel 
#数据播放 (注意路径和文件名)
$ ros2 bag play rosbag2_2024_07_06-21_21_23/ rosbag2_2024_07_06-21_21_23_0.mcap 

图片1