作者:艾特PONYO | 来源:互联网 | 2023-08-07 11:12
参考资料:https:www.icourse163.orgcourseISCAS-1002580008?tid1003713012中国大学MOOChttps:www.bi
参考资料:
https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012 //中国大学MOOC
https://www.bilibili.com/video/av23401751 //B站
《ROS操作系统入门讲义》PDF下载
链接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ
提取码:mziy
第五章 常用工具
- gazebo:ROS仿真工具 //目前最好
- rviz:可视化消息 //呈现接收信息
- rqt:数据流可视化工具 //直观查看消息的通信架构和流通路径
- rosbag:记录和回放ROS话题 //不记录service
- rosbridge:沟通ROS和外界的功能包
- moveit!:开源操作软件 //目前应用最广泛
注:gazebo——仿真;rviz、rqt——调试和可视化
1. Gazebo:提供一个虚拟的世界 //与ROS一样,由OSRF维护
- 机器人仿真工具、模拟器,独立的开源机器人仿真平台;
- 与ROS兼容最好
- 给机器人一个逼近现实的虚拟物理环境
- 仿真一些不依赖于具体硬件的算法和场景,例如图像识别、传感器数据融合处理、路径规划、SLAM等任务
2. rviz:the robot visualization tool 机器人可视化工具 //呈现接收到的信息
- 左侧的插件相当于一个个的subscriber,rviz接收消息,并显示
3. rqt:基于qt开发的可视化工具 //比rviz高级一个层次
(1)rqt_graph:显示通信架构,包括当前有哪些node(椭圆形)和topic(矩形)在运行,消息的流向是怎样的 //不显示service
(2)rqt_plot:将参数以曲线的形式绘制出来 //有利于分析动态参数的变化态势
(3)rqt_console:配合过滤器 rqt_logger_level 进行日志的查看
4. rosbag:提高性能,并避免消息的反序列化和重新排序 //同时提供命令行工具和代码API
- rosbag对软件包来操作(一个包是ROS用于存储ROS消息数据的文件格式),rosbag命令可以记录、回放和操作包。指令列表如下:
5. rosbridge:用于得ros系统和其他系统交互的功能包 //“桥梁”作用
主要包含两部分:协议和实现
(1)协议protocol:提供了非ROS程序与ROS通信的具体的格式规范,规范基于JSON格式,包括订阅topic,发布message,调用server,设置参数,压缩消息等。
示例:订阅topic的格式规范
注:此规范与所用的编程语言和传输方式无关,任何可以发送JSON格式的语言和传输方式都可以rosbridge protocol进行交流,并且与ROS进行交互
(2)实现implementation:rosbridge_suite元程序包 //实现rosbridge protocol并提供WebSocket传输层的包的集
- rosbridge_library:核心rosbridge软件包,负责获取JSON字符串并将命令发送到ROS,反过来接收处理ROS发过来的信息,将之转换为JSON字符串,并将结果转交给非ROS程序
- rosapi:通过服务调用来访问某些ROS操作,这些服务通常为ROS客户端库保留的服务,包括获取和设置参数,获取主题列表等
- rosbridge_server:提供传输层的WebSocket连接,使得浏览器可以与ROS“交谈”;roslibjs是一个浏览器的Javascript库,可以通过rosbridge_server与ROS进行交流
(3)安装:sudo apt-get install ros--rosbridge-server
6. moveit!:在机器人上最广泛使用的开源操作软件
- moveit!的使用通过为用户提供接口来调用它,包括C++、Python、GUI三种接口
- ROS中的 move_group 节点充当整合器,整合多个独立组件,提供ROS风格的Action和Service
- move_group 通过ROS topic和action与机器人通讯,获取机器人的位置、节点等状态,获取数据再传递给机器人的控制器
- move_group 节点获取到节点状态信息或者机器人变换信息时候,会通过控制器的接口去处理这些信息,比如进行坐标转换、规划场景、3D感知
- move_group 的结构比较容易扩展,不仅具有独立的能力如抓放,运动规划,也可扩展自公共类,但实际作为独立的插件运行