其他分享
首页 > 其他分享> > ROS学习笔记(22) -- sensor_msgs/JointStates

ROS学习笔记(22) -- sensor_msgs/JointStates

作者:互联网

目录

ROS sensor_msgs

Message / Service Types

1.消息头赋值

2.消息内容的赋值

3. 机器人实体订阅


ROS sensor_msgs

Message / Service Types

ROS Message TypesROS Service Types
BatteryState
CameraInfo
ChannelFloat32
CompressedImage
FluidPressure
Illuminance
Image
Imu
JointState
Joy
JoyFeedback
JoyFeedbackArray
LaserEcho
LaserScan
MagneticField
MultiDOFJointState
MultiEchoLaserScan
NavSatFix
NavSatStatus
PointCloud
PointCloud2
PointField
Range
RegionOfInterest
RelativeHumidity
Temperature
TimeReference
SetCameraInfo

为了使创建的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相同,经过上述两步赋值后,可正常发布消息。  

 

3. 机器人实体订阅

机器臂控制器订阅/joint_state_publisher 发布的/JointStates类型msg,驱动机械臂运动,URDF robot_state_publisher 同时订阅该话题,并发布基于模型的机械臂运动学正解至/tf话题,tf类型消息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:msgs,22,--,joint,state,数组,sensor,赋值
来源: https://blog.csdn.net/hhaowang/article/details/117826032