一、SLAM建图机器人
在驱动机器人动起来后,我们可以开始考虑让机器人在实际环境中自主导航了。自主导航需要SLAM技术,要利用机器人的传感器数据构建地图,主要包含以下内容:ROS中的地图、创建地图、利用rosbag记录数据和启动地图服务器以及查看地图。
1、ROS中的地图
map_server包中地图存储在一对文件中,一个YAML文件,一个image文件。YAML文件描述了地图元数据,并命名了图像文件, 图像文件对占用数据进行编码。
11 图像文件
图像文件以对应像素的颜色描述环境中每个单元格的占用状态。 在标准配置中,更白的像素是空闲的,被占用的空间具有更黑的像素,中间颜色的像素表示未知。 接受彩色图像,但颜色值会被平均为灰度值。一般而言,大多数流行的图像格式得到广泛支持。
12YAML文件
(待研究)
二、机器人必备硬件
1差分轮式机器人(即通过控制机器人左右两轮的行进速度,实现机器人的各种运动,并且一般会有一到两个复制支撑的万向轮),可以使用Twist速度指令控制。
linear:线速度
angular:角速度
2机器人必须安装深度传感器(激光雷达或Kinect)
深度信息:图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率。图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级。
(待研究)
3机器人外形最好是方形或圆形
三、gmpping的应用
1安装gmapping功能包
$sudo apt-get install ros-kinetic-gmapping
2配置gmapping节点
(报错,待研究)
3启动gmapping演示,配置激光雷达,开始仿真
(报错,待研究)
激光雷达SLAM包括以下几种方案:
直接法, 直接法的典型代表是ICP和NDT系列,ICP可以直接计算出激光的位姿,多帧可以构成联合优化,这种方案比较简单但是比较有效,常用于激光雷达的多程对齐。
基于特征的匹配(LO),该方案的典型代表是LOAM和后续的改进方案A-LOAM/F-LOAM,该方案通过寻找线面特征,并通过特征匹配来计算帧间的位姿,多个位姿可以做BA优化。
多传感器融合的方案。该方案的典型代表是LIO-Mapping,LINS和LIO-SAMLIO-Mapping算法借鉴VINS-Mono的预积分和后端优化,前端视觉里程计改成激光里程计。
基于栅格的,该方案的代表是谷歌开源的cartography,这种方案在室内的机器人定位比较有优势。
基于面元,该方案的典型代表是suma。
基于语义信息,该方案的典型代表是segmap和suma++。
高精地图的生产包括语义信息的提取(通常来自视觉,部分也可来自激光),单程LIO(gnss+imu+dmi+lidar/visual odometry),多程对齐。说一下每一部分的难点吧:
图像语义信息的提取。图像的语义信息包括车道线,杆状物体,牌子,地面车信等;在高速场景,物体遮挡较少,物体检测的准确率是可以做到95%以上的;在城市道路,由于树木的遮挡(对牌子和杆状物体的遮挡), 车辆遮挡(对车道线和地面车信的遮挡),目前的检测是很难做到90%以上的。
点云的语义信息提取。点云对于特殊材料反射率较大(如车道线),基本上二分就可以解决很多问题,对于高速场景,车道线磨损并不严重,语义信息提取较容易;对于城市道路车道线磨损严重,且存在老旧的车道线的干扰,语义信息的提取是很难做到90%以上的。
LIO 高精采集车一般配备激光雷达,相机,imu, dmi和RTK等设备,对单程轨迹来说,是可以采用多传感器融合的。对于高速场景,建筑物遮挡较少,RTK信号较好,后结算的RTK的精度是可以做到30cm以内的(在山区和隧道场景例外),自动化比较难做,这个和场景有关系。
多程融合。主要看人眼去分辨点云是否对齐,当然是可以建立小规模数据集进行评测,自动化率非常低。
总的来说,目前高精地图的生产是很难做到自动化的,主要原因是场景复杂,corner case太多,绝对精度和相对精度都很难满足要求。
总结一下,目前激光SLAM的直接法比较简单,可以用于激光里程计的多程对齐或回环检测; 纯LO的算法目前工业圈很少使用,一般采用多传感器融合的方案,毕竟激光雷达都用了,也不差IMU这样的传感器。多传感器融合的方案主要用于高精地图的制作,自动驾驶领域一般采用高精地图作为先验来定位,不会同时定位和建图。基于栅格的可以用于移动机器人,在室内环境栅格假设大多数还是有效的,在室外场景的话,一般会采用NDT Map来存储地图。基于语义信息和面元的话,个人不太了解,在工业圈的使用也不多。
1可以通过测量系统处理每一帧图像所花费的时间来验证系统的实时性。2可以比较不同系统在相同场景下的处理时间,以确定系统的实时性。3可以使用卡尔曼滤波器或其他状态估计技术来验证系统的实时性。4可以使用模拟系统来检验系统的实时性,以确保它能够在适当的时间内处理数据。5可以使用统计分析来评估系统的实时性,通过比较接收到的数据和处理之后的数据。6可以比较实际全局地图和理论地图的不同,以衡量系统的实时性。
学视觉slam十四讲,把一些框架拿过来运行一下,再把框架之中的内容改成自己想要的即可。
机器人爆炸式增长的一个主要问题是不能在不同的机器人平台上重复使用代码。然而,ROS中的硬件抽象层及其消息服务允许创建可用于许多不同机器人平台的新代码。而且,ROS提供了一套稳定的机器人软件包,公认的SLAM评估方法都依赖于机器人社区可用的标准数据集。
所有SLAM的结果都使用占用网格作为最终输出,使用地图相似性的性能指标进行分析。 重点是放在地图质量,而不是姿态估计误差,因为映射输出受到本地化问题的高度影响。
SLAM的典型应用领域:
地图建模。SLAM可以辅助机器人执行路径规划、自主探索、导航等任务。国内的科沃斯、塔米以及最新面世的岚豹扫地机器人都可以通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机高效绘制室内地图,智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。
国内思岚科技(SLAMTEC)为这方面技术的主要提供商,SLAMTEC的命名就是取自SLAM的谐音,其主要业务就是研究服务机器人自主定位导航的解决方案。
一、啥是SLAM?
1 slam
slam就是 同步定位与建图(Simultaneous Localization and Mapping)。指机器人通过根据自身位置和地图实现自主定位和导航。
2 技术和场景
SLAM系统包括两个主要组件:
1)前端将传感器数据抽象为可用于估计的模型
2)后端则对前端生成的抽象数据进行推理
两类技术路线:
激光slam(基于激光雷达):可靠性高,技术成熟;但 有雷达探测范围的限制和安装的结构要求
视觉slam(基于摄像头);
复合slam(激光+视觉)
主要应用于机器人,无人机,无人驾驶,AR/VR领域。
3前景和风险
slam相关技术正越来越多地部署在从自动驾驶 汽车 到移动设备的各种现实环境中。由于移动设备和代理的定位信息的价值,云端位置服务会有很大的商业应用价值。
slam仍然是大多数机器人应用场景不可或缺的支柱,尽管在过去的几十年中取得了惊人的进步,但现有的SLAM系统在性能,理解力,推理力上远不能达到大规模商业推广的要求。
二、啥是DPU?
1 DPU
数据处理单元,类比CPU--中央处理单元;GPU--图形处理单元,是数据中心场景中的第三颗重要算力芯片,为数据密集的计算场景提供计算引擎。通俗点说就是,把网络数据的处理从CPU端解放出来,放到DPU端来做,这样做可以节省8核CPU的至少一半算力。
GPU的出现是为了处理越来越复杂的图形化计算,而DPU则是为了处理越来越庞大的数据量而诞生。
2 技术和场景
三大特点:
卸载:数据中心的 网络服务,存储服务和安全服务的卸载
加速:硬件加速
隔离:隐私计算,数据隔离
应用场景:数据中心和云计算、网络安全、高性能计算及AI、通信及边缘计算、流媒体等。目前以数据中心和云计算为主。
与智能网卡(smart nic)的区别:功能类似,但技术架构不同。DPU架构是在DPU上插入一台服务器,而智能网卡架构是在服务器上插入一个网卡。
3前景和风险
DPU是在目前算力困境的大背景下产生的,预示着一个新的算力时代的到来。行业需要更多的技术创新,更好的服务 “东数西算”国家大战略和数字经济发展。
三种市场策略:
传统处理器大厂通用领域耕耘,目标是全行业通吃,很注重产品的“通用性”,稳健布局 (英伟达)
小厂在行业细分场景耕耘,比如数据库加速、统一通信加速。定制化多,市场规模也有限。(中科驭数,云豹智能,星云智联)
云大厂垂直整合:云服务商使用DPU是必然趋势,但通用型DPU无法满足,DPU需要云OS加持(AWS,阿里,博通)
也有一些投资人认为,DPU赛道比较鸡肋:CPU/GPU同量级的高投入,但市场规模却不大。并且因为DPU跟用户的业务休戚相关(场景的软硬件解耦难度大),很多用户倾向自研,这进一步导致公开市场规模更加有限。
三、啥是氢能源?
1 氢能源
氢能是一种不依赖化石燃料的储量丰富的新的清洁能源
特点:
1)重量轻且形态多:数百个大气压下,液氢可变为金属氢。
2)发热值高且燃烧性好:是汽油发热值的3倍。
3)储量丰富且运输方便
4)可回收且环保
5)耗损少且利用率高
2 技术和场景
美国的航天飞机,和我国的运载火箭都已成功使用液氢做燃料
氢能源主要可应用于氢燃料电池和氢能 汽车 。与目前市面上的主流新能源车型相比,氢燃料电池才真正算得上是环保能源。
氢燃料电池技术,一直被认为是利用氢能解决未来人类能源危机的终极方案。上海一直是中国氢燃料电池研发和应用的重要基地,包括上汽、上海神力、同济大学等也一直在从事研发氢燃料电池和氢能车辆。用氢能作为 汽车 的燃料无疑是最佳选择。
电动 汽车 的核心:电机+电控+动力电池组。难题: 续航里程+充电难+电池报废的环保问题
氢能源 汽车 的核心:电机+电控+动力电池组+燃料电池堆+高压储氢罐。 难题:大量而低价生产氢(常规方法太不环保,电解水太耗电)+加氢难
3前景和风险
利用太阳能来分解水生产氢是一个氢能源的主要研究方向,关键在于找到一种合适的催化剂。如今世界上有50多个实验室在进行研究,但至今尚未有重大突破,但它蕴育着广阔的前景。
日本丰田和韩国现代就是氢燃料电池的先驱者。目前的电动车应该只是临时过渡产品,当氢能源车的诸多技术瓶颈得到解决,氢能源车普及的时代也会到来。因此日本并没有全力发展电动车,而是把更多精力放在了构建氢能源为主的 社会 上。
slam怎么生成新的landmark
。提出了一种基于学习的相机定位算法,其无需存储图像特征和场景三维点云,降低了存储限制,通过识别场景中稀疏但显著有代表性的landmark来找到2D-3D对应关系进行后续的鲁棒姿态估计,通过训练检测landmark的场景特定的CNN来实现所提出的想法,即回归输入图像中对应landmark的2D坐标。
来源:公众号计算机视觉工坊
作者:一杯红茶
点击进入—>粉丝交流群
创新点与Contributions:
1)与大多数landmark通常可见的人体姿态估计不同,由于相机视野有限并且无法同时观察场景的不同部分,相机姿态估计任务中大多数场景landmark不会同时可见,文章通过提出一种新的神经方位估计器(Neural Bearing Estimator,NBE)来解决这一问题,该估计器可以直接回归相机坐标系中场景landmark的3D方位向量,NBE学习全局场景表示的同时学习预测场景landmark的方向向量,即使它们不可见。
2)提出了一个新的室内定位数据集,INDOOR-6,相对于传统的7-Scenes室内数据集,包含更多变化的场景、昼夜图像和强烈的照明变化
3)与现有的无存储定位方法相比,具有低存储的优点且性能较好
文章提出了两种预测图像中场景landmark的方法,在第一种方法中训练了一个模型来识别图像中的2D场景地标,称之为场景地标检测器(SLD),由于假设已知的相机内参,这些2D检测可以转换为3D方位矢量或射线。在第二种方法中训练了一个不同的模型直接预测相机坐标系中landmark的3D方位向量,称之为神经方位估计器(NBE)。注:使用SLD,只能检测到相机视场(FoV)中可见的landmark,而NBE预测所有landmark的方位,包括相机视场外不可见的landmark。
首先会有一个SFM构建的点云模型,会在这些点云中挑选出有代表性的点云子集,用这些子集以及建图时SFM算法生成的数据库图像的伪真值来训练两个提出的网络模型。
SLD:
SLD被设计为将RGB图像I作为输入并输出一组像素似然图(热图)表示每个可见地标的位置,其模型架构如下:
由四个主要组件组成:使用ResNet-18为backbone,删除最后三个最大池化层以保留高分辨率特征图(输出分辨率为输入图像分辨率的四分之一),其次在ResNet-18之后使用扩张卷积块,扩张率设置为
使用笔记本自带摄像头跑slam,在此之前需要标定笔记本相机。因为使用的是虚拟机下ubuntu14系统,在标定相机时遇到了网上标定教程没有出现的问题。标定前需要安装ros相关软件包。
(1) 安装相关软件包:
sudo apt-get install ros-indigo-usb-cam // 用于接收和发布摄像头数据topic
sudo apt-get install ros-indigo-image-view // 用于显示
sudo apt-get install ros-indigo-camera-calibration //用于相机标定
(2) 发布image topic:
相机标定首先要使用usb-cam来获取摄像头数据,运行usb-cam launch文件
roslaunch usb_cam usb_cam-testlaunch
如果成功,则会d出摄像头捕捉的视频窗口,同时rostopic list 出现 /image_raw 和 /camera_info两个话题。但是这一步对于使用虚拟机的同学会遇到很多问题,不过按照如下步骤应该没有问题:
1)确认camera状态和信息(使用v4lz来 *** 作,这玩意专门用来 *** 作摄像头):
v4l2-ctl --list-devices //查询摄像头设备,如输出: /dev/video0 输出设备编号,这个待会用来核对launch文件
如果没有输出设备编号,说明虚拟机根本没有连接上摄像头,可以通过虚拟机菜单"虚拟机—可移动设备—xx camera—连接",然后再运行此命令,应该就有编号了,说明链接成功,然后按照编号修改对应的launch文件,一般都是video0,不用修改。
2)v4l2-ctl --list-formats-ext // 查询视频流格式吧?我猜的,不过这个很重要,会输出当前摄像头支持的视频流格式、帧率、图像尺寸等信息,用来修改launch文件
经过查询发现,虚拟机摄像头支持yuyv和mjpeg两种视频格式,而launch文件默认选择的是yuyv格式,实际使用发现,虚拟机下是不支持这种格式的,所以替换成mjepg格式,其他尺寸可以根据上述命令的输出自己选择。
3)出现视频窗口,有图像后突然卡死时,更改虚拟机usb设置,将usb兼容调整为11,或者别的,我的是11,重新启动后不会卡死。
(3) 运行标定程序:
在此之前你需要准备棋盘,如下,打印尺寸可以自己选择,然后运行:
rosrun camera_calibration cameracalibratorpy --size 8x6 --square 0025 image:=/usb_cam/image_raw camera:=/usb_cam // 其中 size是黑白格的横纵点数,square是黑白格边长,image是图像节点名称,camera是相机名称
(4) 开始标定:
参照标定说明
以上就是关于SLAM建图全部的内容,包括:SLAM建图、激光雷达SLAM包括以下几种方案:、如何验证slam系统的实时性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)