激光slam第三章作业

将所有kinetic 替换为noetic

cd src/champion_nav_msgs/

sudo bash install.sh

1. 补充去除激光雷达运动畸变模块的代码;

第一题代码说明:
本题目为实现一个里程计去除激光雷达运动畸变的代码模块,作业里面有两个工程:
champion_nav_msgs 和 LaserUndistortion。大家需要首先编译安装 champion_nav_msgs,按照
champion_nav_msgs 的 readme 文件执行即可,或运行命令 sudo bash install.sh,注意如果你的
ubuntu 版本不是 kinetic,要将所有 kinetic 的地方修改成你的 ros 版本。
程序运行过程为:
Step1:实现 207 行 LidarMotionCalibration 函数,并用 catkin_make 命令进行编译;
Step2:在 LaserUndistortion 下,进行 source:source devel/setup.bash;
Step3:运行 launch 文件:roslaunch LaserUndistortion LaserUndistortion.launch,执行本条指令的时候,必须保证没有任何 ROS 节点在运行, roscore 也要关闭;
Step4:进入到 /bag 目录下,运行指令:rosbag play -–clock laser.bag;
Step5:如果一切正常,则会看到 pcl 的可视化界
用插值的方法,从而得到每一个小时刻的位姿,从而去除运动畸变。

明确几个物理量:
(1)start_time : 激光数据开始的时刻。

(2)end_time : endTime = startTime + ros::Duration(laserScanMsg.time_increment * beamNum); 激光数据结束的时刻。

(3)frame_start_pose : 雷达数据开始时刻,从odom获取的start_time时刻的机器人位姿。

(4)frame_mid_pose : 中间某一帧雷达时刻,从odom获取的mid_time时刻的机器人位姿。

(5)frame_end_pose : 雷达数据结束时刻,从odom获取的end_time时刻的机器人位姿。

(6)frame_base_pose : 基准坐标,就是将所有去畸变的电云放在这个坐标系下。这里我们将第一个雷达数据所在位姿作为基准坐标。(基准位姿)

(7)interpolation_time_duration : 插值间隔。如果mid_time - start_time > interpolation_time_duration,则进行插值.

(8)interp_count : 在插值间隔中有几个激光点。

坐标转换流程:

激光雷达坐标系 --> 视觉里程计坐标系 --> 基础坐标系

插值思想:


每次都选取中间的一个超过插值时间的激光时间段,起点为start,终点为middle,这个段的起点终点位姿由里程计获取,可以用!tf_->waitForTransform("/odom", “/base_laser”, dt, ros::Duration(0.5)))等上一个,避免时间不同步的问题。对内部进行插值,有几个点插值几个,使得每个激光点都有属于自己的位姿。
 

运行结果:

cd study_dome/LaserUndistortion_ws

catkin_make

source devel/setup.bash

roslaunch LaserUndistortion LaserUndistortion.launch

cd study_dome/LaserUndistortion_ws/bag

rosbag play -–clock laser.bag

播放录制文件时顺带显示录制文件的时间戳:

Rosbag play --clock bagFile01.bag

rosbag play --clock bag_name.bag #默认/clock的话题频率100hz
rosbag play --clock --hz 200 bag_name.bag #指定/clock的时钟为200hz

结果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值