【Ubuntu20.04】ROS的安装与配置,话题通信、服务通信的编程实践验证

一、ROS的安装

1. 1设置软件源

设置软件源为国内的服务器,建议我这里使用的是阿里云服务器。
设置过程如下图所示:打开系统设置,拉倒最低端,点击关于菜单,点击软件更新,选择下载服务器,选择aliyun。
确认后,提示“重新载入”。点击“重新载入”按钮,等待更新完成。
在这里插入图片描述

1.2安装ROS noetic

1.2.1添加 sources.list

设置系统从 packages.ros.org 接收软件,命令如下:
sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’
在这里插入图片描述

按提示输入密码回车即可,注意,密码不会显示,不要按Backspace键,如果输入错误,回车重新输入即可。
在这里插入图片描述

1.2.2设置keys

命令如下:sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
在这里插入图片描述

设置成功后,输出显示:
在这里插入图片描述

gpg: 合计被处理的数量:1
gpg: 已导入:1

1.2.3更新系统软件源

输入命令:sudo apt update
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2.4安装noetic

输入命令安装noetic桌面完整版:
sudo apt install ros-noetic-desktop-full
软件包比较大,可能要等一段时间。
在这里插入图片描述

耐心等待即可
在这里插入图片描述

如果出现软件包无法下载,可返回第1步切换软件源,或者切换网络连接试试。

1.2.5设置环境变量

输入以下命令,设置环境变量。
echo “source /opt/ros/noetic/setup.bash” >> ~/.bashrc
source ~/.bashrc
在这里插入图片描述

二、 测试ROS与运行小海龟

运行roscore
输入命令,运行ros,可显示ros的相关信息:
输入roscore
在这里插入图片描述

输出信息部分如下:
…logging to /home/ddduan/.ros/log/73c1f360-6103-11ed-8ddf-996439fcd44d/roslaunch-DDDuan-Lenovo-PC-5841.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://DDDuan-Lenovo-PC:44705/
ros_comm version 1.15.14
这是程序自检,检查日志目录的磁盘使用情况,然后进行总结,比如这里,给出了参数,进程等信息,表示无错。

新打开一个终端窗口,输入命令,运行小海龟示例程序。
rosrun turtlesim turtlesim_node
可以看到小海龟窗口显示出来。
在这里插入图片描述

再打开一个终端窗口,输入命令,控制小海龟移动。
rosrun turtlesim turtle_teleop_key
在这里插入图片描述

保持这个终端窗口激活,按下键盘的方向键,就可以移动小海龟了。
在这里插入图片描述

在这里插入图片描述
运行小海龟,保持键盘的焦点在rosrun turtlesim turtle_teleop_key的终端页面内,通 过↑、↓、←、→来控制小乌龟的移动,而且可以看到,在小海龟“撞墙”的时候,我们的rosrun turtlesim turtlesim_node终端页面会有提示数据的输出。

三、ros系统常见用法介绍

启动ros内核

roscore

查看topic列表

rostopic list

显示某个topic

rostopic echo /camera_raw

显示某个topic的header

rostopic echo /camera_raw/header

将compressed格式转为raw格式

rosrun image_transport republish compressed in:=/Mate/camera/ raw out:=/Mate/camera_raw/

限制topic频率

rosrun topic_tools throttle messages /Mate/camera_raw 4.0 /left

录制rosbag包

rosbag record -O bagpath.bag /camera_raw /imu

播放与加速播放rosbag

rosbag play -r 100 bagpath.bag
rosbag play bagpath.bag

启动rviz

rviz

四、ROS通信

ROS的核心——分布式通信机制
ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件功能和工具都建立在这种分布式通信机制上,所以ROS的通信机制是最底层也是最核心的技术。在大多数应用场景下,尽管我们不需要关注底层通信的实现机制,但是了解其相关原理一定会帮助我们在开发过程中更好地使用ROS。ROS最核心的三种通信机制如下。

  • Topic机制
  • service机制
  • 共享参数机制

4.1话题通信

话题通信,一般就是指:一个节点发布消息,另一个节点订阅该消息。适用于不断更新的、少逻辑处理的数据传输场景。

1.话题通信的三个角色

话题通信涉及到三个角色。

Talker(发布者)

负责像订阅者发布数据。

Listener(订阅者)

负责接收发布者的数据。

ROS Master(管理者)

负责保管发布者和订阅者注册的信息,并匹配话题相同的发布者与订阅者,帮助发布者与订阅者建立连接。

2.话题通信建立的流程

下图就是话题通信建立的示意图,摘抄自课程笔记。
在这里插入图片描述
step0
发布者在管理者处注册,其中包含所发布消息的话题名称。管理者会将节点的注册信息加入到注册表中。

step1
订阅者在管理者处注册,包含需要订阅消息的话题名称。管理者会将节点的注册信息加入到注册表中。

step2
管理者根据注册表中的发布者、订阅者的话题名称进行匹配,并将发布者的地址信息告诉订阅者。

step3
订阅者向发布者发送连接请求,传输订阅的话题名称、消息类型以及通信协议(TCP/UDP)。

step4
发布者响应订阅者的请求,并发送自身的 TCP 地址信息。

step5
订阅者根据步骤4

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值