ROS环境安装与配置

本文详细介绍了如何在Ubuntu22.04上安装ROS2,包括设置编码、添加镜像源和安装过程。安装完成后,通过通信测试验证DDS的正常工作,并展示了小海龟仿真的操作,包括键盘控制和命令行发布数据,使读者初步掌握ROS2的基本使用。
摘要由CSDN通过智能技术生成

一、Ubuntu22.04安装ROS2

1.ROS 简介

官方文档对 ROS 的介绍如下:

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it’s all open source.

简单来说 ROS 就是一款开源的机器人操作系统,可以实现在 Linux 或 Dock 下安装并进行使用。这里我们选择在 Ubuntu 22.04LTS 下进行安装。

2.版本选择

ROS 目前主要支持 Linux 和 MacOS 系统,新发布的 ROS2 也支持 Windows 和 RTOS 系统。

对 ROS 兼容性最好的当属 Ubuntu 系统。从 ROS 发布以来,每版的 Ubuntu 系统版本都有与之对应 ROS 版本的,每一版 ROS 都有其对应版本的 Ubuntu 版本,切记不可随便装。

3.安装过程
设置编码

安装代码如下:

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

只有我们设置为 UTF-8 的英文编码才能正常安装运行于显示

添加镜像源
## 通过检查此命令的输出,确保已启用Ubuntu Universe存储库。
apt-cache policy | grep universe

执行如下命令:

## 继续执行如下命令:
sudo apt update && sudo apt install curl gnupg lsb-release
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] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
安装 ROS2
sudo apt update
sudo apt upgrade
## 推荐桌面版,比较推荐。
sudo apt install ros-humble-desktop
## 安装时间可能较长,安心等待。

在我们安装好之后,需要设置以下环境变量:

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

到此,我们已经完整安装了 ROS2 ,我们就可以直接使用了

二、ROS基本命令

1.通信测试

首先我们来测试以下 ROS2 最为重要的底层通信系统 DDS 是否正常,我们启动一个终端并通过命令新建一个数据的发布者节点:

ros2 run demo_nodes_cpp talker

在这里插入图片描述

接下来,在这个终端不关闭进程的情况下,打开第二个终端,通过以下命令启动一个数据的订阅者节点:

ros2 run demo_nodes_py listener

在这里插入图片描述
可以看出来,我们的 Hello World 字符串在两个终端中正常传输,说明通信系统没有问题

2.小海龟仿真测试

打开两个终端,分别使用如下命令:

# 终端一
ros2 run turtlesim turtlesim_node
# 终端二
ros2 run turtlesim turtle_teleop_key

第一句指令将启动一个蓝色背景的海龟仿真器,第二句指令将启动一个键盘控制节点,在该终端中点击键盘上的“上下左右”按键,就可以控制小海龟运动了
在这里插入图片描述
在这里插入图片描述

3.小海龟简单控制
命令实现

打开rqt_graph
在这里插入图片描述
ros2 topic list

通过运行:ros2 topic list查看主题列表,通过运行:ros2 topic list -t查看带有主题类型信息的主题列表,如图所示
在这里插入图片描述
ros2 topic pub(ros2 主题发布<pub = publish>)

之前获取了信息的结构,就可以使用下述命令通过命令行将数据发布到主题(即不使用/teleop_turtle节点发布信息,而使用命令行直接输入信息):

ros2 topic pub <topic_name> <msg_type> ‘’

其中‘是‘arguments参数’是你传递给主题(topic)的真实数据,采用在interface show中看到的数据结构,需要注意的是,此参数需要以 YAML 语法输入。 像这样输入完整的命令:
ros2 topic pub -r 10 /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}}”
注意:在linear:后、angular:后、x:,y:,z:后面都要有空格。
将在终端中收到以下消息:
在这里插入图片描述
这样便实现了小海龟做画圆的运动。

代码实现

首先我们来到主目录下,新建一个名为 ros_catkin_ws 的文件夹,然后在目录下创建一个 src 文件夹,并将其初始化为工作空间:

mkdir ros_catkin_ws
cd ros_catkin_ws
mkdir src
cd src

在这里插入图片描述

进入我们的功能包下的 src 目录下,然后创建一个 velocity_publisher.cpp 文件作为我们的代码源文件,内容如下:

/*
 该例程将发布 turtle1/cmd_vel 话题,消息类型 geometry msgs::Twist
*/
 
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
 
int main(int argc, char **argv){
 
    // ROS 节点初始化
    ros::init(argc, argv, "velocity_pulisher");
 
    // 创建节点句柄
    ros::NodeHandle n;
 
    // 创建一个 Publisher,发布名为 /turtle1/cmd_vel 的 topic,消息类型为 geometry_msgs::Twist,队列长度 10
    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
 
    // 设置循环频率
    ros::Rate loop_rate(10);
 
    int count = 0;
    while(ros::ok())
    {
        // 初始化 geometry_msgs::Twist 类型的消息
        geometry_msgs::Twist vel_msg;
        vel_msg.linear.x = 0.5;
        vel_msg.angular.z = 0.2;
 
        // 发布消息
        turtle_vel_pub.publish(vel_msg);
        ROS_INFO("Publish turtle velocity command[%0.2f m/s, %0.2f rad/s]",
                 vel_msg.linear.x, vel_msg.angular.z);
 
        // 按照循环频率延时
        loop_rate.sleep();
    }
 
    return 0;
}

回到最初的 catkin_ws 路径下进行编译
在这里插入图片描述

三、小结

本次实验进行了在虚拟机的Ubuntu22.04系统下安装ROS2,因为Ubuntu版本的缘故,没有安装ros1,并且实现了一些基本命令,对“小海龟”有了一些了解,但是还只是停留在较浅的层次。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值