ROS系统的本地搭建(下)

电子说

1.2w人已加入

描述

  • 安装必要小工具

可以使用以下命令来安装一些工具以方便我们后续构建项目。

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

3

测试小乌龟项目

小乌龟项目是内置在ROS系统中的用于测试的项目,此项目中同时用到了发布者-订阅者消息模式和客户端-服务端消息模式。

  • 启动Master Server

首先,若还记得之前在”物联网协议——MQTT与ROS”一文中提到的消息代理的概念,对于ROS系统,不论是使用了哪种消息模式都需要启动一个消息代理用于将消息分发到合适的消息接收端。

那么,我们需要使用roscore启动一个主服务器以充当master server。

服务器

这里我们做以下几点补充说明:

  1. roscore会默认将计算机名作为主服务器的host,此时,ROS系统仅能用于本地测试。
  2. 可以使用环境变量来控制roscore的启动行为,其中,最重要的三个环境变量是:

ROS_ROOT:此环境变量必须指向ROS环境的安装位置,当系统中安装了多个版本的ROS软件包时,需要使用此环境变量进行手动指定。(默认值:/opt/ros/melodic/share/ros)

ROS_MASTER_URI:此环境变量必须指向ROS主服务器的完整地址,当我们想把主服务器暴露在网络中时,需要使用此环境变量进行手动指定。(默认值:(空),建议值:http://0.0.0.0:11311)

PYTHONPATH:此环境变量必须指向ROS系统所使用的Python环境位置,由于ROS系统底层的部分模块需要依赖Python,因此尽管我们可以使用其他语言构建项目,但是为了保证运行无误必须配置Python环境,ROS系统安装时已经默认一并安装了Python,当我们需要更换时需要手动指定。(默认值:/opt/ros/melodic/lib/python2.7/dist-packages)

如果不使用&标志符限定,默认此服务将会在前台运行,在进行接下来的测试时请务必不要关闭一开始的窗口。

  • 启动node观察器

现在我们可以使用rosnode这个小工具来查看目前的ROS系统中存在哪些节点

服务器

这个节点就是由消息代理启动的一个用于管理消息发送接收的节点,正如之前说过的,ROS系统与MQTT不同,他是一个高度集成的系统,同时支持两种消息模式。那么,/rosout事实上就拥有了三种属性:

订阅者:/rosout可以作为订阅者,订阅若干其他节点,用于具有多播特性的Pub-Sub mode。

发布者:/rosout可以作为发布者,向其他若干节点发布消息,用于具有多播特性的Pub-Sub mode。

服务者:/rosout可以作为服务端,提供若干服务以供其他节点发起调用,用于具有单播特性的CS mode。

服务器

我们可以使用rosnode info命令去看到其所有的订阅者、发布目标以及服务列表,此外,还能看到此节点的位置以及PID。

⚠️:在ROS系统中,为了最高效的利用资源,当我们启动一个新节点时,默认策略会使得主服务器随机选择一个可用端口进行节点绑定,当有其他节点想要链接此节点时只需要向消息代理询问即可,这个策略尽管实现了空间解耦,但是阻碍了我们利用ROS系统进行CTF竞赛的命题,因为无法动态的进行docker的端口映射,如果有读者可以解决此问题,请在本文评论区发布评论,笔者在此感激不尽。

  • 启动小乌龟节点【需要桌面环境】

接下来我们使用rosrun turtlesim turtlesim_node命令启动小乌龟节点

服务器

此时或许可以发现,每次启动小乌龟节点时,小乌龟的皮肤都不相同,我们重新使用rosnode命令观察节点

服务器

服务器

我们可以发现以下几点:

  • 小乌龟节点/turtlesim已经对/rosout这个节点产生了订阅关系。
  • /turtlesim同样提供了若干话题以及若干服务。

那么,如果我们不想用/turtlesim这个节点名,ROS系统事实上提供了自定义节点名称的参数。

首先关闭小乌龟节点启动的节点或者在小乌龟节点的终端使用Ctrl + C来终止,之后使用命令rosrun turtlesim turtlesim_node __name:=myturtle1启动,启动后再次查看node信息:

服务器

服务器

可以发现,这个节点的名字已经改变了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分