sendgoal
将目标消息发送到动作服务器
描述
例子
创建并发送ROS动作目标消息
此示例显示了如何创建目标消息并将其发送到ROS网络上已经有效的ROS Action服务器。您必须创建一个ROS Action客户端才能连接到该服务器。要运行操作服务器,此命令用于ROS分布:
roslaunch turtlebot_actions server_turtlebot_move.launch
之后,使用石榴石
使用正确的IP地址。
石榴石('192.168.17.129',11311)
初始化全局节点/matlab_global_node_27318带有nodeuri http://192.168.17.1:60260/
创建ROS动作客户端并获取目标消息。这Actclient
对象连接到已经运行的ROS Action服务器。这目标
是一个有效的目标消息。用您的特定目标更新消息参数。
[actclient,gotalmsg] = rosactionclient('/turtlebot_move');disp(gotalmsg)
ros turtlebotmovegoal带有属性的消息:MessageType:'Turtlebot_actions/turtlebotmovegoal'turndistance:0 forwarddistance:0使用ShowDetails显示消息的内容
您还可以使用罗斯梅斯
和动作客户端对象。此消息将线性和角速度命令发送到Turtlebot®机器人。
gotalmsg = rosmessage(actclient);disp(gotalmsg)
ros turtlebotmovegoal带有属性的消息:MessageType:'Turtlebot_actions/turtlebotmovegoal'turndistance:0 forwarddistance:0使用ShowDetails显示消息的内容
修改目标消息参数,然后将目标发送到操作服务器。
partemsg.forwarddistance = 2;sendgoal(ActClient,Gotalmsg)
发送和取消ROS动作目标
此示例显示了如何发送和取消ROS动作目标。操作类型必须在运行的操作服务器之前事先设置。
您必须设置'/fibonacci'
动作类型。要运行此操作服务器,请在ROS系统上使用以下命令:
Rosrun ActionLib_tutorials fibonacci_server
首先,设置ROS动作客户端。然后,发送带有修改参数的目标消息。最后,取消您的目标和动作服务器上的所有目标。
连接具有指定IP地址的ROS网络。创建一个连接到ROS网络的ROS Action客户端RosactionClient
。指定操作名称。等待客户端连接到服务器。
石榴石('192.168.203.133',11311)
初始化nodeuri http://192.168.203.1:55284/初始化全局节点/matlab_global_node_18287
[actclient,gotalmsg] = rosactionclient('/fibonacci',,,,“ dataformat',,,,“结构”);Waitforserver(ActClient);
发送带有修改参数的目标消息。等待目标完成执行。
gotalmsg.order = int32(4);[resultmsg,resultstate] = sendgoalandwait(actclient,gotalmsg)
resultmsg =带有字段的结构:MSSAGETYPE:“ ActionLib_Tutorials/fibonacciresult'序列:[0 1 1 1 2 3]
结果州='成功'
Rosshowdetails(resultmsg)
ans ='MessageType:actionlib_tutorials/fibonacciresult序列:[0,1,1,2,3]'
在不等待的情况下发送新的目标消息。
gotalmsg.order = int32(5);sendgoal(ActClient,Gotalmsg)
取消ROS动作客户端的目标,Actclient
。
取消行动(ActClient)
取消动作服务器上的所有目标Actclient
连接到。
取消行人(ActClient)
删除操作客户端。
删除(ActClient)
与ROS网络断开连接。
Rosshutdown
使用Nodeuri http://192.168.203.1:55284/关闭全局节点/matlab_global_node_18287
输入参数
客户
-ROS动作客户端
SimpleActionClient
对象句柄
ROS Action客户端,指定为SimpleActionClient
对象句柄。这个简单的操作客户端使您一次跟踪一个目标。
目标
-ROS动作目标信息
信息
对象句柄|结构体
ROS动作目标消息,指定为信息
对象处理或结构。使用您的目标详细信息更新此消息,然后使用它发送给ROS Action客户端sendgoal
或者sendgoalandwait
。
扩展功能
C/C ++代码生成
使用MATLAB®CODER™生成C和C ++代码。
用法注释和限制:
金宝app仅针对构建类型支持
可执行
。使用MATLAB功能不支持块。金宝app
版本历史记录
在R2019b中引入R2021A:ROS消息结构
将来发行的行为变化
现在,您可以将消息创建为与消息对象属性匹配的字段的结构。使用结构通常会改善创建,更新和使用ROS消息的性能,但是设置时不再验证消息字段。通过网络发送时,将验证来自结构的消息类型和相应的字段值。
要使用ROS消息作为结构,请使用“ dataformat”
创建发布者,订阅者或其他ROS对象时的名称值参数。这些对象生成的任何消息都将利用结构。
pub = rospublisher(“/扫描”,,,,“ sensor_msgs/laserscan”,,,,“ dataformat”,,,,“结构”)msg = rosmessage(pub)
您还可以直接创建消息作为结构,但请确保将数据格式指定为“结构”
对于发布者,订户或其他ROS对象。ROS对象默认情况下仍然使用消息对象。
msg = rosmessage(“/扫描”,,,,“ sensor_msgs/laserscan”,,,,“ dataformat”,,,,“结构”)...pub = rospublisher(“/扫描”,,,,“ sensor_msgs/laserscan”,,,,“ dataformat”,,,,“结构”)
在将来的版本中,ROS消息将默认使用结构,ROS消息对象将被删除。
有关更多信息,请参阅使用消息结构提高ROS的性能。
matlab命令
您单击了与此MATLAB命令相对应的链接:
通过在MATLAB命令窗口中输入该命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
如何获得最佳网站性能
选择中国网站(中文或英语)以获得最佳场地性能。其他Mathworks乡村网站未针对您所在的访问进行优化。
美洲
- AméricaLatina(Español)
- 加拿大(英语)
- 美国(英语)