liosam 中inertiallabs_ins的ins话题和要求的imu话题格式不符问题

参考 https://github.com/VT-ASIM-LAB/inertiallabs_gnss_driver
中的il_ins.cpp进行新话题sensor_msgs/imu的发布。

话题格式如下

$:~/catkin_ins_ws$ rosmsg show sensor_msgs/Imu
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/Quaternion orientation
  float64 x
  float64 y
  float64 z
  float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity
  float64 x
  float64 y
  float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration
  float64 x
  float64 y
  float64 z
float64[9] linear_acceleration_covariance

另一个新话题sensor_msgs/NavSatFix的格式

$:~/catkin_ins_ws$ rosmsg show sensor_msgs/NavSatFix
uint8 COVARIANCE_TYPE_UNKNOWN=0
uint8 COVARIANCE_TYPE_APPROXIMATED=1
uint8 COVARIANCE_TYPE_DIAGONAL_KNOWN=2
uint8 COVARIANCE_TYPE_KNOWN=3
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
sensor_msgs/NavSatStatus status
  int8 STATUS_NO_FIX=-1
  int8 STATUS_FIX=0
  int8 STATUS_SBAS_FIX=1
  int8 STATUS_GBAS_FIX=2
  uint16 SERVICE_GPS=1
  uint16 SERVICE_GLONASS=2
  uint16 SERVICE_COMPASS=4
  uint16 SERVICE_GALILEO=8
  int8 status
  uint16 service
float64 latitude
float64 longitude
float64 altitude
float64[9] position_covariance
uint8 position_covariance_type

修改后的il_ins.cpp

#include<iostream>
#include<unistd.h>
#include<math.h>
#include<stdlib.h>
#include <ros/ros.h>

//Inertial Labs source header
#include "ILDriver.h"

//adding message type headers
#include <inertiallabs_msgs/sensor_data.h>
#include <inertiallabs_msgs/ins_data.h>
#include <inertiallabs_msgs/gps_data.h>
#include <inertiallabs_msgs/gnss_data.h>
#include <inertiallabs_msgs/marine_data.h>
//添加标准imu头文件
#include <sensor_msgs/Imu.h>
//添加标准gps头文件
#include <sensor_msgs/NavSatFix.h>
//Publishers

struct Context {
   
	ros::Publisher publishers[7];
	std::string imu_frame_id;
};

void publish_device(IL::INSDataStruct *data, void* contextPtr)
{
   
	Context * context = reinterpret_cast<Context*>(contextPtr);
	static int seq=0;
	seq++;

	inertiallabs_msgs::sensor_data msg_sensor_data;
	inertiallabs_msgs::ins_data msg_ins_data;
	inertiallabs_msgs::gps_data msg_gps_data;
	inertiallabs_msgs::gnss_data msg_gnss_data;
	inertiallabs_msgs::marine_data msg_marine_data;
	//添加sensor_msgs::NavSatFix和sensor_msgs::Imu msg_imu;
	sensor_msgs::Imu msg_imu;
	sensor_msgs::NavSatFix msg_GPSFix;

	ros::Time timestamp = ros::Time::now();
	//添加常量
	double g = 9.80655;
	double deg_to_rad = 0.0174533;

	if (context->publishers[0].getNumSubscribers() > 0)
	{
   
		msg_sensor_data.header.seq = seq;
		msg_sensor_data.header.stamp = timestamp;
		msg_sensor_data.header.frame_id = context->imu_frame_id;
		msg_sensor_data.Mag.x = data->Mag[0];
		msg_sensor_data.Mag.y = data->Mag[0];
		msg_sensor_data.Mag.z = data->Mag[0];
		msg_sen
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值