1.首先阅读一下recolization的源码,看一下和mapping有啥区别:

-imageProjection.cpp中:

cloudInfo.imuPreintegrationResetId = round(startOdomMsg.pose.covariance[0]);

计算相对变换(从雷达的起始时刻到当前imu数据来的时候)

-imuPreintegration.cpp中:

int imuPreintegrationResetId = 0;
订阅odom的里程计?猜测应该是方便显示ros::Subscriber subPoseOdomToMap;geometry_msgs::PoseStamped poseOdomToMap;subPoseOdomToMap = nh.subscribe<geometry_msgs::PoseStamped>("lio_sam/mapping/pose_odomTo_map", 1,&IMUPreintegration::odomToMapPoseHandler,      this, ros::TransportHints().tcpNoDelay());pubImuPath = nh.advertise<nav_msgs::Path>("lio_sam/imu/path", 1);map_to_odom    = tf::Transform(tf::createQuaternionFromRPY(0, 0, 0), tf::Vector3(0, 0, 0));
void odomToMapPoseHandler(const geometry_msgs::PoseStamped::ConstPtr& poseOdomToMapmsg){tf::Quaternion q_tem;q_tem.setX(poseOdomToMapmsg->pose.orientation.x);q_tem.setY(poseOdomToMapmsg->pose.orientation.y);q_tem.setZ(poseOdomToMapmsg->pose.orientation.z);q_tem.setW(poseOdomToMapmsg->pose.orientation.w);tf::Vector3 p_tem(poseOdomToMapmsg->pose.position.x, poseOdomToMapmsg->pose.position.y, poseOdomToMapmsg->pose.position.z);map_to_odom    = tf::Transform(q_tem, p_tem);}
int currentResetId = round(odomMsg->pose.covariance[0]);
if (currentResetId != imuPreintegrationResetId)
{resetParams();imuPreintegrationResetId = currentResetId;return;
}
单独发布了imu的path// publish imu pathstatic nav_msgs::Path imuPath;static double last_path_time = -1;if (imuTime - last_path_time > 0.1){last_path_time = imuTime;geometry_msgs::PoseStamped pose_stamped;pose_stamped.header.stamp = thisImu.header.stamp;pose_stamped.header.frame_id = "odom";pose_stamped.pose = odometry.pose.pose;imuPath.poses.push_back(pose_stamped);while(!imuPath.poses.empty() && abs(imuPath.poses.front().header.stamp.toSec() - imuPath.poses.back().header.stamp.toSec()) > 3.0)imuPath.poses.erase(imuPath.poses.begin());if (pubImuPath.getNumSubscribers() != 0){imuPath.header.stamp = thisImu.header.stamp;imuPath.header.frame_id = "odom";pubImuPath.publish(imuPath);}}   

-mapOptimization.cpp:这个文件没参与到执行过程中。。。

没有回环?或者说没有发布回环约束边;

添加了最近的关键帧点云:

pcl::PointCloud<PointType>::Ptr latestKeyFrameCloud;
pcl::PointCloud<PointType>::Ptr nearHistoryKeyFrameCloud;

执行了闭环检测,去掉了线程池

#pragma omp parallel for num_threads(numberOfCores)

-globalLocalize.cpp:

读入整个地图在哪啊!!!在这!

    void cloudGlobalLoad(){pcl::io::loadPCDFile(std::getenv("HOME") + savePCDDirectory + "cloudGlobal.pcd", *cloudGlobalMap);pcl::PointCloud<PointType>::Ptr cloud_temp(new pcl::PointCloud<PointType>());downSizeFilterICP.setInputCloud(cloudGlobalMap);downSizeFilterICP.filter(*cloud_temp);//*cloudGlobalMap = *cloud_temp;*cloudGlobalMapDS = *cloud_temp;std::cout << "test 0.01  the size of global cloud: " << cloudGlobalMap->points.size() << std::endl;std::cout << "test 0.02  the size of global map after filter: " << cloudGlobalMapDS->points.size() << std::endl;}

测试结果:

测试分析:

1.地图从默认目录中存储和读取。

2.

已经测试:

①目前必须从起始位置附近(不超过3m范围内,朝向与初始方向一致)才能完成初始配准。

②之后的路径可以偏离,即使在长走廊环境也不会因为重复特征漂移,因为有imu的积分带来的位姿估计。

未测试:

室外环境+颠簸环境+长距离

lio-sam实车调试之定位测试相关推荐

  1. LIO-SAM定位+Move_base导航+实车调试

    一.引言 1.本博文主要讲具体的实车调试的配置过程. 2.底盘是松灵的底盘,已经提供了ros接口,只需要发布cmd_vel话题给相应的速度和角速度的值就可以控制其移动,所以我们只需要关注move_ba ...

  2. 实车路试注意事项(路试类)

    做汽车测试的小伙伴都知道,当智能座舱系统开发中后期后,基本上都要进行大量的实车路试,台架测试+路试是最基本的测试方法,两种不同环境测试,出现的结果会大不相同. 现在就开始谈一谈路试注意事项吧! 智能座 ...

  3. Autoware实车测试记录(一)--前期准备以及使用Autoware Maptool插件进行矢量地图的绘制

    一.前言 前段时间一直在学习Lio-sam的程序,在学习完源码后继续学习开源的自动驾驶软件Autoware,这个软件可以看作是很多功能包的集合,在一个人机交互界面对各个模块功能进行参数设置.启动和关闭 ...

  4. 智能驾驶软件测试,智能驾驶实车测试系统-VDAS

    智能驾驶技术的迭代研发,需要多种传感器.海量数据.海量场景的支撑.而目前多种传感器Gbit/s级别的数据同步采集.海量数据的快速分析和评估.关键场景的切片和提取,是业界公认的棘手问题. 为了解决上述的 ...

  5. 自动驾驶层次测试体系(单元测试/集成测试/SIL/HIL/VIL/RIL/LABCAR/实车等)

    智能驾驶的测试是一个非常复杂的系统,我们用一篇文章,由小到大的逐个展开来和大家一起梳理下.在梳理之前我们先抛出一个问题,自动驾驶的测试量需要达到什么量级?根据国际一般标准统计,人类司机驾驶一小时的死亡 ...

  6. OTA系列小问答:车辆并行升级是怎么实现的?实车OTA测试要测什么内容?

    文章目录 车辆并行升级是怎么实现的? 实车OTA测试要测什么内容? 车辆并行升级是怎么实现的? 如果在汽车升级过程中,例如通过OTA master,Gateway对CAN ECU进行升级,由于CAN本 ...

  7. adc0832对光电二极管进行数据采集_实车采集的现场数据如何导入控制模型进行分析...

    电控系统开发或测试等经常会遇到如下情况:测试车辆发现某个故障,需要定位系统的故障点,现场采集有实车的测试数据,现场采集数据的类型可能有xx.blf.xx.asc(总线数据类型),xx.rec.xx.m ...

  8. AGV车调试随手记(二)——型号:MIR250

    AGV车调试随手记(二)--型号:MIR250 1.MiR机器人通过一个狭窄的走廊 ①空间要求是否符合要求 ②确保良好的定位 ③设置最佳入口位置 ④组合正确的区域集 ⑤测试安装 额外内容:解决一个被困 ...

  9. AGV车调试随手记(三)——型号:MIR250

    AGV车调试随手记(三)--型号:MIR250 1.用四个步骤记录地图 ①准备的空间 ②设置机器人界面 ③记录地图 ④对齐地图 对这几个步骤进行解释 (1)准备的空间 如果在地图上有静态地标来帮助定位 ...

最新文章

  1. 用php简单实现加减乘除计算器
  2. 通用试题库管理系统 jsp mysql_通用在线考试系统 JSP+Servlet+MySQL
  3. 如何让Moodle中所连结的flash等媒体事先呈现在画面上?
  4. 使用 QEMU 进行系统仿真
  5. 【计算机网络】网络安全 : 数据加密模型 ( 加密模型 | 密钥 | 密码学 | 密码安全 )
  6. 解决MPLAB X IDE的文件注释出现乱码的问题
  7. lottie动画_Lottie内存泄漏问题的定位与分析
  8. Vrep中将物体变得透明的方法
  9. 经典Python面试题之Python基础篇
  10. 特斯拉最强自动驾驶系统登场,实测视频火热出炉
  11. 信息检索评价标准计算
  12. 中文语音识别数据集总结
  13. Java SE 007 循环控制语句
  14. iperf/LANSpeedTest网络传输速度测试工具
  15. 什么是旅行商问题(Traveling Salesman Problem, TSP)?
  16. 风控人不能不知的黑产大揭秘
  17. Argox-PPLB函数调用说明
  18. 粒子效果动画使用总结
  19. 【项目记录】-上门洗车-汽车服务
  20. 图片转换为 latex 公式,识别图片中Latex公式,支持数学公式,化学公式,物理公式和生物公式,附Java代码和测试效果

热门文章

  1. 如何在做YouTube推广时快速查找网红?
  2. 驱动阿里云的高性能网络引擎- 飞天洛神 1
  3. 《惢客创业日记》2020.01.28-02.06 惢客发展的三个阶段(上)
  4. 摩托罗拉中国暗备翻身仗:Android或是最后机
  5. PR工程版本转换攻略,低版本PR打开高版本工程
  6. Java安全--CC1的补充和CC6
  7. kafka 新版本 操作命令
  8. 信息与计算机工程学院英文翻译,成都信息工程学院通信工程学院英文翻译.doc...
  9. 网络安全--红队资源大合集
  10. 操作系统实验三进程间通信