ROS机器人操作系统学习笔记(四)常用工具

ROS机器人操作系统学习笔记(四)常用工具

4.1 Gazebo

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

4.1.1 认识Gazebo

对于Gazebo,大家可能并不陌生,因为我们在前面的学习过程中已经数次用到这个仿真环境,无论是在topic通信还是在service通信中,我们的demo都是在Gazebo中实现。

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

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

和我们前面的实例测试一样,我们打开教材的模拟场景,输入roslaunch robot_sim_demo robot_spawn_launch

操作说明

  • 平移:鼠标左键
  • 旋转:鼠标滚轮中键
  • 放缩:鼠标滚轮
  • 界面左侧是控制面板
  • 导入模型就在控制面板的insert,可以直接拖入模拟空间,也可以按需自制模型拖入。

4.2 RViz

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

4.2.1 演示

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

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

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

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

RViz和Gazebo是我们常用的ROS工具,更好的利用这些工具是我们ROS进阶的基础。

4.3 rqt

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

4.3.1 命令

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

rqt_graph

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

rqt_plot

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

rqt_console

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

4.3.2 测试

  1. 首先打开我们教材的模拟场景,输入roslaunch robot_sim_demo robot_spawn_launch
  2. 输入命令语句rqt_graph,显示出了当前环境下运行的Node和topic,十分直观的看到通信结构以及消息流向。注意在椭圆形的代表节点,矩形代表topic。
  3. 输入命令语句rqt_plot,显示出曲线坐标窗口,在上方输入框里添加或者删除topic,比如我们查看速度,可以在框里设置好topic后,移动机器人,就可以看到自动绘制的线速度或者角速度曲线。
  4. 输入命令语句rqt_console,显示日志的输出,配合rqt_logger_level查看日志的级别。

4.4 Rosbag

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

4.4.1 命令

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

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

4.5 Rosbridge

Rosbridge是一个用在ROS系统和其他系统之间的一个功能包,就像是它的名字一样,起到一个"桥梁"的作用,使得ros系统和其他系统能够进行交互.Rosbridge为非ROS程序提供了一个JSON API,有许多与Rosbridge进行交互的前端,包括一个用于Web浏览器交互的WebSocket服务器。Rosbridge_suite是一个包含Rosbridge的元程序包,用于Rosbridge的各种前端程序包(如WebSocket程序包)和帮助程序包。

4.5.1 协议与实现

Rosbridge是一个用在ROS系统和其他系统之间的一个功能包,就像是它的名字一样,起到一个"桥梁"的作用,使得ros系统和其他系统能够进行交互.Rosbridge为非ROS程序提供了一个JSON API,有许多与Rosbridge进行交互的前端,包括一个用于Web浏览器交互的WebSocket服务器。Rosbridge_suite是一个包含Rosbridge的元程序包,用于Rosbridge的各种前端程序包(如WebSocket程序包)和帮助程序包。

Rosbridge是基于ROS的,首先要确保自己正确的安装完成了ROS之后可以启动终端执行命令:

sudo apt-get install ros- <rosdistro> -rosbridge-server

中间的为自己的ROS版本,依照自己的版本进行安装.

4.6 moveit!

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

4.6.1 使用

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

roup节点充当整合器,整合多个独立组件,提供ROS风格的Action和service。move_group`通过ROS topic和action与机器人通讯,获取机器人的位置、节点等状态,获取数据再传递给机器人的控制器。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值