• 【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
    
    • 1
    • 2
    • 3
    • 4

    话题

    roscore
    rosrun turtlesim turtlesim_node
    rosrun turtlesim turtle_teleop_key  # drive turtle around
    
    • 1
    • 2
    • 3
    • 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 # 运行节点
    
    • 1
    • 2
    • 3
    • 4

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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 # 数据类型细节
    
    • 1
    • 2
    • 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循环发送
    
    • 1
    • 2

    rqt_plot

    • 绘出发布消息的坐标图
    rosrun rqt_plot rqt_plot
    
    • 1

    服务

    • 另一种节点相互通信的方式, 允许节点请求和收到答复
    • 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的新海龟
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Java-开发技术框架-Mybatis --- HelloWorld强化
    十三、Vue CLI(1)
    STM32 - FLASH 笔记
    细品spring设计,可扩展性编程Aware接口,Adapter类
    python从入门到出家(五)循环语句
    【RocketMQ】NameServer的启动
    OceanBase 4.1解读:读写兼备的DBLink让数据共享“零距离”
    hue编译、启动、使用
    初学Docker要掌握哪些概念?
    [C++]AVL树怎么转
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126831215