【ROS】节点&话题

概念

  • 节点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: 列出参数名
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

猜你喜欢

转载自blog.csdn.net/weixin_46143152/article/details/126831215