fast-lio2运行流程及其中的知识点

运行流程:source ~/code/diver/ws_livox/devel/setup.bash

         catkin_make

         source ./devel/setup.bash

         roslaunch fast_lio mapping_avia.launch

        rosbag play xxx.bag

理论解读:雷达惯性里程计论文笔记—FAST-LIO流程梳理 (三) - 知乎

 

1、imu前向传播与后向传播

前向传播:将IMU的数据带入模型公式,就可得到估计的状态x和协方差P

       用于获得一次LiDAR_Scan中的IMU位姿和误差,同时利用位姿和误差信息来更新机器人当前估计的位姿。

后向传播:用于lidar去畸变。

              一帧中雷达数据特征点{Lj}并非同一时刻测量的,这些特征点中存在着相对运动,为此就需要对其进行运动补偿FAST-LIO使用后向传播对特征点{Lj}进行运动补偿。特征点之间的相对运动使得他们之间存在着相对位姿变化,将IMU测量数据即可求得各个特征点(时间pj)与最后一个特征点(时间tk)之间的相对位姿变换。之后,再借助公式,就可以将存在相对运动的特征点{Lj}全部投影到tk时刻,此时就可以得到一系列点{Lk},并且可以认为系列点{Lk}都是tk时刻同时测量的。以此优化前向传播得到的状态估计,以最小化整个系统的误差。

2、ros::NodeHandle nh;  //nh是NodeHandle的一个对象,NodeHandle提供了在ROS中访问参数服务器获取参数的方法。

nh.param<bool>("publish/scan_publish_en",scan_pub_en, true);//从ROS参数服务器中获取名为publish/scan_publish_en的布尔型参数的值,将其存储在变量 scan_pub_en 中。如果参数不存在或者类型不匹配,将使用默认值true

 3、ros::Subscriber sub_imu = nh.subscribe(imu_topic, 200000, imu_cbk);

订阅imu_topic的话题;200000是队列大小(queue size),表示ROS节点可以缓存的未处理的消息数量;回调函数imu_cbk;

         当订阅一个话题时,ROS会创建一个队列来存储从该话题接收到的消息,直到这些消息被处理。队列大小200000意味着ROS节点可以缓存最多200,000条未处理的消息。如果节点在处理消息的速度上落后于消息发布的速率,队列可以起到缓冲作用,防止消息丢失。

4、参数 dense_pub_en 在 laserMapping.cpp 文件中被显式设置为 false。然而,在 avia.yaml 文件中将其设置为 true。如果在运行ROS节点时使用了 avia.yaml,那么参数服务器上的值会覆盖 laserMapping.cpp 文件中的设置,最终 dense_pub_en 的值将是 true

5、pcl::toROSMsg(*laserCloudWorld, laserCloudmsg);// PCL 点云数据格式转换为 ROS 消息格式(sensor_msgs::PointCloud2 laserCloudmsg),以便在 ROS 中进行发布或传输

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值