文档章节

[译]机器人操作系统简介:终极机器人应用框架(下)

暗夜在火星
 暗夜在火星
发布于 2016/03/06 00:14
字数 1611
阅读 256
收藏 4

上一篇:[译]机器人操作系统简介:终极机器人应用框架(上)


运行一个模拟系统

模拟世界

首先的目标是创建一个可以在其中模拟想要实现的脚本的环境。在stage_ros包中的stageros节点允许我们在一个由一张图片定义的2D图形中运行机器人。 在stage_ros包中有一个完整的针对世界文件和如何生成他们的语法。这些非常简单,但超出了我们的范畴。幸运的是, 这些包都带有几个demo世界。首先,去到文件的目录:

roscd stage_ros
cd world

在这个目录里有几个文件。运行其中一个,

rosrun stage_ros stageros willow-erratic.world

这样就创建了几个主题。每一个的意义在包的文档中都有说明。重要的部分是它有cmd_vel。

在显示的图形中,有一个蓝色的广场,代表你控制机器人。通过使用我们的代码或者_Robot Steering_,可以控制这个机器人。试试吧!

通过加载文件来启动系统

在我们的包中创建一个launch目录,并且在它里面创建一个teleop.launch文件。最后目录的结构应该看起来像这样:

toptal_tutorial/
├── CMakeLists.txt
├── launch
│   └── teleop.launch
├── package.xml
├── scripts
│   └── teleop.py
└── src

在teleop.launch文件中我们定义了一系列节点以及他们的互联。

<launch>
  <arg name="world_file" default="$(find stage_ros)/world/willow-four-erratics-multisensor.world" />
  <node pkg="stage_ros" type="stageros" name="simulated_world" args="$(arg world_file)"></node>
  <group ns="robot_0">
    <node pkg="joy" type="joy_node" name="joy_input"></node>
    <node pkg="toptal_tutorial" type="teleop.py" name="joy_convert"></node>
  </group>
</launch>

新的世界包括了四个机器人,并且他们每一个主题都有前缀robot_<n>。所以,0号机器人有一个叫作robot_0/cmd_vel的速度命令主题。 这就是为什么我们在命名空间中放置名叫robot_0的控制器,以便把他们的名字调整到新的格式。在这样的场景下,你可以想象得到在文件系统中这些主题的目录名字。

为了运行启动文件,不需要roscore。在某些场景,roscore只是无作为的启动文件的一个特别案例。如果缺少roscore,仅是第一个启动文件被加载时会运行 一个core,剩下的则连接到此。现在,我们通过这样来运行加载器:

roslaunch toptal_tutorial teleop.launch

如果全部都正确,结果会有一个带4个机器人的模拟器,其中一个机器人由我们的游戏柄或者操纵杆控制。这个世界比前一个的引擎盖要多得多。这四个机器人每一个都有:

/robot_<n>/base_pose_ground_truth
/robot_<n>/base_scan_0
/robot_<n>/base_scan_1
/robot_<n>/camera_info_0
/robot_<n>/camera_info_1
/robot_<n>/cmd_vel
/robot_<n>/depth_0
/robot_<n>/depth_1
/robot_<n>/image_0
/robot_<n>/image_1
/robot_<n>/odom

可用0,1,2,3来替换<n>。这把我们带到了最后一个主题。

使用rqt查看数据

我们不会深入研究rqt,但它是查看更复杂数据的完美工具。你可以尝试全部主题,但这里我们关注于image_0,image_1,depth_0,和depth_1这几个主题。

让我们加载rqt并移除全部开启的插件。现在打开4个图片展示台(Plugins > Visualization > Image View),并且在2x2的表格结构中放置他们。最后,在每个视图的左上角, 在四个状态主题中选择robot_0。

我们得到的是带尝试知觉的立体视觉,和低分辨率的摄像机。记住我们甚至可以获得这个结果而不用输入系统。如果我们只是这样运行(在stage_ros/world目录里面):

rosrun stage_ros stageros willow-four-erratics-multisensor.world

并且通过一个叫作/robot_0/cmd_vel主题添加_Robot Steering_插件,也可以获得带在屏幕滑块进行控制的相同的结果。

将结果应用到真实系统

大量的硬件都能完整支持ROS,这些经常由第三方志愿者提供。很多机器人平台有生成这些消息类型的驱动,而ROS有采取网络摄像头以及发布图片反馈的节点。

最后的结果是我们想要实现的一个模拟,通过以下修改也可以达到同样的效果:

  • 在你的机器人的车载计算器上安装ROS

  • 在车载计算机上创建一个启动文件把ROS和底层平台,全部高层的传感器如摄影机以及激光测距义等连接起来。需要的节点可能已经存在,或者可以通过在某一边为ROS创建发布者/订阅者,同时在另一边创建针对序列通信的驱动来实现

  • 在启动时运行启动文件

  • 在你的远程计算机中把export ROS_MASTER_URI=http://<robot_hostname>:11311/添加到你的bash启动中,使得远程计算机在给定的域名和端口寻找roscore

  • 加载rqt并且/或者任意监控和控制机器人的脚本

这样下来其实只是在远程设备上放置合适的环境变量,其余的则是处理它本身。在计算机集群上运行ROS仅需要在每一个机器上都完成某一个步骤。

结论

我们已经通过非常少量的代码,演示了你怎样才能随心所欲操纵一个复杂系统的变量。简单的发布者/订阅者系统允许你快速开发在计算机集群中处理数据的软件管道,而不需要担心底层相关元素的实现。

我们只是使用了一个简单的模拟器,更复杂的模拟器如gazebo(也包含在完整的桌面版本中)可以让你创建有物理和复杂传感器的3D世界, 并且可以给你最终结果的体验和远在它被开发前的产品。

这个只是一个很基本的简介,但希望你对和这个多才多艺的框架一起工作的更感兴趣。


------------------------    


© 著作权归作者所有

共有 人打赏支持
暗夜在火星

暗夜在火星

粉丝 159
博文 171
码字总数 320557
作品 1
广州
程序员
私信 提问
[译]机器人操作系统简介:终极机器人应用框架(上)

[译]机器人操作系统简介:终极机器人应用框架 /** * 原文出处:https://www.toptal.com/robotics/introduction-to-robot-operating-system * @author dogstar.huang chanzonghuang@gmail.co......

暗夜在火星
2016/03/06
212
0
腾讯张正友:攻克可进化机器人,6个研究趋势与7大技术突破点

来源:腾讯AI实验室 11月2日,机器人及多媒体技术专家、腾讯Robotics X实验室主任张正友博士,在2018年腾讯全球合作伙伴大会的人工智能分论坛上,展示了腾讯在机器人领域的思考。包括: 让A...

人工智能学家
11/03
0
0
【掘金小报】第十一期 Facebook 是如何加速应用的?

掘金日报主打分享优质深度技术内容,技术内容分:前端、后端、Android、iOS、产品设计、工具资源和一些有趣的东西。 与标题相关的文章在iOS分类下:Facebook iOS 应用是如何加速图片显示的?...

膜法小编
2017/05/10
0
0
ICRA 2018 十二大奖项名单及评选标准全汇总

雷锋网 AI 科技评论按:国际机器人与自动化会议(ICRA)是 IEEE 机器人与自动化学会(IEEE Robotics and Automation Society)的旗舰会议,同时也是机器人研究者展示他们工作的重要论坛。ICR...

WBLUE
05/20
0
0
预告:贾子枫 与 Top Liu 的Live - - 如何玩转 ROS 机器人程序设计

首先要非常感谢贾子枫邀请我来参与这次「机器人」主题的系列live,并与大家分享ROS学习的话题。 本次活动定位为公益及技术传播活动 1. 门票定为最低价9.9元 2. 本次live全部收入将用于资助贫...

Top Liu
2017/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka+Flink 实现准实时异常检测系统

1.背景介绍 异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防...

架构师springboot
44分钟前
6
0
DecimalFormat 类基本使用

/* * DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度 * 0 表示如果位数不足则以 0 填充 * # 表示只要有可能就把数字拉上这个位置 * */ public static void main(String[] args){...

嘴角轻扬30
今天
4
0
This APT has Super Cow Powers.

在Debian/Ubuntu上,apt包管理器内嵌着一个彩蛋. 如果你在命令行界面输入 apt help 在最后一行能找到This APT has Super Cow Powers. 说明该apt具有超级牛力 牛力是个什么梗? 则说明你的系统...

taadis
今天
3
0
起薪2万的爬虫工程师,Python需要学到什么程度才可以就业?

爬虫工程师的的薪资为20K起,当然,因为大数据,薪资也将一路上扬。那么,Python需要学到什么程度呢?今天我们来看看3位前辈的回答。 1、前段时间快要毕业,而我又不想找自己的老本行Java开发...

糖宝lsh
今天
10
0
携手开发者共建云生态 首届腾讯云+社区开发者大会在京举办

本文由云+社区发表 北京时间12月15日,由腾讯云主办,极客邦科技、微信、腾讯TEG协办的首届腾讯云+社区开发者大会在北京朝阳悠唐皇冠假日酒店举办。在会上,腾讯云发布了重磅产品开发者平台以...

腾讯云加社区
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部