技术分享 | 学习ROS,这5个常用工具不能少

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 学习ROS,这5个常用工具不能少相关的知识,希望对你有一定的参考价值。

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”类似的“机器人框架”有: Player,YARP、Orocos、CARMEN、Orca、MOOS和 Microsoft Robotics Studio。

ROS开发时常常使用的工具,分别是:Gazebo、RViz、rqt、rosbag、rosbridge和moveit!

这六个工具是我们开发常常用到的工具,gazebo是一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具;RViz是可视化工具,是将接收到的信息呈现出来;rqt则是非常好用的数据流可视化工具,有了它我们可以直观的看到消息的通信架构和流通路径;rosbag则是对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写。rosbridge是一个沟通ROS和外界的功能包,moveit!是目前为止应用最广泛的开源操作软件。 1.Gazebo

Gazebo是一款3D动态仿真模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。 file  图1 Gazebo

Gazebo的功能很强大,最大的优点是对ROS的支持很好,因为Gazebo和ROS都由OSRF(Open Source Robotics Foundation)开源机器人组织来维护,Gazebo支持很多开源的物理引擎比如最典型的ODE。可以进行机器人的运动学、动力学仿真,能够模拟机器人常用的传感器(如激光雷达、摄像头、IMU等),也可以加载自定义的环境和场景,仿真不仅仅只是做出一个很酷的3D场景,更重要的是给机器人一个逼近现实的虚拟物理环境,比如光照条件、物理距离等等。设定好具体的参数,让机器人完成我们设定的目标任务。比如一些有危险因素的测试,就可以让机器人在仿真的环境中去完成,例如无人车在交通环境复杂的交通要道的效果,我们就可以在仿真的环境下测试各种情况无人车的反应与效果,如车辆的性能、驾驶的策略、车流人流的行为模式等,又或者各种不可控因素如雨雪天气,突发事故,车辆故障等,从而收集结果参数指标信息等等。

2.RViz

RViz(the Robit Visualization tool)机器人可视化工具,可视化的作用是直观的,它极大的方便了监控和调试等操作。 file  图2 Rviz

虽然从界面上来看,RViz和Gazebo非常相似,但实际上两者有着很大的不同,Gazebo实现的是仿真,提供一个虚拟的世界,RViz实现的是可视化,呈现接收到的信息。 3. rqt

rqt是一个基于qt开发的可视化工具,拥有扩展性好、灵活易用、跨平台等特点,主要作用和RViz一样都是可视化,但是和RViz相比,rqt要高级一个层次。

rqt_graph :显示通信架构 rqt_plot :绘制曲线 rqt_console :查看日志

3.1 rqt_graph rqt_graph是来显示通信架构,当前有哪些Node和topic在运行,消息的流向是怎样,都能通过这个语句显示出来。此命令可用于显示系统的全貌。

file  图3.1 rqt_graph

3.2 rqt_plot rqt_plot将一些参数,尤其是动态参数以曲线的形式绘制出来。当我们在开发时利用rqt_plot将这些原始数据用曲线绘制出来,利于我们分析数据。

file  图3.2 rqt_plot

3.3 rqt_console rqt_console里存在一些过滤器,我们可以利用它方便的查到我们需要的日志。 file  图3.3 rqt_console

4. Rosbag rosbag 主要用于记录、回放、和分析 rostopic 中的数据。rosbag package提供了命令行工具和代码API,可以用C++或者python来编写。而且rosbag命令行工具和代码API是稳定的,始终保持向后的兼容性。

5.rosbridge rosbridge是一个可用于非ROS系统和ROS系统进行通信的功能包,非ROS的系统使用指定数据内容的基于JSON(或BSON)格式的网络请求(rosbridge支持TCP、UDP、WebSocket三种网络通讯方式)来调用ROS的功能,既然非ROS系统能通过rosbridge基于TCP/UDP/WebSocket与机器人上的ROS进行交互,那就是实现了外部系统和机器人上的ROS的解耦合,也就是外部系统完全可以与机器人使用不同的开发语言不同的OS平台。

6.moveit! 2012年,一款叫做moveit!的移动操作软件诞生了,moveit最初在Willow Garage由Sachin Chitta,Ioan Sucan,Gil E. Jones,Acorn Pooley,Suat Gedikli,Dave Hershberger开发,它融合了研究者在运动规划、操纵、3D感知、运动学、控制和导航方面的最新进展,为操作者提供了一个易于使用的平台,使用它可以开发先进的机器人应用,同时它也被广泛应用于工业,商业,研发和其他领域。

moveit的使用通过为用户提供接口来调用它,包括C++、Python、GUI三种接口。ROS中的move_group节点充当整合器,整合多个独立组件,提供ROS风格的Action和service。move_group通过ROS topic和action与机器人通讯,获取机器人的位置、节点等状态,获取数据再传递给机器人的控制器。

move_group节点获取到节点状态信息或者机器人变换信息时候,会通过控制器的接口去处理这些信息,比如进行坐标转换、规划场景、3D感知。另外,move_group的结构比较容易扩展,不仅具有独立的能力如抓放,运动规划,也可扩展自公共类,但实际作为独立的插件运行。moveit系统结构图如下:

file 图4 moveit系统结构图

Gazebo、RViz、rqt、rosbag、rosbridge和moveit等ROS常用工具掌握后就可以进行ROS开发了。让我们一起畅游在ROS的知识海洋中,站在巨人的肩膀上开拓新的航线!

  • End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

以上是关于技术分享 | 学习ROS,这5个常用工具不能少的主要内容,如果未能解决你的问题,请参考以下文章

ROS机器人里程计模型

安全测试常用的工具有哪些?这些不能少!

技术分享 | 让ROS人机交互更加有趣--基于Qt+ROS开发

ROS大型工程学习 ROS常用命令行

技术分享 | 9个常用Linux命令详解

ROS学习笔记51--rosbag管理工具分享:时间戳过滤话题过滤多包过滤