参考文献:ROS2 Foundation - An introduction to core concepts
计算图(Computation Graph)用于显示ROS进程中点对点网络里的数据等。
在机器人系统中具备单一、模块化目标的元件。
用于创建发布者、订阅者、服务等
最常见的 ROS 客户端库
运行 ROS 节点的命令
ros2 run <package_name> <executable_name> [arguments]
无需主节点即可发现其他节点!(ROS2特色)
ROS1 节点通讯
ROS2节点通信
使用ROS_DOMAIN_ID:
无主节点缺陷…… (比如,没有主节点故障!)
节点结构
如果是嵌入式设备,则有:
结构图如下:
完美支持ROS2。
在基于机器人操作系统的机器人应用中弥补资源受限的微控制器和更大处理器之间的差距。
几乎所有机器人产品都使用微控制器。 典型的原因是:
另一个重要原因是安全性,但请注意,micro-ROS 不是根据任何安全标准开发的。
ROS2 客户端库
基本原理 将流程布局决策推迟到部署时
继承自 Node 类
rclpy.Node 的子类
rclcpp.Node 的子类
使用 ROS 2 服务 API:通过以下方式加载组件
或者:
ROS 中间件提供以下功能:
只有在以下情况下才能进行通信:
组件之间交换信息的数据结构
Bool | ColorRGBA | Float32MultiArray | Int16 | Int64 | MultiArrayDimension | UInt16 | UInt64 |
---|---|---|---|---|---|---|---|
Byte | Duration | Float64 | Int16MultiArray | Int64MultiArray | MultiArrayLayout | UInt16MultiArray | UInt64MultiArray |
ByteMultiArray | Empty | Float64MultiArray | Int32 | Int8 | String | UInt32 | UInt8 |
Char | Float32 | Header | Int32MultiArray | Int8MultiArray | Time | UInt32MultiArray | UInt8MultiArray |
geometry_msgs/Point.msg | geometry_msgs/Quaternion.msg | geometry_msgs/Pose.msg |
---|---|---|
float64 x float64 y float64 z | float64 x float64 y float64 z float64 w | geometry_msgs/Point position geometry_msgs/Quaternion orientation |
协调执行可用通信任务的顺序和时间
默认执行器
rclpy.init(args=args)
talker = Talker()
rclpy.spin(talker)
内置执行器
executor = SingleThreadedExecutor()
talker = Talker()
listener = Listener()
executor.add_node(talker)
executor.add_node(listener)
executor.spin()
-End-