ROS, the Robot Operating System, Is Growing Faster Than Ever, Celebrates 8 Years

ROS, the Robot Operating System, Is Growing Faster Than Ever, Celebrates 8 Years http://spectrum.ieee.org/automaton/robotics/robotics-software/ros-robot-operating-system-celebrates-8-years ROS, the Robot Operating System, Is Growing Faster Than Ever, Celebrates 8 Years By Brian Gerkey Posted 9 Dec 2015 | 23:35 GMT AddThis Sharing B Image: OSRF Happy birthday ROS! This is a guest post. The views expressed here are solely those of the author and do not represent positions of IEEE Spectrum or the IEEE. Eight years ago, Morgan Quigley, Eric Berger, and Andrew Ng published a paper that was not about ROS.

READ MORE

ROS 进阶学习笔记(19)-- Add Extra Gyro Sensor for ROOMBA-Based Turtlebot

ROS 进阶学习笔记(19)– Add Extra Gyro Sensor for ROOMBA-Based Turtlebot ===Add Extra Gyro Sensor for ROOMBA-Based Turtlebot=== I write this in English for covering more friends globally. Please Indicate the SourceSonictl_blog_csdn. == Background of this problem == As I’m following the book “ros by example_hydro_vol1” written by R. Patrick Goeble, In order to follow the instances in that book, I implemented a turtlebot-like turtlebot based on the iRobot Create2/ROOMBA_5xx/ROOMBA_6xx/etc. One of the big differences should be that the original turtlebot is based on the “iRobot Create” which has a 25pin( img) connector and the driver for it “turtlebot_driver”(ROS package) is written for that connector.

READ MORE

ROS 进阶学习笔记(18):ROS导航3:关于 ROS ActionLib 包

ROS 进阶学习笔记(18):ROS导航3:关于 ROS ActionLib 包 ROS 进阶学习笔记(18):理解ROS Action Lib ROS 里除了基本的msg publisher/Subscriber 以外,还有以下东东需要理解: Server/Client - 参见Link ActionLib - 本次blog讨论 ActionLib是ROS里一个重要的部分(link:http://wiki.ros.org/APIs),既然我在学习move_base时遇到很多有关actionlib的实现,还是先把actionlib理解之后再回去搞navigation的其他包比较合适。打好基础。 查看原图 [Overview] ROS中的服务service是一问一答的形式,你来查询了,我就返给你要的信息。 action也有服务的概念,但是它不一样的地方是:不是一问一答,而多了一个反馈,它会不断反馈项目进度。如navigation下的move_base package,你设定了目标点,反馈信息可能是机器人在规划路径上的即时位姿,直到机器人到达目标点,返回SUCCEEDED消息。有关actionlib的具体学习笔记sonictl见下: === 我把wiki_actionlib的读书笔记写在下面: === wikipage: http://wiki.ros.org/actionlib 【Summary】 The actionlib stack provides a standardized interface for interfacing with preemptable tasks. Examples of this include moving the base to a target location, performing a laser scan and returning the resulting point cloud, detecting the handle of a door, etc. actionlib是个stack,意味着与navigation stack平级?为和pre emptable tasks 可预先中止性任务进行交互而提供标准的接口。相关的例子有:moving base to a target location,performing a laser scan and returning the resulting point cloud, detecting the handle of a door, etc.

READ MORE

ROS 进阶学习笔记(17):ROS导航2:关于 move_base Package(底盘移动包)

ROS 进阶学习笔记(17):ROS导航2:关于 move_base Package(底盘移动包) == 关于move_base 包(底盘移动包?移动底盘包?) == 开始之前,我sonictl@CSDN有几个问题(Link on ROS_Answer)需要搞定: costmap_2d包 与 move_base包 是什么关系? 导航时,在RviZ工具中,可以看到,inflate 地图是由一个叫做 /move_base/local_costmap/costmap 主题生成的,这个主题的发布者又是move_base,怎么发布的? 到底是costmap_2d发布的/move_base/local_costmap/costmap还是move_base发布的它?又回到第1个问题,关系问题。 http://wiki.ros.org/costmap_2d/hydro/obstacles 这里是不是可以探寻一点东西出来,以调整obstacle层的刷新机制 我sonictl@CSDN要解决的就是inflated obstacle层的刷新机制 How to solve the problem: === 我学这个包的时候,尽量总结wiki page上的内容如下,算是sonictl@CSDN读书笔记:=== wikipage: http://wiki.ros.org/move_base move_base package 所属Stack: navigation 关于这个包在 ROS Navigation 框架中的位置,参见:ROS探索总结(十三)——导航与定位框架 【Summary】 The move_base package provides an implementation of an action (see the actionlib package) that, given a goal in the world, will attempt to reach it with a mobile base. The move_base node links together a global and local planner to accomplish its global navigation task.

READ MORE

ROS 进阶学习笔记(16):ROS导航1:关于Costmap_2d Package (代价地图包)

ROS 进阶学习笔记(16):ROS导航1:关于Costmap_2d Package (代价地图包) === 关于Costmap_2d Package === wiki page: http://wiki.ros.org/costmap_2d === 我遇到的问题是 obstacle layer的刷新频率太低 === costmap_2d包下的所有类文档:http://docs.ros.org/hydro/api/costmap_2d/html/annotated.html 其中,值得注意滴是 costmap_2d::ObservationBuffer 这个类,这个类会被 costmap_2d::ObstacleLayer 调用,obstacle_layer.cpp(Link of source code) 其中,observation_keep_time和expected_update_rate应该是决定刷新频率的参数,其默认是0.0 但实际nav_test.py运行时,这个参数是1.0, 我用rosparam set改成0.0了也没实际效果。 I’m trying to solve this issue…. === 我学这个包的时候,尽量总结wiki page上的内容如下:=== 所属Stack: navigation 关于这个包在 ROS Navigation 框架中的位置,参见: ROS探索总结(十三)——导航与定位框架 Sammary: 1. 实现2D cost map 2. 输入: sensor data 3. 生成: 占用格数据,inflates cost in a 2D costmap. 4. 支持 基于map_server的一个costmap的初始化, 支持 基于rolling window的costmaps, 支持 基于参数的,对一个传感器topics的配置的订阅。 wiki web page上有图(图片地址见下),说明神马是cost map. 图片地址:http://wiki.ros.org/costmap_2d?action=AttachFile&do=get&target=costmap_rviz.png 红色cell是costmap 上的障碍,蓝色是通过机器人半径膨胀出的障碍,红色多边形是机器人 footprint即垂直投影。要不碰撞,footprint不能和红色cell有交叉,并且地,机器人中心不能与蓝色 cell有交叉。 costmap_2d这个包提供了一个可以配置的结构。这个结构处理关于机器人在一个occupancy grid(占

READ MORE

ROS与智能机器人技术发展路径探索

ROS与智能机器人技术发展路径探索 ROS与智能机器人技术发展路径探索 Sonictl, Aug 2015 序 本文按照目标路径、需求、资源、方法、计划为提纲,根据本人对市场、技术、商业模式等的经验理解,梳理总结 ROS 和机器人技术对于机器人研发团队来讲,可能的发展方向、可行性分析、前景展望等。sonictl@CSDN 据我sonictl@CSDN了解及调研, ROS 已经逐渐占据了机器人开源控制软件平台领域几乎用户量最大的地位。原因主要是:1. ROS 的维护团队比较强大。 2. ROS的架构相对科学。 3. ROS 核心团队针对目前主流的机器人硬件,比如ABB, Kuka, UR, iRobot, Kinect等,提供了相对丰富和成熟的应用案例。4. ROS开源的特点可挑战传统厂商的封闭昂贵的软件工具。 结合我们sonictl对机器人行业的理解,它是一个应用复杂多样的学科。为了降低机器人的生产成本,需要使用ROS这样架构的软件平台来实现代码复用和模块化封装。目前包括Mathworks在内的算法软件研发巨头[1]及国外的致力于机器人IMU传感器模块研发的初创公司[2]等,都纷纷开始在自己产品的软硬件开发接口上支持ROS。 所以,我sonictl认为,随着机器人技术的广泛应用,ROS是最有可能成长为一个赢得更多用户和开发者,获得更广泛的硬件厂商和产品支持,具有更强大的功能,覆盖机器人上下游产业链,最终形成以ROS为线索的繁荣的机器人产学研生态。 作为一个机器人开发团队,应该把握ROS目前还处在探索,含苞待放的时机,以特定的用户群的需求为导向、以核心技术为竞争力,积累、试验和开发自己的ROS机器人产品。 路线分析 路线一: ROS在工业机器人的应用 工业机器人是机器人在产生自身价值方面最直接、最直观、应用方式和产品模式最清晰的领域。工业上相对固定和可控的生产工作环境降低了机器人的应用难度。 在满足工业生产中的可靠、实用等要求的基础上,工业机器人在未来还应该朝着低成本和智能化方向发展。 ROS应如何降低工业机器人的成本和提高智能性: 相对于传统的机械运动轨迹的实现,ROS很难降低工业机器人的应用成本,而在需要智能算法的工业机器人开发上,可在机器人进行传感和决策的部分,使用ROS提供的低廉免费的算法模块,甚至在ROS原有的模块上进行定制化开发和移植、甚至分发给全球的算法用户。 1.ROS在工业机器人领域的应用目标 开发ROS在搬运、分拣、装配、等领域的算法模块及在ABB、UR等机器人本体上运行的整体解决方案。比如,ROS的视觉识别解决方案的开发及应用,就被我认为是很好的方向。 2.ROS在工业机器人领域的应用需求 这个需求即是工业界对工业机器人智能化的需求,机械往复运动的机器人已经无法满足工业需求,比如柔性生产线、不同型号的PCB搬运、计数线等。 3.ROS在工业机器人领域的应用资源和战略分析 借助sonictl@CSDN团队c++开发人才,通过团队内部培训,完成对ROS的知识覆盖。 根据研发目标,讨论确定ros在工业领域的应用开发路线图。 初步的路线图: 在ABB或kuka机器人上,基于ROS架构,仿造ROS官方例程,利用kinect辅助,完成对平面上物体的自动定位和搬运任务。 总结和封装上个任务的ROS节点,形成ROS节点使用手册,目标是使其易于分发和使用,sonictl@CSDN甚至使用户零代码完成软硬件组装。 在ABB或kuka机器人上开发更多ROS Industrial的案例,比如相机智能校准等,并对案例模块进行分拆,将各个模块进行产品化封装,形成包含宣传及参展、市场营销、产品研发、售后服务的产品线。 最终的产品形态应该是一个能生产ROS nodes的软件工具,比如对于图像识别来讲,用户加入训练的图片或图像,可以训练成一个具有图像识别能力的节点(node)。用户傻瓜式生成它之后,sonictl@CSDN便可直接使用这个ROS节点加入到自己的机器人架构中。 路线二: ROS在实时地图建模与导航中的应用 实时地图建模与导航,是按照机器人的功能模块进行scope观察角度进行划分的一个用途较为广泛的功能。这项功能对应英文为人们熟知的SLAM(Simutaneously Localization andMapping). SLAM技术主要是对特种或服务机器人、四旋翼无人机等来讲,当它们在实际陌生地理环境中进行工作时,要想实现自主导航,主动蔽障等功能,都需要有SLAM或类似SLAM的技术作为支撑。所以SLAM技术在未来智能机器人领域的应用应该是一个基础和必须的地位。SLAM技术也成为过去10年来,移动机器人技术研究中最吸引研究资源的领域之一。在机器人领域有大量的学术论文阐述了很多研究人员对于SLAM的研究成果,SLAM已经成为智能机器人必须的几项技术中,相对成熟的一项技术。 ROS核心团队和广大的应用开发者也在SLAM技术上投入和很多,产出了一套完整的ROS的应用架构,有了很多成熟的案例。无论是地图建模还是智能蔽障,我sonictl@CSDN都看到大量的应用案例和视频等在Internet上传播。ROS的PR2机器人以及TurtleBot移动平台,都能够对ROS社区提供的有关SLAM的功能模块提供很好的兼容性。从ROS社区的大量文章、案例、软件工具集、教材等可以看出,ROS社区在SLAM技术上相对其他技术来讲,有更多的积累和经验,所以,ROS对于SLAM技术的实现和支持上具有一个很好的基础。我们可以在这个方向上做一些提升智能性、稳定性和产品化的工作。 我sonictl想,ROS之于SLAM,应该是使得SLAM的应用变得像插入一个U盘一样简单的事情。终极的产品形态可以是基于ROS接口的,具备SLAM功能的激光或3D传感器及配套软件服务包,让用户接入3D扫描设备即可享用设备所提供的地图建模服务。 1.ROS在SLAM领域的应用目标: 提供基于ROS协议和软硬件环境的SLAM技术服务,产品形态可以是纯软件包或者软硬件结合的产品或服务。比如,指定kinect和turtlebot/iRobot/ExBot等传感器和平台,提供一条龙式的地图建模与应用的软件节点与使用教程,再扩展对更多的硬件支持,以满足不同场景的需求。目标是要形成全国甚至全球ROS+SLAM领域用户量最大的产品,成长为在机器人SLAM技术领域的技术和服务提供方。可能的愿景是通过云SLAM服务搜集室内数据,建立起一个庞大的公共服务机器人地图建模和室内地图数据运营商。数据服务可应用在如学校、商场、运动场馆、博物馆等地点的服务机器人上,且具有跨场景能力,无需重复建模,类似车载导航使用的地图数据服务。 2.ROS在SLAM领域的应用需求: 当自主移动机器人、四旋翼无人机等在实际地理环境中进行工作时,要想实现自主导航,主动蔽障等功能,都需要有SLAM或类似SLAM的技术作为支撑。所以SLAM技术在未来智能机器人领域的应用应该是一个基础和必须的地位。易用的SLAM技术,将成为机器人开发和生产者得心应手的工具,让开发者可以专心自己的核心模块开发,而不用担心在地图建模模块部分花费太多精力。所以基础技术模块的易用性将取得广泛的市场需求,赢得客户。 3.ROS在SLAM领域的应用资源和战略分析: 稳定的SLAM节点软件服务应该是合适的产品方向。 首先在成熟的、用户量大、应用场景典型的移动平台上,sonictl借助ROS社区提供的基础包,实现2-3种传感器信号下的SLAM及导航功能。再将SLAM软件包进行优化。 优化后的软件服务打包成产品级的服务,典型的应用方案,详细的使用手册,供用户免费使用并利用反馈不断改进。 目标是通过易用的SLAM解决方案首先完成对高校和科研院所市场的占领,因为高校和科研院所目前应是SLAM技术应用最广泛的地方。 探索通过云服务的方式,进一步简化SLAM应用的开发周期和配置难度,使有wifi的地方就能使用云SLAM技术,完善云端建模、驱动、控制等算法。 高级目标是通过云SLAM服务搜集室内数据,建立起一个庞大的自主移动机器人地图建模和室内地图数据。 终极目标 终极目标是ROS架构的云机器人实现了大部分智能模块都通过云服务的方式提供算法服务,让机器人的下游应用开发在ROS的协议下,通过简单的积木式搭建即可建成自己的智能机器人,服务于各行各业,走进各家客厅。sonictl@CSDN 路线三: ROS的嵌入式应用 嵌入式设备在21世纪的井喷式发展是人们有目共睹的,嵌入式计算组件在汽车、消费电子、航空等各领域都占据了绝对的数量和重要性。无论在工业或服务机器人领域,嵌入式设备同样占据重要地位。ROS作为一种为机器人打造的软件工具平台,发源于基于PC的软硬件系统,随着机器人应用的普及和机器人开发需求的扩大,嵌入式的机器人开发模块和解决方案必将层出不穷,而ROS将以其先天的模块化、代码复用、节点协议统一等优点,一旦和嵌入式系统的可定制化、小型化、低成本、实时性等优势结合,必将带来机器人开发和应用方式的革命。注意关注ROS社区的新闻即可发现,负责运营ROS的”开源机器人基金”已经于2014年宣布着手支持高通骁龙600型arm处理器[3],和被人们广泛使用的树莓派嵌入式计算平台[4]。BOSCH公司已经有人在2015年8月发布了基于嵌入式 STM32F4Discovery 平台的实时ROS中间件开发项目。 1.ROS的嵌入式应用发展目标: 利用现有的被用户广泛使用的嵌入式平台,比如STM32F4Discovery,开发基于ROS协议中间件。 选取几种典型的机器人本体、移动平台等进行嵌入式ROS改造,或者开发自有的嵌入式ROS产品,产品可包括:运动控制板卡,电机驱动板卡,智能传感器,智能执行器,等等。 另一条路即发展基于ROS的嵌入式软件服务,开发易用、跨平台、可靠的、基于ROS协议的嵌入式app,覆盖电机控制、图像识别等机器人功能,这条路比较长远,不过等ros生态发展起来之后,可能会有这样的模式,短期内不太可行。 2.ROS的嵌入式应用需求: 由于嵌入式系统的巨大需求量已经被验证,而ROS平台的应用价值一旦被市场验证和接受到一定程度,毋庸置疑,ROS的嵌入式应用需求随之就会呈现爆发式增长。

READ MORE

ROS 进阶学习笔记(15) - Use Service to play ROS-Serial communication

ROS 进阶学习笔记(15) - Use Service to play ROS-Serial communication Use Service to play ROS-Serial communication Continue for this blog : ROS 进阶学习笔记(12) - Communication with ROS through USART Serial Port In that blog above, we discussed ROS-Serial communication through r2serial_driver node (C++). There is a problem that the r2serial made too much cpu expenses. Like below: Kevin mentioned a question: “Interesting, but a lot of my serial stuff is send a message and receive a response back. Instead of separate publish/subscribes.

READ MORE

ROS 进阶学习笔记(14) - About driving your iRobot Roomba-Create

ROS 进阶学习笔记(14) - About driving your iRobot Roomba-Create ROS 进阶学习笔记(14) - About driving your iRobot Roomba/Create There are several iRobot ROOMBA/CREATE drivers in ROS community, by May 2016, the newest one sholuld be thecreate_autonomy . Here we only discuss about the one used by the book " ROS by Example _ hydro _ vol1 “. 这篇文章主要介绍使用下面的Create驱动上电不能充电问题。至于另2篇介绍iRobot Roomba作底盘驱动的博客参考: http://blog.csdn.net/sonictl/article/details/49908949 http://blog.csdn.net/sonictl/article/details/50207949 There are two important script file you may usually need to edit/check: turtlebot_node.py & create_driver.py The turtlebot_node.py is starting a ROS node for controlling your turtlebot base, i.

READ MORE

Linux如何查看进程、杀死进程、启动进程等常用命令

Linux如何查看进程、杀死进程、启动进程等常用命令 Linux如何查看进程、杀死进程、启动进程等常用命令 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。 ps aux | grep program_filter_word,ps -ef |grep tomcat ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。 2.杀进程 使用kill命令结束进程:kill xxx 常用:kill -9 324 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME 3.进入到进程的执行文件所在的路径下,执行文件 ./文件名 附: 这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载 更改档案拥有者 命令 : chown [-cfhvR] [–help] [–version] user[:group] file…

READ MORE

ROS_Navigation专题2 - Setting up your robot using tf

ROS_Navigation专题2 - Setting up your robot using tf ROS_Navigation专题2 - Setting up your robot using tf This tutorial provides a guide to set up your robot to start using tf. ref: wiki.ros.org/navigation/Tutorials/RobotSetup/TF 1. Basic tf tutorials: http://wiki.ros.org/tf/Tutorials#Learning_tf 2. Source code for the package “robot_setup_tf_tutorial” : http://wiki.ros.org/robot_setup_tf_tutorial 3. Follow the “Setting up your robot using tf” tutorials for Navigation Stack: wiki.ros.org/navigation/Tutorials/RobotSetup/TF

READ MORE