古月居ROS入门21讲学习笔记(核心概念6-8课)
第六课 ROS是什么
ROS=通信机制+开发工具+应用功能+生态系统
通信机制
松耦合分布式通信
开发工具
命令行&编译器
TF坐标变换
QT工具箱
Rviz
Gazebo
应用功能
SLAM
Navigation
Movelt!
关注接口,输入输出就行,其次再关注算法就行。先Google有无类似需求的已有功能
生态系统
发行版
软件源
ROS wiki 资料最完整整理论坛,但是整理的比较松散,建议先Google
邮件列表
ROS Answers
博客www.ros.org/news
第七课 ROS核心概念
通信机制
- 节点
节点在系统中名字是唯一的
- 节点管理器
就像节点的“婚姻介绍所”牵线配对
异步通讯——话题
类似于写信
- 话题
单向通讯,从发布端到订阅端,这个数据传输通道叫话题。同一个话题的订阅者和发布者可以不唯一。
- 消息
话题的数据类型数据结构。
可以用.msg文件自定义消息文件的接口。
同步通讯——服务
类似于打电话,带有反馈。
有客户端,服务端。客户端请求,服务器应答。
参数
参数是全局共享字典,可以通过网络访问共享。
要有参数名,参数值,例如:‘foo’的值是‘1’,在图中被发布订阅传输。
建议储存静态的,不变的数据
文件系统
-
功能包:基本单元
-
功能包清单
-
元功能包:用于同一个目的的多个功能包的集合
第八课 ROS命令行工具的使用
常用命令
rostopic
rosservice
rosnode
rosparam
rosmsg
rossrv
后续课程会慢慢讲到
以小海龟为例理解ros机理
-
打开一个终端,输入roscore
-
新打开一个终端,输入rosrun turtlesin turtlesin_node
rosrun是运行功能包的指令,rosrun (功能包名)(节点名) -
新打开第三个终端,输入 rosrun turtlesin turtle_teloop_key,就可以用方向键控制小海龟。
-
新打开第四个终端,输入rqt_graph,可以看到通讯系统。
1.rosnode
rosnode list:可以看有哪些节点
rosnode info:可以看节点信息。例如rosnode info /turtlesin
2.rostopic
rostopic list:看所有话题
rostopic pub:发布话题例如:rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist 再按两次Tab键补全线速度和角速度,可以修改。-r是循环重复发布该指令的意思,10 是每一秒发送10遍指令。
3.rosservice
rosservice list :看所有服务
rosservice call:调用服务,例如:rosservice call /spwan
4.rosbag
话题记录:rosbag record -a -o cmd_record. -a是全部都记录,-o是记成压缩包,后面跟压缩包名称。
话题复现:rosbag play cmd_record.bag
做比较麻烦的实验的时候,记录好,然后就可以调整参数来改了,不用重新实验。