設(shè)置消息信息
ROS 消息是結(jié)構(gòu)??梢灾苯訌?fù)制它們以生成新的消息。副本和原始消息都有自己的數(shù)據(jù)。創(chuàng)建一條類型為geometry_msgs/Twist的消息。
twist = rosmessage("geometry_msgs/Twist","DataFormat","struct")
twist = struct with fields:
MessageType: ‘geometry_msgs/Twist’
Linear: [1x1 struct]
Angular: [1x1 struct]
缺省情況下,此消息的數(shù)字字段初始化為0。您可以修改此消息的任何屬性。例如Y等于5。
twist.Linear.Y = 5;
查看消息數(shù)據(jù)以確保您的更改生效
twist.Linear
ans = struct with fields:
MessageType: ‘geometry_msgs/Vector3’
X: 0
Y: 5
Z: 0
一旦用您的數(shù)據(jù)填充了消息,您就可以將其用于發(fā)布者、訂閱者和服務(wù)。
參見“與ROS發(fā)布者和訂閱者交換數(shù)據(jù)”和“調(diào)用和提供ROS服務(wù)”示例。然后就可以通過publish發(fā)布我們設(shè)置的消息信息了
thermometerNode = ros2node("/thermometer");
tempPub = ros2publisher(thermometerNode,"/twist","sensor_msgs/geometry_msgs/Twist");
tempMsgs(10) = twist; % Pre-allocate message structure array
for iMeasure = 1:10
% Copy blank message fields
tempMsgs(iMeasure) = twist;
% Record sample message
tempMsgs(iMeasure).Linear.Y = 20+randn*3;
% Only calculate the variation once sufficient data observed
if iMeasure >= 5
tempMsgs(iMeasure).Linear.X= var([tempMsgs(1:iMeasure).Linear.Y]);
end
% Pass the data to subscribers
send(tempPub,tempMsgs(iMeasure))
end
errorbar([tempMsgs.Linear.Y],[tempMsgs.Linear.X])
-
matlab
+關(guān)注
關(guān)注
181文章
2960瀏覽量
230030 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6817瀏覽量
88743 -
ROS
+關(guān)注
關(guān)注
1文章
276瀏覽量
16942
發(fā)布評論請先 登錄
相關(guān)推薦
評論