轉載-自定義ros消息 vector

原文鏈接:https://blog.csdn.net/m_zhangjingdong/article/details/79617966

原創:https://blog.csdn.net/m_zhangjingdong/article/details/79617966

 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);
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章