在ROS中发布IMU数据

本文主要是来发布sensor_msgs/Imu类型的消息,其中IMu的数据为虚拟的。

1.在自己的工作空间中创建ros程序包 (这个包依靠std_msgs、roscpp、rospy)
catkin_create_pkg imu_publish std_msgs rospy roscpp

进入创建的程序包可以看到一下文件或文件夹

   CMakeLists.txt     include     package.xml    src
2.进入src文件夹内创建imu_data.cpp文件,并将一下代码复制

// Step 1:  Include Library Headers:
//发布imu的数据到IMU_data
#include <ros/ros.h> 
#include <sensor_msgs/Imu.h>

int main(int argc, char** argv)
{
    // Step 2: Initialization:
       ros::init(argc, argv, "imu");     
    ros::NodeHandle n;  

    ros::Publisher IMU_pub = n.advertise<sensor_msgs::Imu>("IMU_data", 20);  
    ros::Rate loop_rate(50);  
    while(ros::ok())
    {
                   
            sensor_msgs::Imu imu_data;
            imu_data.header.stamp = ros::Time::now();
            imu_data.header.frame_id = "base_link";
            //四元数位姿,所有数据设为固定值,可以自己写代码获取IMU的数据,,然后进行传递
           imu_data.orientation.x = 0;
            imu_data.orientation.y = -1;
            imu_data.orientation.z = -5;
            imu_data.orientation.w = 6;
            //线加速度
            imu_data.linear_acceleration.x = 0.01; 
            imu_data.linear_acceleration.y = 0.02;
            imu_data.linear_acceleration.z = 0.03;
	    //角速度
            imu_data.angular_velocity.x = 0.05; 
            imu_data.angular_velocity.y = 0.06; 
            imu_data.angular_velocity.z = 0.07;



            IMU_pub.publish(imu_data);
       

       
        ros::spinOnce();  
        loop_rate.sleep();  
    }

    return 0;
}

在CMakeLists.txt文件中添加

add_executable(imu_data src/imu_data.cpp)
target_link_libraries(imu_data ${catkin_LIBRARIES})

3.进入工作空间的根目录下编译(我的工作空间为catkin_ws)

 

catkin_make -DCATKIN_WHITELIST_PACKAGES="imu_publish" 

在这里我们只编译刚才创建的包。

4运行 

roscore

rosrun imu_pubilsh  imu_data

5.通过rostopic list查看发布的话题 如下

/IMU_data
/rosout
/rosout_agg

6 通过rostopic echo /IMU_data 查看发布话题的具体消息:

header:
  seq: 5277
  stamp:
    secs: 1530631669
    nsecs: 639033327
  frame_id: "base_link"
orientation:
  x: 0.0
  y: -1.0
  z: -5.0
  w: 6.0
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
  x: 0.05
  y: 0.06
  z: 0.07
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
  x: 0.01
  y: 0.02
  z: 0.03
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

7.也可以编写launch文件来运行  在imu_publish文件下新建launch文件夹,新建imu.launch,复制一下代码:

<launch>
  <node name="imu_data"  pkg="imu_publish"  type="imu_data" output="screen">
 </node>

</launch>
运行roslaunch imu_publish imu.launch


主要参考:

https://www.cnblogs.com/21207-iHome/p/7832355.html



猜你喜欢

转载自blog.csdn.net/u012926144/article/details/80905787
今日推荐