在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



  • 15
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值