ROS轻松入门(一)—— 基本概念:node节点、topic通信、service通信

node节点

ROS 中的每个节点都应该负责单一的、模块化的目的,例如控制车轮马达或发布来自激光测距仪的传感器数据。每个节点都可以通过主题、服务、操作或参数从其他节点发送和接收数据。

一个完整的机器人系统由许多协同工作的节点组成。在 ROS 2 中,单个可执行文件(C++ 程序、Python 程序等)可以包含一个或多个节点。

简单来说,节点就是一个功能模块。

  • 运行节点:
ros2 run <package_name> <executable_name>
  • 获取节点列表:
ros2 node list
  • 获取节点信息:
ros2 node info <node_name>

topic通信

ROS 2 将复杂系统分解为许多模块化节点。topic是 ROS 的重要元素,它充当节点交换消息的总线。

一个节点可以向任意数量的主题发布数据,同时订阅任意数量的主题。

主题是数据在节点之间移动的主要方式之一,因此在系统的不同部分之间移动。

  • 查看topic列表
ros2 topic list
  • topic回显
ros2 topic echo <topic_name>
  • topic详情
ros2 topic info /turtle1/cmd_vel
  • topic数据类型
ros2 topic type <topic_name> /turtle1/cmd_vel
  • 显示消息数据结构
ros2 interface show <topic消息名字>
  • 发布topic消息
ros2 topic pub <topic_name> <msg_type> <args>

# example:  ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

service通信

service是 ROS 图中节点的另一种通信方式。服务基于调用和响应模型,而不是topic的发布者-订阅者模型。虽然topic允许节点订阅数据流并获得持续更新,但service仅在客户端专门调用它们时才提供数据。

  • service列表
ros2 service list
  • service的类型

服务具有描述服务的请求和响应数据的结构的类型。服务类型的定义类似于主题类型,除了服务类型有两部分:一个消息用于请求,另一个用于响应。

ros2 service type <service_name>
  • 带类型的service列表
ros2 service list -t
  • 查看特定类型的服务
ros2 service find <type_name>
  • 查看服务类型的数据结构
ros2 service interface show <type_name>
  • 调用service
ros2 service call <service_name> <type_name> <args>

# example: ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
  • 查看ROS中已经定义好的数据类型
ros2 interface list
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值