概念
- 节点Nodes: 一个节点是一个可执行文件, 使用ROS和其他节点通信
- 消息Messages: ROS数据类型, 被订阅/发布话题时使用
- 话题Topics: 节点可发布消息到话题/从话题订阅消息
- Master: ROS服务, 帮助节点找到彼此
- rosout: stdout/stderr的ROS功能
- roscore: Master+rosout+parameter服务, 使用ROS前启动
节点
- 节点不只是一个ROS包中的可执行文件
- 节点使用ROS客户端库来和其它节点通讯
- Client Libraries: 允许不同语言写的节点相互通讯
- rospy = python client library ; roscpp = c++ client library
- 节点可从话题发布/订阅消息
- 节点可提供或使用一个服务
rosrun [package_name] [node_name]
rosnode list
打印当前在跑的节点
rosnode info /rosout
打印节点信息
roscore # 启动
rosrun turtlesim turtlesim_node # 运行节点
rosrun turtlesim turtlesim_node __name:=my_turtle # 重命名节点
rosnode ping my_urtle
话题
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key # drive turtle around
turtle_teleop_key
(发布键盘输入)和turtlesim_node
(订阅同一个Topic)节点通过一个ROS_Topic通信,
rqt_graph
- 提供一个GUI插件以显示ROS计算图, 其组件是通用的所以其他想实现图形显示的包也可以依赖它
sudo apt-get install ros-<distro>-rqt # 安装rqt相关服务
sudo apt-get install ros-<distro>-rqt-common-plugins
rosrun rqt_graph rqt_graph # 运行节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7ircTx5-1663044730417)(http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics?action=AttachFile&do=get&target=rqt_graph_turtle_key2.png)]
- 节点:蓝绿色; 话题:红色
rostopic
- 获取话题信息
- rostopic [command] [topic]
- bw: 话题占用的带宽
- echo: 打印话题信息
- hz: 打印话题发布频率
- list: 打印活跃话题 -v 打印所有细节
- pub: 在话题上发布消息
- type: 打印话题类型
消息
- 订阅者和发布者必须处理同一种类型的消息
- rostopic type [topic]
rostopic type /turtle1/cmd_vel # 查看类型
rosmsg show geometry_msgs/Twist # 数据类型细节
- rostopic pub [topic] [msg_type] [args]
- -1 发布一次后退出
- – 下面参数无选项, 如参数有负号需添加
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]' # 发布一次
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]' # 1Hz循环发送
rqt_plot
- 绘出发布消息的坐标图
rosrun rqt_plot rqt_plot
服务
- 另一种节点相互通信的方式, 允许节点请求和收到答复
rosservice
- list: 打印活跃的服务
- call: 请求
rosservice call [service] [args]
- type: 打印服务类型
roseservice type [service]
- find: 通过服务类型寻找服务
- uri: 打印ROSRPC uri
rosservice type /clear # 一个不发送接收的服务
rosservice call /clear # 清屏
rosservice type /spawn | rossrv show # 查看并打印服务参数类型
rosservice call /spawn 2 2 0.2 "sszz" # 生成一只名为sszz的新海龟
rosparam
- 用于存储与操纵参数
- 参数服务器可存储整形,浮点,布尔,字典,列表(1,1.0,one,[1,2],{a:b,c:d})
- rosparam
- set: 设置参数
rosparam set [param_name] argv
- get: 获取参数
rosparam get [param_name]
- load: 从文件加载参数
rosparam load [file_name] [namespace]
- dump: 存储参数到文件
rosparam dump [file_name] [namespace]
- delete: 删除参数
- list: 列出参数名
- set: 设置参数
rosparam set /turtlesim/background_r 150 # 设置背景颜色参数
rosservice call /clear # 清屏使设置生效
rosparam get /turtlesim/background_g # 获取背景色参数
rosparam get / # 获取整个服务器的参数
rosparam dump params.yaml # 写入所有参数到文件
rosparam load params.yaml copy_turtle # 加载文件到新的命名空间
rosparam get /copy_turtle/turtlesim/background_b