**
组合惯导与里程计融合后,发布信息到robot_pose_ekf,报错显示Covariance specified for measurement on topic gps is zero的问题
**
1、解析原始GPS数据,一般提取经纬度、状态,按照sensor_msgs::NavSatFix 格式进行发布
2、robot_pose_ekf里面需要的gps数据格式与此不同,需要进行 GPS坐标与UTM坐标的转换
2.1 消息
gps_common定义了两个通用消息,供GPS驱动程序输出:gps_common/GPSFix和gps_common/GPSStatus。
在大多数情况下,这些消息应同时发布,并带有相同的时间戳。
2.2 utm_odometry_node节点
utm_odometry_node将经纬度坐标转换为UTM坐标。
2.3 订阅的话题
fix (sensor_msgs/NavSatFix):GPS测量和状态
2.4 发布的话题
odom (nav_msgs/Odometry):UTM编码的位置
参考原文链接:https://blog.csdn.net/learning_tortosie/article/details/103349907
https://blog.csdn.net/learning_tortosie/article/details/103349907
Github: http://wiki.ros.org/gps_common
3、转换后,robot_pose_ekf订阅gps话题,但是报错Covariance specified for measurement on topic gps is zero,是因为在一开始发布gps消息时候协方差矩阵对角线为0,因此,
方法1:在gps原始数据发布时,加入协方差矩阵
sensor_msgs::NavSatFix gps_data;
gps_data.header.stamp = ros::Time::now();
gps_data.header.frame_id = "gps_link";
gps_data.status.status= stoi(Status);
ROS_INFO("gps_data.status.status:%d",gps_data.status.status);
gps_data.latitude=stof(Lattitude);
gps_data.longitude=stof(Longitude);
gps_data.altitude=stof(Altitude);
gps_data.position_covariance={
0.002,0.0,0.0,
0.0,0.002,0.0,
0.0,0.0,0.002};
方法2 参考
https://blog.csdn.net/skyrim_H/article/details/106636862
将`在这里插入代码片
void OdomEstimationNode::odomCallback(const OdomConstPtr& odom)
{
*if (odom_covariance_(1,1) == 0.0){
SymmetricMatrix measNoiseOdom_Cov(6); measNoiseOdom_Cov = 0;
measNoiseOdom_Cov(1,1) = pow(0.01221,2); // = 0.01221 meters / sec
measNoiseOdom_Cov(2,2) = pow(0.01221,2); // = 0.01221 meters / sec
measNoiseOdom_Cov(3,3) = pow(0.01221,2); // = 0.01221 meters / sec
measNoiseOdom_Cov(4,4) = pow(0.007175,2); // = 0.41 degrees / sec
measNoiseOdom_Cov(5,5) = pow(0.007175,2); // = 0.41 degrees / sec
measNoiseOdom_Cov(6,6) = pow(0.007175,2); // = 0.41 degrees / sec
odom_covariance_ = measNoiseOdom_Cov;
}*
my_filter_.addMeasurement(StampedTransform(odom_meas_.inverse(), odom_stamp_, base_footprint_frame_, "wheelodom"), odom_covariance_);
```````````````````````
};
`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)