ROS系统的本地搭建(下)

安装必要小工具可以使用以下命令来安装一些工具以方便我们后续构建项目。
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential0× 3
测试小乌龟项目
小乌龟项目是内置在ros系统中的用于测试的项目,此项目中同时用到了发布者-订阅者消息模式和客户端-服务端消息模式。
启动master server首先,若还记得之前在”物联网协议——mqtt与ros”一文中提到的消息代理的概念,对于ros系统,不论是使用了哪种消息模式都需要启动一个消息代理用于将消息分发到合适的消息接收端。
那么,我们需要使用roscore启动一个主服务器以充当master server。
这里我们做以下几点补充说明:
roscore会默认将计算机名作为主服务器的host,此时,ros系统仅能用于本地测试。可以使用环境变量来控制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信息:
可以发现,这个节点的名字已经改变了。

Silicon推出最快速度光纤传输芯片组SL82018和SL82028
什么是硬盘转速?
土壤碳通量自动测量系统在农业生产中的应用
一文介绍天线的原理
微软正在自主开发台式机和服务器处理器
ROS系统的本地搭建(下)
本田第二款全电动车型将在欧洲推出
无人机实行实名登记 目前我国注册无人机已超39.2万架
压力感应电子皮肤可恢复触觉
数据狗数据恢复软件怎么使用深度恢复功能
2009年诺基亚推出的11款新手机(二)
变电站选址考虑因素和需满足哪些条件
全球56家区块链初创公司成功达成了纽约共识
变容二极管调频电路原理图
警察无人机在新罕布什尔州镇部署 可以从空中200英尺处拍摄红外照片
腾讯开始在云服务发力,誓要赶超阿里巴巴
马斯克接手后,Twitter开源工作停摆
Sony成为无人机新玩家后 能否逼出更好的大疆
摩托罗拉新款上市Moto Mod后盖5种时尚设计
Token已经成为了加密货币生态系统的重要组成部分