• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

人工智能 bbtang5568 2589次浏览 0个评论

为了使创建的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数组的第一个元素赋值

  2.{}赋值 该方法类似于C/C++声明数组并赋初值  

joint_state.name={"joint1","joint2","joint3"};//指定数组大小,并赋值
joint_state.position={0,0,0};

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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS URDF(五): sensor_msgs::JointState 消息类型的赋值
喜欢 (0)

您必须 登录 才能发表评论!

加载中……