ROS开发时常常使用的工具,分别是:
l Gazebo
l RViz
l rqt
l rosbag
l rosbridge
l moveit!
这六个工具是我们开发常常用到的工具,gazebo是一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具;RViz是可视化工具,是将接收到的信息呈现出来;rqt则是非常好用的数据流可视化工具,有了它我们可以直观的看到消息的通信架构和流通路径;rosbag则是对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写。rosbridge是一个沟通ROS和外界的功能包,moveit!是目前为止应用最广泛的开源操作软件。
一、 Gazebo
Gazebo是一个机器人仿真工具,模拟器,也是一个独立的开源机器人仿真平台。当今市面上还有其他的仿真工具例如V—Rep、Webots等等。但是Gazebo不仅开源,也是是兼容ROS最好的仿真工具。
Gazebo的功能很强大,最大的优点是对ROS的支持很好,因为Gazebo和ROS都由OSRF(Open Source Robotics Foundation)开源机器人组织来维护,Gazebo支持很多开源的物理引擎比如最典型的ODE。可以进行机器人的运动学、动力学仿真,能够模拟机器人常用的传感器(如激光雷达、摄像头、IMU等),也可以加载自定义的环境和场景。
二、 RViz
RViz(the Robit Visualization tool)机器人可视化工具,可视化的作用是直观的,它极大的方便了监控和调试等操作。
和Gazebo一样,也会显示出一个3D环境,不过操作上有所不同,具体操作如下:
l 平移:鼠标滚轮中键
l 旋转:鼠标左键
l 放缩:鼠标滚轮
l 左侧控制面板,可以添加插件
RViz的插件种类繁多功能强大,非常适合我们开发调试ROS程序。
三、 rqt
rqt是一个基于qt开发的可视化工具,拥有扩展性好、灵活易用、跨平台等特点,主要作用和RViz一致都是可视化,但是和RViz相比,rqt要高级一个层次。
它使得我们初学者可以直观的看到ROS的通信架构和信息流,方便我们理解的同时,也使得我们能够最快的纠错等等。rqt_plot绘制数据曲线图,也是极大的帮助我们了解数据的变化态势,理解数据流的作用,用曲线来显示我们的操作,精确直观。rqt_console配合rqt_logger_level,查看日志,对于查找错误和DeBug都有很大帮助。
四、 Rosbag
rosbag是一个这是一套用于记录和回放ROS主题的工具。它旨在提高性能,并避免消息的反序列化和重新排序。rosbag package提供了命令行工具和代码API,可以用C++或者python来编写包。而且rosbag命令行工具和代码API是稳定的,始终保持向后的兼容性。
rosbag通过命令行能够对软件包进行很多的操作,更重要的拥有代码API,可以对包进行重新编写。增加一个ROS API,用于通过服务调用与播放和录制节点进行交互。
五、 Rosbridge
Rosbridge是一个用在ROS系统和其他系统之间的一个功能包,就像是它的名字一样,起到一个"桥梁"的作用,使得ros系统和其他系统能够进行交互。Rosbridge为非ROS程序提供了一个JSON API,有许多与Rosbridge进行交互的前端,包括一个用于Web浏览器交互的WebSocket服务器。
Rosbridge_suite是一个包含Rosbridge的元程序包,用于Rosbridge的各种前端程序包(如WebSocket程序包)和帮助程序包。Rosbridge_suite元程序包是实现Rosbridge Protocol并提供WebSocket传输层的包的集合。
Rosbridge Protocol提供了非ROS程序与ROS通信的具体的格式规范,规范基于JSON格式,包括订阅topic,发布message,调用server,设置参数,压缩消息等等.此规范与所用的编程语言和传输方式无关,任何可以发送JSON格式的语音和传输方式都可以Rosbridge protocol进行交流,并且与ROS进行交互。
六、 moveit!
moveit!的使用通过为用户提供接口来调用它,包括C++、Python、GUI三种接口。ROS中的 move_group 节点充当整合器,整合多个独立组件,提供ROS风格的Action和service。 move_group 通过ROS topic和action与机器人通讯,获取机器人的位置、节点等状态,获取数据再传递给机器人的控制器。
move_group 节点获取到节点状态信息或者机器人变换信息时候,会通过控制器的接口去处理这些信息,比如进行坐标转换、规划场景、3D感知。另外, move_group 的结构比较容易扩展,不仅具有独立的能力如抓放,运动规划,也可扩展自公共类,但实际作为独立的插件运行。moveit!系统结构图如下: