ori

LOAM_velodyne学习(一)

匿名 (未验证) 提交于 2019-12-03 00:29:01
在研读了论文及开源代码后,对LOAM的一些理解做一个整理。 文章:Low-drift and real-time lidar odometry and mapping 开源代码:https://github.com/daobilige-su/loam_velodyne 系统概述 LOAM的整体思想就是将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图。 Lidar接收数据,首先进行Point Cloud Registration,Lidar Odometry以10Hz的频率进行运动估计和坐标转换,Lidar Mapping以1Hz的频率构建三维地图,Transform Integration完成位姿的优化。这样并行的结构保证了系统的实时性。 接下来是代码的框架图: 整个算法分为四个模块, 相对于其它直接匹配两个点云的算法,LOAM是通过提取特征点进行匹配之后计算坐标变换。具体流程为:ScanRegistration 提取特征点并排除瑕点; LaserOdometry从特征点中估计运动,然后整合数据发送给LaserMapping;LaserMapping输出的laser_cloud_surround为地图;TransformMaintenance订阅LaserOdometry与LaserMapping发布的Odometry消息,对位姿进行融合优化

[比赛题解]CWOI2019-1

与世无争的帅哥 提交于 2019-12-01 16:30:22
[比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题。 我们考虑 \(dp[i][j][k]\) 表示最后 \(i\) 位数, \(i-1\) 位都是9,最后一位为 \(j\) ,最后 \(i\) 位数以前的部分最大数为 \(k\) 时,把最后 \(i\) 位数减到负数最小需要多少次。 \(re[i][j][k]\) 代表这个状态下,把这个数减到负数时,负数+10的值。 那么每次操作就会减去 \(min(最后i位数中最小值,k)\) 。 我们先预处理出 \(dp\) 和 \(re\) 数组(从低位向高位递推)。 然后读入给的数,考虑把除1之外所有位数变成9。那么从第二位向高位枚举,每次把当前位减掉1,直到减到9(最后一次注意退位),同时记录在这个过程中走了多少步。因为对于一个前缀全为9,最后一位无论是什么,减去一个小于10的数得到的数的前缀还是全为9。 全部变成9之后即可从高位到低位统计答案即可。 貌似状态设置成“全是9”也可以,但是没试过。 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; long long dp[20][10][10],res[20][10][10];