ROS URDF(五): sensor_msgs::JointState 消息类型的赋值

8 篇文章 0 订阅
6 篇文章 1 订阅

为了使创建的URDF机器人模型正确运动,必须给出robot_state_publisher 节点所需的sensor_msgs::JointState型topic:joint_states。可参见:robot_state_publisher

sensor_msgs::JointState消息格式为:

std_msgs/Header header
string[] name
float64[] position
float64[] velocity
float64[] effort

那么,如何正确给sensor_msgs::JointState型消息赋值呢?

从消息格式可知,该消息类型包含消息头std_msgs/Header header和数据内容两部分,因此赋值时也需要正确处理这两部分内容,缺一不可,否则消息不能正确发布,并有异常报警导致程序异常。

假设声明消息变量为:

sensor_msgs::JointState joint_state;

1.消息头赋值

消息头的赋值仅需处理如下即可:

joint_state.header.stamp = ros::Time::now();

2.消息内容的赋值

从上述消息格式中可知,该消息数据包含多个不同含义的数组,并且该数组没有指定数组长度,因此在赋值时需要明确指定其数组长度,并赋值。方法有两种:

  1. resize指定数组长度,再赋值
joint_state.name.resize(3); //指定name数组长度
joint_state.position.resize(3);//指定position数组长度
joint_state.name[0] ="joint1";//name数组的第一个元素赋值
joint_state.position[0] = 0;//position数组的第一个元素赋值
  1. {}赋值
    该方法类似于C/C++声明数组并赋初值
joint_state.name={"joint1","joint2","joint3"};//指定数组大小,并赋值
joint_state.position={0,0,0};

velocity和effort相同,经过上述两步赋值后,可正常发布消息。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值