使用基本ROS 2消息
查找消息类型
示例HelperROS2CreateSampleNetwork
玫瑰色2 话题 列表 -t吨
主题消息类型 _____________________ _________________________________ {'/parameter_events'}{'rcl_interfaces/ParameterEvent'} {'/pose'}{'geometry_msgs/Twist'} {'/rosout'}{'rcl_interfaces/Log'} {“/scan”}{“sensor_msgs/LaserScan”}
scanData=ros2消息( “传感器信号/激光扫描” )
扫描数据= 带字段的结构: 消息类型:“sensor_msgs/LaserScan” 标题:[1×1结构] 角度最小值:0 角度最大值:0 角度增量:0 时间增量:0 扫描时间:0 范围最小值:0 范围最大值:0 范围:0 强度:0
清楚的 扫描数据
探索消息结构并获取消息数据
玫瑰色2 消息 显示 geometry_msgs/扭曲
#这表示自由空间中被分解成线性部分和角部分的速度。 矢量3线性 矢量3角度
控制节点=ros2节点( “/base_station” ); poseSub=ros2subscriber(控制节点, “/姿势” , “geometry_msgs/扭曲” )
poseSub= 具有以下属性的ros2subscriber: 主题名称:“/pose” 最新消息:[] 消息类型:“geometry_msgs/Twist” 新消息Fcn:[] 历史记录:'keeplast' 深度:10 可靠性:“可靠” 耐久性:“挥发性”
poseData=接收(poseSub,10)
姿势数据= 具有字段的结构: 消息类型:“geometry_msgs/Twist” 线性:[1×1结构] 角度:[1×1结构]
位置数据线性
安= 带字段的结构: 消息类型:“geometry_msgs/Vector3” x: 0.0206个 y: -0.0468 z: -0.0223
位置数据.角度
安= 带字段的结构: 消息类型:“geometry_msgs/Vector3” x: -0.0454 y: -0.0403号 z: 0.0323个
xPose=poseData.linear。 x个
x位置=0.0206
设置消息数据
扭转=ros2消息( “geometry_msgs/扭曲” )
扭转= 带字段的结构: 消息类型:“geometry_msgs/Twist” 线性:[1×1结构] 角度:[1×1结构]
扭曲线性y=5;
扭转线性
安= 带字段的结构: 消息类型:“geometry_msgs/Vector3” x: 0个 y: 5个 z: 0个
复制消息
tempMsgBlank=ros2消息( “传感器信号/温度” ); tempMsgCopy=tempMs空白
临时消息副本= 带字段的结构: 消息类型:“sensor_msgs/Temperature” 标题:[1×1结构] 温度:0 方差:0
tempMsgCopy.temperature=100
临时消息副本= 带字段的结构: 消息类型:“sensor_msgs/Temperature” 标题:[1×1结构] 温度:100 方差:0
临时消息空白
tempMsg空白= 具有字段的结构: 消息类型:“sensor_msgs/Temperature” 标题:[1×1结构] 温度:0 方差:0
温度计节点=ros2节点( “/温度计” ); tempPub=ros2publisher(温度计节点, “/温度” , “传感器信号/温度” ); tempMsgs(10)=tempMsgBlank; %预分配消息结构数组 对于 i测量=1:10 %复制空白消息字段 tempMsgs(iMeasure)=临时消息空白; %记录样品温度 tempMsgs(iMeasure).温度=20+兰登*3; %只有在观察到足够的数据后才能计算变化 如果 iMeasure>=5 tempMsgs(iMeasure).variance=var([tempMgs(1:iMeasure.temperature]); 结束 %将数据传递给订阅者 发送(tempPub,tempMsgs(iMeasure)) 结束 errorbar([温度],[温度变化])
保存和加载消息
poseData=接收(poseSub,10)
位置数据= 带字段的结构: 消息类型:“geometry_msgs/Twist” 线性:[1×1结构] 角度:[1×1结构]
保存( “poseFile.mat” , “poseData” )
清楚的 姿势数据
messageData=加载( “poseFile.mat” )
消息数据= 带字段的结构: 位置数据:[1×1结构]
消息数据.poseData
安= 带字段的结构: 消息类型:“geometry_msgs/Twist” 线性:[1×1结构] 角度:[1×1结构]
删除( “poseFile.mat” )
断开与ROS 2网络的连接
示例HelperROS2ShutDownSampleNetwork