自定义ros消息 vector

    最近楼主遇到一个问题,如何发布自定义消息结构的ros消息,前一篇文章已经成功将c++工程转移到ros环境中,今天我们来试着发送自定义ros消息吧!

    1、我在ros程序包中新建一个msg文件夹,用于存储msg消息相关定义,之后便可把相关ros消息结构写在该文件夹下

    

 2、配置cmakelists

find_package(catkin REQUIRED COMPONENTS
  message_generation
  roscpp
  rospy
  std_msgs
)
add_message_files(  
  FILES  
  #Num.msg  
  #carOdom.msg
  translational.msg
  imu.msg
  mcs.msg
)
generate_messages(  DEPENDENCIES   std_msgs)

3、package.xml文件中要保证有下面的几行   

  # package.xml
  <build_depend>message_generation</build_depend>
  <run_depend>message_runtime</run_depend>

4、此时,catkin_make之后便可以发送自定义ros消息了,介绍下使用方法:

   a、加入必要的头文件   

#include<ros/ros.h>
#include<ros程序包名/imu.h>//下同
#include<multicol_slam/mcs.h>
#include<multicol_slam/translational.h>
b、
cv::Matx44d m_R=cv::Matx44d::eye();
	m_R=(cConverter::invMat(mpLastKeyFrame->GetPose()))*mCurrentFrame.GetPose();
	multicol_slam::imu m_imu;
	multicol_slam::translational m_translational;
	multicol_slam::mcs m_mcs;
	m_imu.acc1=0.0;
	m_imu.acc2=0.0;
	m_imu.acc3=0.0;
	m_imu.grw1=0.0;
	m_imu.grw2=0.0;
	m_imu.grw3=0.0;
	m_imu.imu_timestamp=0.0;
	m_mcs.imu_value.push_back(m_imu);
	
	m_translational.a11=m_R(0,0);
	m_translational.a12=m_R(0,1);
	m_translational.a13=m_R(0,2);
	m_translational.a14=m_R(0,3);
	m_translational.a21=m_R(1,0);
	m_translational.a22=m_R(1,1);
	m_translational.a23=m_R(1,2);
	m_translational.a24=m_R(1,3);
	m_translational.a31=m_R(2,0);
	m_translational.a32=m_R(2,1);
	m_translational.a33=m_R(2,2);
	m_translational.a34=m_R(2,3);
	m_translational.a41=m_R(3,0);
	m_translational.a42=m_R(3,1);
	m_translational.a43=m_R(3,2);
	m_translational.a44=m_R(3,3);
	m_mcs.translational_value=m_translational;
	m_mcs.timestamp=pKF->mTimeStamp;
	
	 my_public.publish(m_mcs);

     

            好了,该评论点赞了!就在下面,快去!

猜你喜欢

转载自blog.csdn.net/m_zhangjingdong/article/details/79617966