移动机器人ros架构分析
1.1小海龟仿真
ros的核心概念不少,有节点、话题、消息、服务等,在实际机器人运行过程中,这些概念是如何体现的呢?
我们先来运行ros系统一个经典的例程——小海龟。
请大家按照以下步骤进行操作。
1.首先,打开终端;
2.输入以下命令行,启动ros master:
$ roscore
3.启动成功后,打开一个新终端,输入以下命令行,启动小海龟仿真器,启动成功后,就会出现如图1-1所示的小海龟仿真器界面:
$ rosrun turtlesim turtlesim_node
4.再打开一个新的终端,输入以下命令行,启动海龟控制节点,大家可以通过键盘上上下左右键来控制小海龟运动:
$ rosrun turtlesim turtle_teleop_key
注意:在控制海龟运动的过程中一定要保证turtle_teleop_key节点终端在界面最前端的,如果其他终端在最前面就没有办法被终端读取到数据的。
小海龟功能是跑起来了,那这个例程是如何基于ros的核心概念实现的呢?
接下来我们就分析一下例程背后的节点关系。
图1-1 小海龟仿真器界面
图1-2 启动海龟仿真器节点
图1-3 启动海龟控制节点
这里我们将用到ros中一个重要的可视化调试工具——rosgraph,用来显示ros运行中计算图,我们可以从上帝视角看到所有节点的运行关系。
图1-4 使用rqt_graph可视化工具查看系统中运行的计算图
接着上一个小海龟的例程,我们再来打开一个终端,输入以下命令行,启动rosgraph:
$ rqt_graph
启动完成后,即可看到如图1-4所示的计算图,这个界面会自动的监控当前运行的整个ros系统,并且把里面的节点和节点间的关系动态的显示出来,其中椭圆表示节点,中间的箭头表示节点间的关系,箭头上的内容表示话题。
在这个例程中,我们分别启动了两个节点,一个是海龟仿真器,我们可以把它当成是一个虚拟的机器人,另外一个是键盘控制,用来控制机器人前后左右运动,两个节点在节点管理器的帮助下建立了数据通信,完成速度控制指令的传输。
1.2移动机器人运动控制
通过这个例程,我们需要理解节点在ros中用来实现某些具体的功能,比如机器人的驱动、运动指令的发送等,节点之间可以通过话题将数据发送或接收。
小海龟毕竟是一个仿真的机器人,在实物机器人中是不是也类似呢,我们再来试一试。
接下来,我们来使用以下两句命令行启动limo机器人,并启动键盘控制节点,类似控制小海龟前后左右运动一样,我们也可以控制机器人运动。
$ roslaunch limo_base limo_base.launch$ roslaunch limo_bringup limo_teletop_keyboard.launch
再打开rosgraph工具看一下节点关系,我们可以直观的发现,此时系统中运行了三个节点,如图1-5所示。
图1-5 使用rqt_graph可视化工具查看节点关系
第一个是和控制海龟运动相同的键盘控制节点teleop_keybord,用来读取键盘的输入键值,并封装成cmd_vel这个速度话题发布出去。
第二个节点是类似小海龟仿真器一样,用来驱动limo机器人的底盘控制节点limo_base_node,它会订阅速度指令,当收到数据后,就会驱动机器人发生运动了。
从这张图中,我们可以清晰的看到这两个节点和他们之间的关系,更多节点也是类似,如果未来使用过程中某一环的数据没收到,我们就可以快速定位原因了。
teleop_keybord:读取键盘动作,发布速度控制指令
limo_base_node:机器人底盘控制节点,包含pid算法控制电机运动、订阅/cmd_vel话题
以上案例实现的功能相对简单,在一个实现众多应用功能的复杂机器人系统中,节点和话题的数量都会很多,类似如图1-6所示这样,除了底层嵌入式运动控制器中需要实现的功能外,ros环境下会通过一系列节点分别完成雷达、相机这些传感器的驱动,发布数据话题后,上层的导航、建图、图像处理节点来订阅并进行相应的算法处理,再传输到监控的计算机,给可视化节点做显示。每个节点各司其职,在ros master这个节点管理器的统一协调下,有条不紊的完成各项任务。
整个ros运行中的节点就像一个企业中不同部门的员工,每个人都有自己明确的工作,大家共同在ceo的组织下积少成多,合作完成一项非常复杂的任务。当然,每个人都不能掉队,一旦掉队就可能会影响最终任务的完成。
图1-6 移动机器人运行结构分析
螺栓经常松动严重影响生产?
为什么变频器的输出端不可以接接触器
Crypto.com将来是否有可能取代大型的支付网络
IBM推出8核Power7处理器 系统性能翻倍
车路协同与智慧灯杆有什么关系
移动机器人的运行架构
韩国正推动量子计算工业级应用发展
三菱电机入局氧化镓,加速氧化镓功率器件走向商用
特斯拉实现日产1000辆Model3的目标 生产速度稳定后将以降低成本为目标
电子式节能灯的装配
医疗用触控终端设计揭秘
为什么电动机的控制电路应有欠电压保护?
价格亲民,读写不虚标,aigo固态硬盘P3000还有5年质保
RFID托盘智能管理有什么优势
基于Actel反熔丝FPGA的高速DDR接口设计
展锐V8811安全平台在中国电信体系正式商用
水下辐射剖面光谱仪的应用及特性
电缆护层保护器材质上采用有什么讲究
DP1332E NFC刷卡芯片内置mcu,国产替代方案
闪迪发布新款microSD存储卡 质保服务达15年之久