以下是些没些营养的碎碎念,作为理清思路用!
1.发现缺失map->odom->base_link坐标变换,使用rqt查看正常的tf树:
发现map->odom->base_link由imupreintegration模块发出,odom->lidar_link由mapOptimization模块发出。
排除应该不是imu频率的问题;
1.发现是没有做第一次优化:也就是doneFirstOpt始终为 false
void imuOdometryHandler(const nav_msgs::Odometry::ConstPtr &odomMsg)
void imuHandler(const sensor_msgs::Imu::ConstPtr &imu_raw)
{
std::lock_guard<std::mutex> lock(mtx);
sensor_msgs::Imu thisImu = imuConverter(*imu_raw); // 将imu信息转换到雷达坐标系下表达,其实也就是获得雷达运动的加速度、角速度和姿态信息
imuQueOpt.push_back(thisImu);
imuQueImu.push_back(thisImu);
if (doneFirstOpt == false)
return;
2.怀疑没进入这个函数:也就是没有"lio_sam/mapping/odometry_incremental"话题发布出来(由mapOptimization的pubLaserOdometryIncremental发布出来)
void odometryHandler(const nav_msgs::Odometry::ConstPtr &odomMsg)
void laserCloudInfoHandler(const lio_sam::cloud_infoConstPtr &msgIn)
3.发现这个回调函数laserCloudInfoHandler也没进去,订阅的是lio_sam/feature/cloud_info,现在查一下话题发布出来了吗?
-没发布出来
4.擦,publishClouds()没进去,所以lio_sam/deskew/cloud_info没发出来!
5.擦!找到原因了!
if (!deskewInfo()){
ROS_INFO("deskew_info failed");
return;
}
原来是畸变矫正失败了。
6.畸变矫正为什么会失败呢?猜测可能是雷达的时间戳和imu的不一样。写一个程序测一下
7.妈呀!发现imu数据没存进来,证据
void imuDeskewInfo()
{
cloudInfo.imuAvailable = false;
while (!imuQueue.empty())
{
ROS_INFO("ImuQueue is not empty");
// 丢弃早于当前雷达帧开始扫描时间戳的缓存的imu帧
if (imuQueue.front().header.stamp.toSec() < timeScanCur - 0.01) {
imuQueue.pop_front();
}
else
break;
}
8.并不是imu没存进来,而是他们时间戳不一致!!!!气死了,看看这神奇的时间戳,imu的频率100hz,间隔0.01s,雷达频率为10hz,间隔0.1s,看来imu的时间以毫秒计的。
258216.000000000
258226.000000000
258236.000000000
258246.000000000
258256.000000000
258266.000000000
258276.000000000
258286.000000000
258296.000000000
258306.000000000
258316.000000000
258326.000000000
258336.000000000
258346.000000000
258356.000000000
258366.000000000
258376.000000000
1638538243.60303759574890
1638538243.70307374000549
1638538243.80305027961731
1638538243.90302062034607
1638538244.00300979614258
1638538244.10288214683533
1638538244.20300960540771
1638538244.30299758911133
1638538244.40297722816467
1638538244.50284433364868
1638538244.60297465324402
1638538244.70297312736511
1638538244.80297017097473
1638538244.90284919738770
1638538245.00297260284424
1638538245.10283350944519
1638538245.20288324356079