lio-sam实车调试之添加gps数据

1.尝试加入gps:



    

    
    
    
    
        
    

    
    
        
        
        
        
        
    

rosrun rqt_graph rqt_graph查看节点和话题的关系

lio-sam实车调试之添加gps数据_第1张图片

 可见/gps/fix和/odometry/navsat传入/navsat节点,转成/odometry/gps发布出来

/imu_correct和/odometry/gps传入/ekf_gps节点,转成/odometry/navsat发布出来

------------------

将ins570d的驱动中gps_data的frame_id变成navsat_link,我分析理论上不能将gps和imu的坐标系都设置为base_link,因为会造成,两个base_link值,造成该坐标系跳动的情况。

1.验证park.bag中/gps/fix的frame_id是什么?

使用命令,rostopic echo /gps/fix |grep frame_id

是navsat_link,所以我们应该把frame_id设置为navsat_link,navsat节点读入/gps/fix,得到/odometry/gps的frame_id为odom。ekf_gps节点输出的/odometry/navsat的frame_id也为odom。由此可以推测,navsat节点自动做了gps的坐标转换,猜测将原来的wgs84格式转成了odom。现在让我们搜寻资料,确认这一猜测。

2.将ins570d做单位转换,其中经纬度用度表示,高度用米表示,纬度北,经度东,高度天。可以看出坐标系基于ENU坐标系。 Position covariance [m^2]

sensor_msgs::NavSatFix gps_data;
gps_data.header.stamp = ros::Time::now();
gps_data.header.frame_id = "navsat_link";
gps_data.latitude = latitudef;
gps_data.longitude = longitudef;
gps_data.altitude = altitudef;
gps_data.status.status = ins_statusf;
gps_data.position_covariance_type = position_type;
gps_data.position_covariance[0]=pow(latstd,2);
gps_data.position_covariance[4]=pow(lonstd,2);
gps_data.position_covariance[8]=pow(hstd,2);
gps_pub.publish(gps_data);

例如:latitudef=temp*1e-7,查找手册,单位是deg,区间是[-90,90]其中,position_covariance表示定位精度信息(m级别)的平方,这个定位精度信息,猜测是gps的定位精度。

ins_statusf类型:如下没看懂

lio-sam实车调试之添加gps数据_第2张图片

 所以这个不用改,已经是完美的gps数据了。

OK,明天搞个实车测试,录个bag包。

ok,适合gps的yaml文件也编写完毕了。

你可能感兴趣的:(多传感器融合定位学习,自动驾驶)