ROS机器人操作系统(常用工具)

1. Gazabo

1.1 简介

ROS中的工具就是帮助我们完成一系列的操作,使得我们的工作更加轻松高效。ROS工具的功能大概有以下几个方向:仿真、调试、可视化。本节课我们要学习的Gazebo就是实现了仿真的功能,而调试与可视化由Rviz、rqt来实现,我们下节再依次介绍。

1.2 认识 Gazebo

Gazebo是一个机器人仿真工具,模拟器,也是一个独立的开源机器人仿真平台。当今市面上还有其他的仿真工具例如V—Rep、Webots等等。但是Gazebo不仅开源,也是是兼容ROS最好的仿真工具。

img

Gazebo的功能很强大,最大的优点是对ROS的支持很好,因为Gazebo和ROS都由OSRF(Open Source Robotics Foundation)开源机器人组织来维护,Gazebo支持很多开源的物理引擎比如最典型的ODE。可以进行机器人的运动学、动力学仿真,能够模拟机器人常用的传感器(如激光雷达、摄像头、IMU等),也可以加载自定义的环境和场景。

1.3 仿真的意义

仿真不仅仅只是做出一个很酷的3D场景,更重要的是给机器人一个逼近现实的虚拟物理环境,比如光照条件、物理距离等等。设定好具体的参数,让机器人完成我们设定的目标任务。比如一些有危险因素的测试,就可以让机器人在仿真的环境中去完成,例如无人车在交通环境复杂的交通要道的效果,我们就可以在仿真的环境下测试各种情况无人车的反应与效果,如车辆的性能、驾驶的策略、车流人流的行为模式等,又或者各种不可控因素如雨雪天气,突发事故,车辆故障等,从而收集结果参数指标信息等等,只有更大程度的逼近现实,才能得出车辆的真实效果。直到无人车在仿真条件下做到万无一失,才能放心的投放到真实环境中去使用,这即避免了危险因素对实验者的威胁,也节约了时间和资源,这就是仿真的意义。

img

通常一些不依赖于具体硬件的算法和场景都可以在Gazebo上仿真,例如图像识别、传感器数据融合处理、路径规划、SLAM等任务完全可以在Gazebo上仿真实现,大大减轻了对硬件的依赖。

2. RViz

2.1 简介

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

img

2.2 演示

依然打开教材的模拟场景,输入roslaunch robot_sim_demo robot_spawn_launch,之后在命令行打开新的终端直接输入$ rviz 打开工具。

和Gazebo一样,也会显示出一个3D环境,不过操作上有所不同,具体操作如下:

  • 平移:鼠标滚轮中键
  • 旋转:鼠标左键
  • 放缩:鼠标滚轮
  • 左侧控制面板,可以添加插件

RViz的插件种类繁多功能强大,非常适合我们开发调试ROS程序。

2.3 差异

虽然从界面上来看,RViz和Gazebo非常相似,但实际上两者有着很大的不同,Gazebo实现的是仿真,提供一个虚拟的世界,RViz实现的是可视化,呈现接收到的信息。左侧的插件相当于是一个个的subscriber,RViz接收信息,并且显示。所以RViz和Gazebo有本质的差异。

3. rqt

3.1 简介

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

3.2 命令

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

rqt_graph

rqt_graph是来显示通信架构,也就是我们上一章所讲的内容节点、主题等等,当前有哪些Node和topic在运行,消息的流向是怎样,都能通过这个语句显示出来。此命令由于能显示系统的全貌,所以非常的常用。

rqt_plot

rqt_plot将一些参数,尤其是动态参数以曲线的形式绘制出来。当我们在开发时查看机器人的原始数据,我们就能利用rqt_plot将这些原始数据用曲线绘制出来,非常的直观,利于我们分析数据。

rqt_console

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

4. Rosbag

4.1 简介

rosbag是一个这是一套用于记录和回放ROS主题的工具。它旨在提高性能,并避免消息的反序列化和重新排序。rosbag package提供了命令行工具和代码API,可以用C++或者python来编写包。而且rosbag命令行工具和代码API是稳定的,始终保持向后的兼容性。

4.2 命令

rosbag对软件包来操作,一个包是ROS用于存储ROS消息数据的文件格式,rosbag命令可以记录、回放和操作包。指令列表如下:

命令 作用
cheak 确定一个包是否可以在当前系统中进行,或者是否可以迁移。
decompress 压缩一个或多个包文件。
filter 解压一个或多个包文件。
fix 在包文件中修复消息,以便在当前系统中播放。
help 获取相关命令指示帮助信息
info 总结一个或多个包文件的内容。
play 以一种时间同步的方式回放一个或多个包文件的内容。
record 用指定主题的内容记录一个包文件。
reindex 重新索引一个或多个包文件。
  • 参考链接

11/26/2018 22:10:00 PM

Author : Z

Jiangsu Kunshan

你可能感兴趣的:(无人驾驶,ROS,让你爱上机器人)