CN118020038A - 两轮自平衡机器人 - Google Patents
两轮自平衡机器人 Download PDFInfo
- Publication number
- CN118020038A CN118020038A CN202280060512.XA CN202280060512A CN118020038A CN 118020038 A CN118020038 A CN 118020038A CN 202280060512 A CN202280060512 A CN 202280060512A CN 118020038 A CN118020038 A CN 118020038A
- Authority
- CN
- China
- Prior art keywords
- robot
- self
- balancing
- wheeled
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000004927 fusion Effects 0.000 claims abstract description 26
- 238000013507 mapping Methods 0.000 claims abstract description 24
- 239000002245 particle Substances 0.000 claims description 34
- 238000001914 filtration Methods 0.000 claims description 14
- 238000005259 measurement Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 59
- 238000004088 simulation Methods 0.000 abstract description 29
- 230000004807 localization Effects 0.000 abstract description 11
- 238000000034 method Methods 0.000 description 77
- 238000004422 calculation algorithm Methods 0.000 description 72
- 238000012360 testing method Methods 0.000 description 35
- 230000008569 process Effects 0.000 description 34
- 230000033001 locomotion Effects 0.000 description 23
- 239000011159 matrix material Substances 0.000 description 15
- 230000002787 reinforcement Effects 0.000 description 15
- 238000012952 Resampling Methods 0.000 description 12
- 230000001133 acceleration Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 230000006872 improvement Effects 0.000 description 9
- 238000011160 research Methods 0.000 description 9
- 230000018109 developmental process Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 239000003086 colorant Substances 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 102000008115 Signaling Lymphocytic Activation Molecule Family Member 1 Human genes 0.000 description 5
- 108010074687 Signaling Lymphocytic Activation Molecule Family Member 1 Proteins 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 230000005355 Hall effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000008447 perception Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000010845 search algorithm Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 241000282412 Homo Species 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 208000025721 COVID-19 Diseases 0.000 description 1
- 241000288673 Chiroptera Species 0.000 description 1
- 241000254158 Lampyridae Species 0.000 description 1
- 206010048669 Terminal state Diseases 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- XAGFODPZIPBFFR-UHFFFAOYSA-N aluminium Chemical compound [Al] XAGFODPZIPBFFR-UHFFFAOYSA-N 0.000 description 1
- 229910052782 aluminium Inorganic materials 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000001580 bacterial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000003631 expected effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 235000013410 fast food Nutrition 0.000 description 1
- 230000002431 foraging effect Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007659 motor function Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000009304 pastoral farming Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012956 testing procedure Methods 0.000 description 1
- 238000012876 topography Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0238—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
- G05D1/024—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B62—LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
- B62K—CYCLES; CYCLE FRAMES; CYCLE STEERING DEVICES; RIDER-OPERATED TERMINAL CONTROLS SPECIALLY ADAPTED FOR CYCLES; CYCLE AXLE SUSPENSIONS; CYCLE SIDE-CARS, FORECARS, OR THE LIKE
- B62K11/00—Motorcycles, engine-assisted cycles or motor scooters with one or two wheels
- B62K11/007—Automatic balancing machines with single main ground engaging wheel or coaxial wheels supporting a rider
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0268—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
- G05D1/027—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means comprising intertial navigation means, e.g. azimuth detector
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0268—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
- G05D1/0274—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0287—Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling
- G05D1/0291—Fleet control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/80—Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/84—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using probabilistic graphical models from image or video features, e.g. Markov models or Bayesian networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/58—Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Multimedia (AREA)
- Automation & Control Theory (AREA)
- Aviation & Aerospace Engineering (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Optics & Photonics (AREA)
- Electromagnetism (AREA)
- Mechanical Engineering (AREA)
- Probability & Statistics with Applications (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
Abstract
一种基于两轮赛格威(SEGWAY)自平衡滑板车的自动驾驶机器人。包括激光雷达(LiDAR)、摄像头、编码器和IMU的传感器与作为致动器的数字伺服一起实现。同时对该机器人的多个功能特征进行了测试,这些功能包括基于模糊逻辑和2D网格地图的避障、基于协同校准的数据融合、二维同时定位与地图构建(2D SLAM)、以及室内和室外不同场景下的路径规划。因此,机器人初步具备了对避开障碍物并同时构建2D网格地图进行自主探索的能力。基于机器人操作***(ROS)和Gazebo,还测试并执行了除数据融合外具有相同功能的机器人仿真,作为机器人在真实世界中的简单比较。
Description
相关申请的交叉引用
本申请要求于2021年7月6日提交的、第63/218,633号美国临时申请的权益。上述申请的全部公开内容通过引用并入本文。
技术领域
本公开涉及一种分布式实时机器学习两轮机器人。
背景技术和发明内容
本部分提供了与本公开相关的、不一定是现有技术的背景信息。本部分提供了本公开的总体概述,并不是对本公开的全部范围或本公开的所有特征的全面公开。
在一些实施例中,本教导的机器人(本文通常称为“xBot”)是一种协作式两轮自平衡机器人,其由最新的实时深度学习技术提供动力。在一些实施例中,该机器人高度高于1米并且能够在房间、田野、工厂、室内和室外运行。在一些实施例中,每个xBot配备有激光雷达(LIDAR)、一个或多个摄像头、全球定位***(GPS)传感器、陀螺仪传感器、以及几个其它板载传感器。在一些实施例中,xBot可以通过可用的无线链路在它们之间交换信息,该可用的无线链路包括蜂窝移动无线链路、本地WiFi或远距离无线电(LoRa)、低功耗广域网(lowpower wide area,LPWA)和/或到远程传感器的蓝牙低功耗(Bluetooth low energy,BLE)接口。对来自激光雷达点云、图像和传感器这两者的数据集的专有实时深度学习(real-time deep learning,RTDL)创建了包括智能监测、建模、分析、检测、测量和监控的高级功能。
xBot是用于以下项的领先解决方案:室内设施/室外设施的智能监控和巡逻;异常行为或入侵者检测和监测;对无预设的感兴趣目标的测量和定位;以及快速且节省成本的三维(3D)建图和目标重建。xBot是建立在快速和敏捷的类似赛格威(SEGWAY)滑板车上的、以以下方面为特征的实时深度学习(real-time deep learning,RTDL)机器人。
RTDL:目前,机器人以所设计的很少关注变化和衍生(其通常是不可避免的且往往很重要)的方式对环境做出反应。一旦采用实时深度学习(RTDL),通过持续感知、即时学习和主动调整来应对环境的变化和不确定性,情况就会改变。随着时间的推移,RTDL获得了更多的经验(就像中国的成语:老马识途),并能够对环境进行分类和建模,从而定期或意外地进化以很好地适应新的应用和任务。
多模态检测:基于高清图像的智能有助于定位移动或静止的目标,而精确的距离测量和定位则由激光雷达数据一致地提供。此外,xBot能够自适应地四处移动以达到最佳性能,在高达100米范围内的估计精度为厘米。
协作式AI:此外,两个或更多个xBot可以在有云或没有云的情况下协作或一起工作,以实现提供了前所未有的功能和性能的分布式机器学习。内置导航支持航路点例程以及智能巡逻和巡航。
更多的适用的方面将从本文提供的描述中变得显而易见。该概述中的描述和具体示例仅用于说明目的,并不旨在限制本公开的范围。
附图说明
本文中所描述的附图仅用于所选实施例而非所有可能的实施方式的说明目的,并且不旨在限制本公开的范围。
图1A示出了避障逻辑。
图1B示出了导向二维(2D)网格地图。
图2示出了考虑机器人运动的不确定性(CURM)配置。
图3示出了LiDAR的FOT配置。
图4示出了对来自LiDAR和摄像头的数据进行融合的示例流程图。
图5示出了数据融合、3D对象协同检测和分割的典型应用,其中,所分割的部分也具有语义信息。
图6示出了基于模糊逻辑的数据融合的示例。
图7示出了智连链(ILCC)的硬件设置和角点提取。
图8A至图8D示出了不同类型的地图,如图8A是3D点云图,图8B是2D语义地图,图8C是2D网格地图,并且图8D是3D语义地图。
图9示出了机器人路径规划的一般分类。
图10示出了多年来对机器人路径规划技术的引用。
图11示出了基于2D网格地图的路径规划的示例。
图12A示出了机器学习的一般分类。
图12B示出了强化学习的简单表示。
图13示出了Q学习的伪码。
图14A示出了典型的迷宫难题的示例。
图14B示出了由我们的机器人生成的局部2D网格地图,该局部2D网格地图可以类似于迷宫难题。
图15示出了所提出的机器人的硬件设置。
图16A和图16B示出了机器人的运动学模型,其中,图16A示出了机器人的全局坐标和机器人坐标,并且图16B示出了机器人运动的分解。
图17示出了机器人的动态模型。
图18示出了机器人的比例积分微分(PID)控制器配置。
图19示出了数字伺服结构和脉宽调制(PWM)工作原理。
图20示出了伺服和Arduino的接线图。
图21示出了LiDAR的垂直扫描角度。
图22示出了所采集的点云数据的可视化。
图23示出了车轮角度编码器(wheel encoder)的配置。
图24示出了惯性测量单元(IMU)在机器人上的侧倾、俯仰和偏航。
图25示出了软件***框架。
图26示出了避障的流程图。
图27示出了网格地图上的LD、FD、RD。
图28A至图28E分别示出了如下输入的模糊隶属函数:(a)LD;b)FD;(c)RD;(d)α;(e)v。
图29A和29B分别示出了如下输出的模糊隶属函数:(a)θ;(b)α.。
图30示出了数据融合过程的流程图。
图31示出了由机器人采集数据的示例场景。
图32示出了摄像头坐标系、图像坐标系和真实世界坐标系。
图33示出了2D同时定位与地图构建(SLAM)的部分可观察马尔可夫决策过程(POMDP)表示。
图34示出了2D SLAM过程的流程图。
图35示出了运动模型的两个组成部分,其中,在区间L^((i))内,在使用精确传感器的情况下,两个函数的乘积由观测似然主导。
图36示出了路径规划过程的流程图。
图37示出了地图上用于路径规划的安全区(浅蓝色)和危险区(粉色)。
图38A示出了仿真机器人模型。
图38B示出了LiDAR在仿真中的可视化。
图39示出了室内仿真测试环境。中心点是机器人模型,并且主要障碍物包括墙壁、消防栓和快餐店。
图40A示出了室外仿真测试环境的概览场景。
图40B示出了室外仿真测试环境的街道场景。
图41示出了几张测试环境的图片,其中,左侧上方示出了大学建筑的走廊,左侧中间和左侧下方示出了研究实验室,右侧示出了房间。
图42示出了数据融合的测试环境,其中,左边示出了室内场景,而右边示出了室外场景。
图43示出了2D局部网格地图和2D点云的平面图。
图44示出了从摄像头采集的原始图像(上)和校准后的未失真图像(下)。
图45示出了25幅图像的平均像素误差(左)和以摄像头为中心基准的棋盘位置(右)。
图46示出了点云上的棋盘格角点。
图47示出了相对于图像和点云的较大棋盘的四个角点。
图48示出了变换后的室内场景的彩色点云。
图49示出了室内场景和室外场景的彩色图像、点云和融合结果。
图50示出了在移除地面命中之前使用当前LiDAR命中(绿色)的地图构建过程。
图51示出了在移除地面命中之后不使用当前LiDAR命中的地图构建过程。
图52示出了按照30×30m的比例的全局2D网格地图的结果(左)和相应的房间布局(右)。
图53示出了用于路径规划的按照600×600像素的比例的2D全局网格地图(左)和详细的2D全局网格地图(右)。
图54示出了从不同算法生成的具有相同起点和目的地的路径。
图55示出了仿真机器人的路径规划和导航,其中,标记为“图像”的窗口表示对设置在机器人模型上的虚拟摄像头的可视化。
图56示出了从Gamapping仿真生成的2D网格地图。
图57示出了3D激光地图仿真构建过程,其中,左边是3D激光地图,而右边是仿真环境中对应的真实场景。
图58示出了由Loam算法生成的3D激光地图的结果。
图59示出了由Lego-loam算法生成的3D激光地图的结果。
贯穿这些附图的几个视图,相应的附图标记指代相应的部件。
具体实施方式
现在将参考附图对示例实施例进行更全面的描述。提供了多个示例实施例,使得本公开将是透彻的,并且将向本领域技术人员充分传达该范围。阐述了许多具体细节(例如特定部件、设备和方法的示例),以提供对本公开的实施例的透彻理解。对于本领域技术人员来说显而易见的是,不需要采用具体细节,可以以许多不同的形式体现各示例实施例,并且这两者都不应被解释为限制本公开的范围。在一些示例实施例中,没有对公知的工艺、公知的设备结构和公知的技术进行详细描述。
在本文中使用的术语仅用于描述特定示例实施例的目的,并不旨在进行限制。除非上下文另有明确指示,否则如本文使用的,单数形式“一(a)”、“一(an)”和“该(the)”也可以旨在包括复数形式。术语“包括(comprises)”、“包括(comprising)”、“包含(including)”和/或“具有(having)”是开放性的,并因此指定了所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但不排除存在或增加一个或多个其它特征、整体、步骤、操作、元件、部件和/或它们的群组。本文中描述的方法步骤、过程和操作除非被特别指定为执行顺序,否则不应被解释为必须要求它们以所论述或所示出的特定顺序来执行。还将理解的是,可以采用附加步骤或替代步骤。
当元件或层被提及为:位于另一元件或层“上”、“接合到”另一元件或层、“连接到”另一元件或层、或“耦接到”另一元件或层时,该元件或层可以直接位于另一元件或层上、直接接合到另一元件或层、直接连接到另一元件或层、或直接耦接到另一元件或层,或者可以存在中间元件或层。相比之下,当元件被提及为“直接位于”另一元件或层上、“直接接合到”另一元件或层、“直接连接到”另一元件或层、或“直接耦接到”另一元件或层时,可能不存在中间元件或层。用于描述多个元件之间关系的其它词语应当以类似的方式(例如,“在……之间”对比“直接在……之间”、“与……相邻”与“直接与……相邻”等)来解释。如本文所使用的,术语“和/或”包括多个相关联的所列项中的一个或多个项中的任何项和所有组合。
尽管本文中可以使用术语第一、第二、第三等来描述各种元件、部件、区域、层和/或部分,但是这些元件、部件、区域、层和/或部分不应受这些术语所限制。这些术语可以仅用于将一个元件、部件、区域、层或部分与另一区域、层或部分区分开。除非上下文明确指出,否则诸如“第一”、“第二”和其它数字术语等术语在本文中使用时并不暗示次序或顺序。因此,在不脱离示例实施例的教导的情况下,以下所论述的第一元件、部件、区域、层或部分可以被称为第二元件、部件、区域、层或部分。
为了便于描述,本文可以使用空间相对术语来描述如图所示的一个元件或特征与一个或多个另一元件或特征的关系,所述空间相对术语例如为“在……内部”、“在……外部”、“在……下面”、“在……下方”、“在……下部”、“在……上方”、“在……上部”。空间相对术语可以旨在涵盖设备在使用或操作时的除图中所描绘的方位以外的不同方位。例如,如果图中的设备被翻转,则被描述为在其它元件或特征“下面”或“下方”的元件将被定向为在其它元件或特征“上方”。因此,示例术语“在……下方”可以涵盖上方的方位和下方的方位这两者。该设备可以以其它方式定向(旋转90度或在其它方位上),并且相应地解释本文所使用的空间相对描述符。
1.1.概述
自动驾驶(又称无人驾驶)是当前非常热门的研究课题,其集成了几种自动化***以在很少人工输入或无需人工输入的情况下实现安全且完全自动化***,这些自动化***包括感测与感知、运动控制、网络、人工智能、和决策。
人们在追逐自动驾驶梦想的征程上已经走过了近半个世纪。自动驾驶中的“驾驶”一词提醒人们,应该有东西被驾驶。它可以是汽车、无人机或机器人。汽车作为我们社会中最重要的交通工具,最先与自动驾驶联系在一起。第一辆被普遍接受的“自动驾驶汽车”是斯坦福车。
什么是自主性?自主性是指自己做决策的能力。在人类中,自主性使我们完成最有意义的任务,更不用说无意义的任务了。这包括走路、说话、挥手、开门、按按钮和换灯泡等事情。在机器人中,自主性真的没有什么不同。自主机器人就像人类一样,也有能力自己做决策,并随后相应地执行动作。真正的自主机器人是这样的机器人:该机器人能够感知其环境,能够基于该机器人所感知的内容和/或该机器人已经被编程为对条件进行识别来做出决策,然后能够在该环境中对运动或操纵进行致动。例如,关于机器人的移动性,这些基于决策的动作包括但不限于一些基本任务,如启动、停止、以及绕过在其前进道路上的障碍物。
自主机器人可以用于许多应用场景。目前,自动驾驶不仅集中在汽车上,也可以在无人机或机器人上实现。典型的自动驾驶技术的核心概念是从环境中感测、控制并做出决策。这表现出与机器人(尤其是智能机器人)的概念的巨大相似之处。因此,一些由机器人开发的技术或算法可以与车辆共享和利用车辆来实现,而直接在机器人上开发和测试比直接将测试车上路更方便和安全。它可以成为开发先进的自主技术和算法的平台。此外,自动驾驶机器人具有几个独特的特征和适用场景。基于自动驾驶与机器人的思想和关系,构建并落地了自动驾驶机器人。
2.1主要目标
本公开的主要目标包括以下所提出的五个部分:
a).基于带有传感器的赛格威(SEGWAY)自平衡机器人构建自动驾驶机器人,所述传感器包括16通道固态LiDAR、RGB摄像头、车轮角度编码器、陀螺仪、以及包括伺服和微控制器的致动器。
b).基于该机器人,实现几种基本功能,包括运动控制、感测、以及车轮里程计。
c).基于这些基本功能,开发并实现几种自动驾驶功能,包括避障、二维同时定位与地图构建(2Dsimultaneously localization and mapping,2D SLAM)、摄像头与LiDAR数据融合、以及路径规划。
d).测试机器人的性能,并在不降低响应速度的情况下,同时集成对机器人提到的所有自动驾驶功能。
e).利用1.2.c中提到的所有自动驾驶功能来建立基于ROS和Gazebo的模拟环境和模型,并实现一些其它仿真算法,以验证和探索在该机器人下的一些未来可能的研究工作的潜力和能力。
此外,在本公开中将论述并提出以下几种技术和算法,这些技术和算法包括:
a).两轮差速运动学模型。
b).微控制器和伺服。
c).避障。
d).LiDAR和点云。
e).传感器数据融合。
f).SLAM和滤波。
g).路径规划。
在仿真部分中使用的一些其它技术和原理将不在我们的讨论范围内。
2.2避障
出于始终保持机器人安全的原因,避障是自动驾驶机器人最基本的功能之一。当对机器人实现避障时,两个主要问题包括传感器和算法的选择。如表1所示,对于不同的应用场景,有几种类型的传感器选择,而所选择的算法可能会因原理相同而不会显著变化。
表1:USVS内各种传感器的优点和局限性。错误!未找到参考源。
用于避障的算法可以分为两种类型。包括人工势场(Artificial PotentialField,APF)和虚拟力场(Virtual Force Field,VFF)的传统算法错误!未找到参考源。通常具有令人满意的实时性能和较高的安全裕度,但是在动态环境下不能达到良好的效果。与之相对的是智能优化算法,所述智能优化算法包括模糊逻辑算法(Fuzzy LogicAlgorithm,FLA)、遗传算法和快速搜索随机树(Rapidly Random-exploring Trees,RRT)等。智能优化算法最显著的优点是在动态环境中具有良好的性能。对移动障碍物反应迅速,这可以提高安全性。这些算法的完整性是为了处理真实道路的复杂条件和可能的潜在未知威胁。
人工智能中有一个著名的理论是“天下没有免费的午餐”。对于不同的实际应用场景,对传感器和算法的选择应该灵活,以平衡成本和性能。避障的简单逻辑可以描述为如图1A所示。这种逻辑总是利用如图1B所示的网格地图来实现。由网格地图提供的信息分辨率较低,这适合于简单的逻辑。错误!未找到参考源。
最近发布的用于避障的另一逻辑称为如图2所示的考虑机器人运动的不确定性(considering the uncertainly of the robot motion,CURM)的间隙。错误!未找到参考源。该算法是一种基于速度控制设计的局部避障算法,其中CURM为参考速度的不确定椭圆中的最小值。我们的方法表现出与CURM和图1中的简单逻辑这两者相似性,且稍后将在第3部分中介绍。这种逻辑在全局地图不确定且障碍物正在移动的动态环境中表现出高性能。
避障技术作为决策过程的一部分,始终与路径规划(路径选择)一起实现。
2.3LiDAR和点云
作为自动驾驶技术中最关键的传感器之一,激光雷达或LiDAR具有在立体上全面感测环境的能力。它在研究和工业上也有广泛应用。LiDAR可以分为几种不同的类型,这些类型包括2D/3D、单通道/多通道、和360°/180°等,而在本公开中,我们主要将对3D多通道LiDAR的应用集中在自动驾驶上。
LiDAR可以用于自动驾驶的几乎所有功能。如图3所示,用于自动驾驶的典型LiDAR通常是固态多通道LiDAR,该固态多通道LiDAR在测量时使用飞行时间(time-of-flight,TOF)。错误!未找到参考源。接收到的光脉冲将被解码为大量包含位置和反射强度信息这两者的点,其被称为点云。解码后的典型点云数据格式为[xyz强度]。
在本公开中,将对我们的机器人实现16通道固态LiDAR,用于提供实现了占用网格避障、摄像头和LiDAR数据融合、以及2D SLAM的点云数据。
2.4传感器数据融合
传感器数据融合是一种可以将不同类型的传感器结合在一起、使它们取长补短的强大技术。如图5所示,传感器数据融合在自动驾驶中的应用可以是简单的(例如对象协同检测),也可以更复杂(例如3D重建、以及语义地图构建)。
将LiDAR和摄像头融合在一起的一个示例是使用机器学习,例如图4中所示的流程图。然而,为了精确校准,对传感器进行融合的前提是知道空间相对关系,这意味着需要提前对传感器进行校准,以生成摄像头和LiDAR这两者的内在矩阵和外在矩阵。对于诸如KITTI等一些开源数据集,错误!未找到参考源。该内在矩阵和外在矩阵已经被校准,但由于这个机器人是我们自己构建的,因此该摄像头和LiDAR需要从头开始校准。
校准的关键是从图像和点云这两者中提取相同的特征,然后将它们匹配在一起。如图6所示,现有的几种校准方法使用模糊逻辑将解析的图像和点云融合在一起,而不管是哪种对象正在提供特征。错误!未找到参考源。另一方法对于固定位置传感器更适合且更鲁棒。这种方法的关键是使用棋盘作为地标。首先,它检测并估计图像和点云中每个棋盘格的角点,然后它可以仅用从摄像头校准的内在矩阵,将来自点云的每个角点重新投影回相同坐标下的图像,并计算重新投影误差。一些改进可以通过应用细化和优化算法来实现。例如,在ILCC错误!未找到参考源。中,如图7所示,表述了基于强度和颜色之间的对应关系的约束的优化代价函数。我们的对LiDAR和摄像头数据的校准和融合的方法是基于ILCC的,这将在第3部分中具体地介绍。
2.5SLAM和滤波
定位和建图是自动驾驶和机器人领域的主要关注点之一,因为它通常是路径规划的前提。SLAM包括同时估计配备传感器的机器人的状态,以及构建传感器正在感知的环境的模型(地图)。使用环境地图的需要是双重的。首先,地图通常需要支持其它任务;例如,地图可以为路径规划提供信息,或者为人类操作员提供直观的可视化。其次,地图允许限制在估计机器人状态时犯的错误。在没有地图的情况下,航位推算会随着时间的推移而迅速漂移;另一方面,使用地图(例如一组可区分的地标),机器人可以通过重新访问已知区域来“重置”其定位误差(所谓的闭环)。错误!未找到参考源。因此,SLAM发现了在先前地图不可用且需要构建的所有场景中的应用。在自动驾驶和机器人中,如图8A至8D所示,地图可以根据用途和包含的信息分为几种类型。然而,在本公开中,我们仅关注网格地图,因为地图的主要应用是用于路径规划。
SLAM也可以分为几种类型。人们通常依据对传感器的使用将SLAM分为两大类,这两大类包括视觉SLAM和激光SLAM。SLAM的这两种方法各有优点和缺点,如表2所示。
表2:激光SLAM和视觉SLAM在某些方面的比较。
与视觉SLAM相比,激光SLAM更适合本公开中提出的机器人的应用,激光SLAM可以根据所实现的算法分为包括基于滤波的和基于图的两种类型。基于滤波的SLAM错误!未找到参考源。将定位和建图过程建模为概率问题,其使用概率滤波随着激光扫描和里程计的输入同时在每一帧中估计机器人的位姿。基于图的SLAM错误!未找到参考源。创建子图来表示机器人的状态和地图,并使用非线性最小二乘法来优化这些图。表3介绍了激光SLAM的发展和特征。
地图的质量可能是影响机器人性能的关键。结构不良、精度较低的地图可能会为机器人提供错误的坐标,并可能导致撞车。此外,机器人必须知道自己的当前位置,这是整个建图过程的前提。基于对我们机器人的实际应用和软件开发环境的考虑,优化的RBPF 2DSLAM错误!未找到参考源。是最合适的算法,该算法比基于图的方法更轻便,与其它基于滤波的方法相比精度更高。
缩写RBPF代表Rao-Blackwellized Particle Filter(拉奥-布莱克威尔粒子滤波)。错误!未找到参考源。作为粒子滤波的扩展,RBPF是解决状态估计问题的强大工具。如前所述,基于滤波的SLAM将定位和建图过程建模为概率问题,该概率问题可以表述为状态变量的后验分布,该状态变量包括机器人地图m={mi}和以传感器观测序列z1:t={z1,…,zt}和控制命令序列{u1,…,ut}为条件的机器人轨迹x1:t={x1,…,xt}。
表3:通过发展的激光SLAM的配置。
它使用多个粒子来表示后验,并且在每个时间间隔之后它将更新这些粒子并对它们进行重采样以获得机器人的正确位置并前进到下一个时间间隔。基于这个假设,RBPFSLAM将定位和建图分开,在确定机器人当前位姿后构建地图。相对简单的粒子滤波过程使其比基于图的方法更轻,而重采样步骤也会导致称为粒子退化的常见故障。粒子退化意味着:在多次重采样迭代之后,一些携带正确信息的粒子可能会被丢弃,并且粒子的多样性可能会降低。针对这个问题,RBPF应用了两个改进。第一个改进称为选择性重采样,该选择性重采样在重采样步骤中设置了阈值。这将仅对当前分布中心之间距离较小的、具有较大权重的这些粒子进行重采样。第二种改进是使用改进建议的分布,这意味着:在对粒子进行加权时会考虑最近传感器读取的结果,因为传感器的观测总是比控制命令更准确。通过这两项改进,RBPF具有更少的重采样次数和粒子数以防止粒子退化问题,同时也获得了更高的准确度。
关于RBPF SLAM(或更广泛地基于滤波的SLAM)的研究仍在进行中。许多研究人员提出了各种方法来提高性能,例如错误!未找到参考源。错误!未找到参考源。错误!未找到参考源。错误!未找到参考源。。但这些产物将不会过多论述,因为我们的产物的理论背景已经足够了。接下来在第3部分中,我们的方法将详细介绍关于我们如何在我们的机器人上实现RBPF,我们做了什么样的调整,以及我们使它实时的方法。
2.6路径规划和强化学习
在这部分中,由于公开内容的主题是自动驾驶机器人,因此将主要介绍机器人路径规划的背景。此外,本公开的主要目的是构建自动驾驶机器人,该自动驾驶机器人也可以用作算法开发平台。因此,还将介绍一些与路径规划相关的先进技术。在这里,我们将主要关注当前最热门的研究方向--强化学习。错误!未找到参考源。
路径规划(或称为路径选择、导航技术)是众所周知的,同时在自动驾驶和机器人中发挥着至关重要的作用。通常,人们将路径规划问题描述为在地图上规划和引导从位置到目标的路线或路径的过程或活动。事实上,路径规划的三个常规问题包括定位、建图和运动控制,这三个问题已经在之前介绍过并且将作为本公开的主要关注点进行详细论述。自20世纪70年代以来,自动驾驶和机器人的路径规划研究备受关注。错误!未找到参考源。在过去的几年中和最近,由于自主机器人现在应用于各种应用中,该领域的研究有所增加。因此,如图9所示,经过多年的发展和演变,路径规划的分类已经划分为许多领域。在这里,我们仅关注2D环境,因为本公开中提出的机器人可以归类为地面自主移动机器人。如图9所示,在2D环境域下,路径规划技术也可以根据侧重点划分为几个领域。
图10介绍了关于多年来引用的机器人路径规划算法的影响的调查。显然,路径规划算法发展的全盛时期始于20世纪80年代,并在2000年代以后逐渐趋于稳定。错误!未找到参考源。主要的可能原因之一是自然启发算法的狂热。用于路径规划的自然启发算法具有广泛的应用,这些自热启发算法包括人工神经网络、蚁群优化算法、蜂群算法、萤火虫算法、粒子群优化算法、细菌觅食算法和蝙蝠算法等。错误!未找到参考源。然而,被引用的论文往往更多地包括对一些著名算法(例如A star(A*)算法和快速探索随机树等)的改进。此外,人工智能的快速发展也对路径规划技术产生了影响,这体现为对强化学习(ReinforcementLearning,RL)的实现。
因此,在本章中,将介绍在本公开的背景下关于路径规划和强化学习的一些相关产物,其包括Astar(A*)算法、Dijsktra算法、A star启发式算法、贪婪算法、以及强化学习。
对于A stat(A*)和A*启发式:A*实际上是一种搜索算法,特别是在图遍历和路径搜索中。当使用网格地图来表示环境时,可以在路径规划上实现该算法。更具体地说,A*是一种知情搜索算法,或者更广为人知的是最佳优先搜索,这意味着它是用加权图来表述的。从图的特定起始节点开始,它旨在以最小的代价(最短路径或时间等)找到到给定目标节点的路径。这是通过维护源自起始节点的路径树并将这些路径每次扩展一个边直到满足其终止标准来实现的。错误!未找到参考源。
在其主循环的每次迭代中,A*需要基于路径的代价以及将路径扩展到终点所需的代价的估计来确定扩展其路径中的哪条路径。这可以表述为最小化:
f(n)=g(n)+h(n)
其中,n是路径上的下一个节点,g(n)是从起始节点到n的路径的代价,并且h(n)是估计从n到终点的最便宜路径的代价的启发式函数。当它选择扩展的路径是从起点到终点的路径,或者如果没有符合扩展条件的路径时,A*终止。在这里,由于我们使用网格地图而不是图形,因此实现A*的示例可以描述为如图11所示。
对于Dijsktra:与A*类似,Dijsktra是一种通过最小化从起点到终点的代价的搜索算法。描述Dijsktra所使用的环境的方法与A*相同,即使用多个节点来定义机器人可到达的各个位置。然而,不同的是,Dijkstra使用的标签是正整数或实数,它们是完全有序的。它可以推广到使用任何部分排序的标签,提供的后续标签(当遍历边时产生后续标签)是单调非递减的。
原始算法使用最小优先级队列。设我们开始的节点称为初始节点,并且节点Y的距离为初始节点到Y的距离。那么Dijkstra算法的过程可以被描述为分配一些初始距离值并试图逐步改进它们:
将所有节点标记为未访问。创建所有未访问节点的集合,称为未访问集。
为每个节点分配暂定距离值:对于我们的初始节点,将暂定距离值设置为零,而对于所有其它节点,将暂定距离值设置为无穷大。将初始节点设置为当前节点。
对于当前节点,考虑其所有未访问的邻居并计算它们距当前节点的暂定距离。将新计算出的暂定距离与当前分配的值进行比较,并分配较小的值。例如,如果当前节点A标记的距离为6,并且连接它与邻居B的边的长度为2,则B到A的距离将为6+2=8。如果之前用大于8的距离标记B,则将其更改为8。否则,将保留当前值。
当我们考虑完当前节点的所有未访问邻居时,将当前节点标记为已访问并将其从未访问集中移除。已访问的节点将永远不会被再次检查。
如果目标节点已被标记为已访问(当规划两个特定节点之间的路线时)或者如果未访问集中的各节点之间的最小暂定距离为无穷大(当规划完整的遍历时;当初始节点和其余未访问节点之间没有连接时发生),则停止。算法已经完成。
否则,选择标记有最小暂定距离的未访问节点,将其设置为新的“当前节点”,并返回步骤3。错误!未找到参考源。
对于贪婪算法:贪婪算法,或称为贪婪策略,实际上是一种解决问题的方法,其多应用于优化问题。该算法在每一步都做出最优选择,因为它试图找到解决整个问题的整体最优方法。如果满足以下两个属性,则可以实施贪婪算法来解决问题:
贪婪的选择属性:通过在每一步选择最优选择,可以达到全局最优解。
最优子结构:如果整个问题的最优解包含子问题的最优解,则该问题具有最优子结构。
对于路径规划问题,由于Dijkstra算法满足这两个属性,因此可以将贪婪算法应用于Dijkstra算法。
对于强化学习:强化学习是机器学习与监督学习和无监督学习并列的独特分类,如图12A至图12B所示。关于强化学习的整个领域已经发展成了一个广阔的领域,并被实施到各种理论或实际应用场景中。因此,在这里,我们将仅介绍将用于机器人路径规划的强化学习领域部分。强化学习的主要过程可以描述为智能代理与环境之间的交互。智能代理将在环境中采取动作,以最大化累积奖励的概念。强化学习也可以分为许多不同的分类。我们将不会列出和介绍所有这些类别,而是专注于Q学习,一种无模型的强化学习算法。错误!未找到参考源。
可以将Q学***均值来更新简单迭代值Q(S,A)的:
R是从状态S移动到状态S′时收到的奖励。
Q(S,A)-αQ(S,A)是通过学习率加权的当前值。学习率接近1的值使得Q变化更快。
αR是当在状态S时采取动作A获得的奖励R=R(S,A)。
αγ·maxaQ(S′,a)是可以从状态S′获得的最大奖励。
当状态S为最终状态或终端状态时,算法的一段时期结束。
选择Q学习的原因在于:Q学习的最经典的实际应用之一是迷宫难题,这类似于本公开的2D网格地图上的路径规划。典型的迷宫难题可在图14中进行了描述。
通过使用Q学习解决这个迷宫问题的过程是训练代理在没有给定环境先验知识的情况下找到从网格(0,0)开始到(6,6)的最优路径。为了促使机器人找到最短路径,每次机器人移动到空的(白色)单元格时都会施加0.04个单位的小惩罚,并且迷宫周围放置了障碍物(标记为灰色),如果机器人进入包含多个障碍物中的一个障碍物的单元,则会产生0.75个单位的较大惩罚。机器人仅可以向上、向下、向左或向右移动(即不允许对角线移动)。然而,一定程度的不确定性与每次移动相关联,使得机器人在预期方向上移动的可能性仅为80%,而机器人与预期方向成直角移动的可能性为20%(在两种可能性之间均匀分配)。机器人无法移动到迷宫边界之外,并且如果它试图这样做,则会撞到墙上,并且其位置保持不变。如果机器人成功到达迷宫的尽头,它将获得1个单位的奖励。假设折扣率为0.9,学习率为0.3,并且ε贪婪探索策略的(常数)ε等于0.5,则在Q学习算法迭代50000次之后,我们得到以下策略。该图显示了机器人在网格的每个方格中占据的最优方向。
因此,通过Q学习解决问题的关键是不断更新Q表上的值,并根据新值对下一步运动的某些状态做出决策。
第3部分方法
3.1机器人硬件原理图
硬件设置和选择可以在图15和表4中进行描述。选择了赛格威九号(SEGWAYNinebot)S两轮自平衡滑板车作为基础,除了其自身的驱动***外,我们对其进行了修改。替代地,我们安装了一个斜度驱动(slope-driven)摆锤机构来控制速度,并安装了一个横杆来控制转向。一旦机器人通电,它就可以自己保持平衡,并且我们通过连接到摆锤和横杆的两个伺服实现了对机器人的控制。在机器人的底部有另一连接到支架的伺服,以使其在断电时保持站立。在第3.2节介绍运动学和动态模型之后,将在第3.3.1节中介绍有关我们如何控制机器人的更多详细信息。
表4:所提出的机器人的硬件配置。
对传感器的选择也在表3.1示出。LS16通道LiDAR和海康威视DS-2CD2455FWD-IW网络摄像头被选为主要环境感知***,而维特智能WT901C-4859轴IMU(陀螺仪)和两个S&C103SR13A-1霍尔效应磁传感器构成了自状态感知***。为了将这些传感器和致动器集成在一起,选择了一台微软界面(Microsoft Surface)笔记本电脑和两个Arduino Uno微控制器。将在第3.3.2部分中介绍有关数据格式和获取的更多详细信息。
3.2机器人的运动学和动态模型
3.2.1两轮差速运动学模型
机器人的底盘运动学模型可以表示为两轮差速模型,错误!未找到参考源。根据该模型,我们可以根据如图16A和图16B中所示的传感器的输入计算预期的运动机能,这些运动机能包括位姿(相对于全局的X、Y坐标和方位角)角速度和线速度等。
如图16B所示,机器人的运动可以分解为一种圆周运动。V和ω表示整个机器人的线速度和角速度,而VL和VR是机器人左轮的线速度和右轮的线速度。d是左轮和右轮之间间距的一半。如果我们将V和ω设置为已知,那么左轮和右轮的速度可以确定为:
VL=ω×(L+D)=ω×(L+2d)=ω×(R+d)=V+ωd (3.1)
VR=ω×L=ω×(R-d)=V-ωd (3.2)
相反,V和ω也可以根据轮速确定:
或者我们可以使用向量来表示为:
在(a)中我们使用里程计模型来计算机器人的位置。里程计模型可以随时对机器人相对于全局坐标的位置和方位角进行积分。θ是任何当前XR和Xw之间的角度。实际上有两种计算位置的方法,第一种方法是使用轮速和积分,其误差较大:
Xt=Xt-1+Δxw=Xt-1+Δd*cos(θ)=Xt-1+△t*V*cos(θ) (3.6)
Yt=Yt-1+Δyw=Yt-1+Δd*sin(θ)=Yt-1+△t*V*cos(θ) (3.7)
或者可以直接根据车轮编码器的增量确定:
Δe是单位时间Δt内车轮编码器脉冲的增量(Δt通常会被设置为10ms或20ms),S为车轮转动一圈时编码器的脉冲总数,以及r为车轮半径。θ可以直接从陀螺仪的偏航角读取。在这种情况下,我们可以从里程计模型中确定机器人的位姿和轨迹。
3.2.2动态模型
机器人的动态模型可以描述为斜度驱动摆锤速度控制机构,如图17所示。机器人的速度和方向控制是通过连接到摆锤和转向杆的两个伺服实现的。平面XOZ中的角度θ和平面YOZ中的角度确定了X方向线加速度Δ和z方向角加速度β。这两个角度与加速度之间的物理对应关系可以表述为:
通过校准确定了关系和系数。我们将摆锤和转向杆更改为不同的角度,并从设置在机器人床的平面上设置的IMU(陀螺仪)中读取加速度Δ和β。
有了机器人的动态和运动学模型,我们仍然需要一个东西来精确地输出期望的速度和航向,这就是PID控制器。该PID控制器可以为闭环控制***提供来自车轮编码器和IMU(陀螺仪)的速度和航向反馈。已经实施到我们的机器人控制***以用于速度/方向控制的典型PID控制器可以如图18所示的流程图进行描述。
通过输入期望的速度和方向,以及来自IMU和编码器的当前运动状态的反馈,可以生成更精确的速度和转向控制并将其输出到伺服。
3.3控制和感测
3.3.1控制机器人
在3.2部分之后,我们已经知道需要输出两个伺服的角度来实现对机器人的控制。因此,在这一部分中,将介绍如何将角度命令输出到伺服的方法。
本公开中选择的伺服为DS3225 25KG数字伺服。一些有用的规格已经在表5中示出。
表5:DS3225 25KG数字伺服的规格。
众所周知,伺服的工作原理可以简单地在图19中描述。伺服的角度会随着占空比的变化而变化,这称为脉宽调制。在这里,我们选择了两个工作频率为50Hz、工作电压为6V的伺服。
所提出的伺服具有三个端子,这三个端子包括信号端、电源输入端和接地端。基于规格和要求,我们选择了Arduino Uno微控制器来控制这两个伺服。该线路图可以在图20中简单地描述。每个伺服具有独立的电源,并且它们与微控制器共用相同的接地。通过Arduino的内置库可以简化对这些伺服的PWM控制。然后将Arduino Uno连接到上层***,该上层***是通过界面(Surface)上的Python3.6建立的主框架。
库PyFrimata实现了Arduino和Surface之间的通信。通过该库将PWM命令数字化为小数位数为两位的数字,并输出到引脚#9和#11。这样,通过运动学和动态模型,我们能够实现对机器人的速度和方向的控制。
3.3.2感测
对于LiDAR:从LiDAR获取的数据称为点云,这已经在第2部分中介绍过。在本公开中,所选择的LiDAR是LS16通道LiDAR,其规格已经在表6中示出。
表6:LS16通道LiDAR规格
/>
LiDAR与Surface之间的连接是通过以太网和UDP协议实现的。从LiDAR接收的原始数据包有三种类型,这三种类型包括主数据流输出协议(main data stream outputprotocol,MOP)、设备信息输出协议(device information output protocol,DIFOP)和用户配置写入协议(user configuration write protocol,UCWP)。每种类型的数据包具有1248字节的长度,并且在这里我们可以解析来自MOP的点云数据。在对接收到的数据包进行解码后,我们可以以格式{距离、方位角、强度、激光ID、时间戳}收集数据。
表7:与激光ID相对应的垂直角。
由于我们使用的是16通道LiDAR,每个接收点的垂直角可以通过图21和表7确定。然后我们可以计算每个点的3D信息并以如下格式生成点云数据:
其中θ和是垂直角和方位角。注意,我们可以在10Hz的扫描频率下每次扫描接收38400个点。作为主要的环境感知模式,所收集到的点云数据可以用于避障、数据融合和SLAM。在图22中,从LiDAR采集的典型点云扫描帧可以被可视化。这些点是按强度顺序着色的。
对于摄像头:这部分相当简单,因为图像的获取不需要太多的步骤。这里选择的海康威视DS-2CD2455FWD-IW摄像头是单目网络摄像头,并且有用的规格已经在表8中示出。
表8:海康威视DS-2CD2455FWD-IW摄像头的规格。
与LiDAR一样,摄像头也通过以太网连接到Surface,并且来自Python的开源库OpenCV已经提供了内置的图像采集功能。在本公开中,与其它视觉驱动的机器人不同,视觉信息主要用于数据融合。因此,对图像分辨率的要求并不像已经选择的1920×1080那样严格。图像可以与点云同时采集,以便我们可以在稍后第4部分中进行数据融合。
对于车轮编码器:该机器人上实现的车轮编码器是我们自己构建的。硬件结构和测量原理可在图23中描述。
当有磁铁经过其检测元件前方时,所选择的霍尔效应传感器将产生脉冲。我们制作了两块铝板,其中,32块磁铁根据车轮的中心,均匀且呈辐射状地位于每块板上。板将以与轮子相同的速度转动,这个简单的***成为了我们的车轮编码器。因此,根据该编码器测量轮速的关键是检测来自霍尔效应传感器的上升沿的速率。为了检测上升沿,我们将霍尔效应传感器连接到另一个Arduino Uno微控制器,并使用数字中断引脚,这会自动将检测到的脉冲数添加到计数器中。中断时间间隔设置为0.5s。
然后,利用车轮的一些参数,我们可以通过以下等式计算轮速和里程:
其中nL和nR是左车轮和右车轮在每个中断时间间隔接收到的脉冲,r是车轮的半径,OL和OR是左车轮和右车轮的里程。因此,可以直接从该编码器读取车轮转速和线速度。经过简单的封装后,从编码器读取的信息将以如下形式发送到Surface:
{SLSωLRSωRLOOLROORE}
其中S,E表示开始和结束,LS,RS,LO,RO表示左车轮和右车轮的转速和里程。
然后,我们通过将固定路线设置为地面实况,读取左里程和右里程并取多次测试的平均值来简单地校准里程计。当使用直线路线时,精度表现得很好,因为它可以达到大约98.72%。然而,当我们尝试使用里程的增量来定位机器人的位姿时,精度并没有达到预期。在多次尝试之后,发现原因是SEGWAY的差速驱动方式在转弯时造成左车轮和右车轮转速差异,而这必然导致里程差异。另外,当机器人原地回转时,编码器仍然会添加脉冲,而机器人的位置实际上并没有改变。对于这种情况,添加了修正因子,如以下等式所示:
修正因子ko的分类表示左车轮和右车轮之间的速度差,并且它是通过多次试验校准确定的。因此,新的里程计可以与IMU一起用于定位机器人。
对于IMU:对于摄像头来说,这部分相当简单。这里使用的IMU是WitMotionWT901C-485,一种9轴惯性测量单元,或称为陀螺仪。IMU的测量原理不在本公开的讨论范围内,因此在这里我们只简要介绍其实现以及如何将来自编码器的信息组合在一起来确定机器人的位姿。IMU的侧倾轴、俯仰轴和偏航轴可以在图24中描述。
IMU通过USB连接到Surface,并且我们可以分别读取每个轴的线加速度、角和角速度。注意,从IMU读取的偏航角的绝对值为零,其对应于东北方向28.40°。然后利用之前提到的运动学模型和同时从编码器上读取的里程,我们可以通过以下等式确定机器人的位置:
其中ΔO=|OL-OR|t-|OL-OR|t-1是里程的增量。此外,三个轴的线加速度可以用于避障,这将在3.5.1部分中详细介绍。
3.4软件***框架
我们没有像大多数机器人那样使用机器人操作***(robot operating system,ROS),而是基于Python3.6构建整个***。软件***结构可以描述为图25中的流程图。
如图25所示,具有高、中、低三个层级,这三个层级通过I/O通道和消息代理连接。下层包括I/O通道、传感器和致动器。这层的任务是感知和动作。从传感器收集的数据将被流式传输到中层以进行解码和预处理,而来自上层的动作命令将被执行。中层接收到来自下层的数据后,将会对数据进行解码和预处理(例如过滤、转换),并将处理后的数据发布到消息代理。另外,高层发出的命令和决策将被转换为可以由伺服直接执行的PWM。在这里,用户可以直接从消息代理读取数据。高层包括了所提出的四个主要功能:避障、SLAM、路径规划和数据融合。该层的主要目标是通过订阅在消息代理上发布的数据来实现这些功能。这很方便,因为一种数据可以用于不同的功能。例如,从IMU读取的侧倾-俯仰-偏航角可以同时用于SLAM和避障这两者。此外,消息代理对于确保所收集的数据的同步性可能是至关重要的。最后,一些结果和信息(例如全局网格地图、局部占用地图和彩色点云)将由高层生成并传递给消息代理以呈现给用户。同时,机器人将自主动作,例如对环境进行自我探索。
3.5功能实现
3.5.1避障(2D-LiDAR占用网格建图)
已经在图26中示出了避障功能的流程图。该功能的基本逻辑可以描述为对避障的随机自我探索,而动作原理可以描述为2D-LiDAR占用网格建图和和运动学驱动的模糊逻辑算法。
如图26所示,该功能的输入包括由LiDAR生成的2D网格地图、从编码器读取的轮速、从IMU读取的角度和加速度。在模糊逻辑判断模式之后,将生成期望的包括速度和转向的控制命令,并将其传递给相应的两个伺服。模糊语言变量的含义已被定义为:
距离:{远,近}
当前速度:{快,慢}
转向:{左,前,右}
加速度:{BN,SN,Z,SP,BP},{大负,小负,零,小正,大正}
在这里,已经在图27中示出了左距离、右距离和前距离的定义。局部地图的网格尺寸已设置为接近机器人尺寸的0.3m,并且地图尺寸已设置为3×3m。局部网格地图的中心是机器人的当前位置,而机器人的当前航向设置为与全局中的北方相同。根据模糊语言变量的含义,我们定义了50条规则作为指导机器人动作的参考,如表9所示。因此,下一步是生成2D网格地图作为感知,并定义机器人的控制量。
注意,为了生成2D局部网格地图,还要实现另一个数据预处理步骤,以便减少计算负载并提高运行速度。如前所述,从LiDAR接收到的点云数据的格式被概括为:
但在这个函数中,唯一有用的信息是X,Y坐标。此外,对局部地图的构建将仅关注3×3m内的点。因此,我们首先提取X,Y坐标并删除所有超过3×3m的点。然后,对于地图上的每个网格,我们对坐标内的点数进行计数并设置置信度阈值来消除异常点。
利用局部网格地图、轮速和加速度,我们能够确定输入变量的模糊隶属度。在这里我们选择连续的和三角形的域函数作为每个输入变量的隶属函数,如图28A至图28E和图29A至图29B所示。
表9:模糊逻辑规则集。
/>
3.5.2传感器数据融合
这部分可以分为两个主要步骤,从LiDAR和摄像头开始,如图30所示。第一个步骤是对LiDAR和摄像头进行协同校准,以获得这两者的内在矩阵和外在矩阵。利用外在矩阵,可以求解几何变换(转动R和平移T),从而在同一坐标下将点云和图像帧关联在一起。
为了校准摄像头,使用了传统的方法,该传统的方法查询尺寸为6×9的棋盘,并且每个棋盘为10×10mm,如图31所示。所采集的用于校准的图像的分辨率为1920×1080,并且一个图像集包含棋盘在处于不同角度和位置处时采集的20幅图像。
本公开中提出的传统摄像头校准方法可以概括为建立真实世界和像素坐标之间的关系的过程,该关系可以被量化和编程。在图32中,参与这个过程的所有三个坐标系都以不同的颜色标识。红色的坐标系是摄像头坐标系,在这里我们用Oc-XcYcZc来表示。绿色的坐标系是图像坐标系(或像素坐标系)o-xy。黄色的坐标系是真实世界的坐标系Ow-XwYwzw。这些坐标系之间的关系是一些平移和旋转变换、以及称为针孔成像原理的物理原理,如图32所示。总之,从图像坐标系到世界坐标系的变换可以用两个矩阵来表示,这两个矩阵分别是所谓的内在矩阵和外在矩阵。
其中f是摄像头的焦距,Zc是比例因子,u0和v0是主点。矩阵称为内在矩阵,而/>称为外在矩阵。
现在,通过提取从机器人采集的图像集中的棋子角点,我们可以从不同的图像中获得相同角点的坐标。从这个过程中可以确定内在矩阵,它将作为校准结果在第4部分中介绍。
如前所述,对来自摄像头和LiDAR的数据进行融合的关键是准确地建立它们之间的平移和旋转关系。有了校准后的图像,下一步是将传感器本身的每个坐标一起放在同一坐标系中。给定LiDAR点云坐标PL=(XL YL ZL)和摄像头坐标Pc=(Xc Yc Zc),几何变换可以确定为:
其中R和T与旋转矩阵和平移矩阵相同。平移矩阵T=[tx,ty,tz]T是3×1列向量,旋转矩阵R可以通过与坐标轴相关的三个旋转角度{θx,θy,θz}来确定:
R=Rz(θz)Ry(θy)Rx(θx) (3.17)
/>
然后将真实世界中为三维的点Pc=(Xc Yc Zc)可以反投影到坐标p=(u,v)中的图像平面上。根据已在前面提到的针孔成像原理,齐次坐标中的投影方程可以表述为:
其中s是比例因子,(fx,fy)和(uo,vo)与焦距和主点相同。
为了获得更好的数据融合结果,还应该考虑由透镜像差引起的径向失真。类似于,错误!未找到参考源。我们使用两个失真参数k1和k2来表征径向失真。然后,失真校正投影可以表述为:
其中是失真点并且p=(u,u)是禾失真图像上的像素。
现在,由于已经推导出了将3D点云放置到图像平面上的投影方程,下一步就是估计外在参数{θx,θy,θz,tx,ty,tz}和失真参数{k1,k2}。我们仍然使用6×9×10棋盘作为地标,且每个棋盘的角点将是投影的目标点。3D点云中的角点PL将被投影到2D图像点上,以计算这些角点与图像中的真实角点p*之间的绝对差值。然后,可以通过最小化代价函数来导出外在参数和失真参数的估计,如下所示:
其中i是点索引并且n是点的总数。
为了从3D点云中提取角点,本公开中强调有两个关键点。第一个关键点是使用几何特征在3D点云中求出棋盘的尺寸。第二种关键点是使用棋盘上白色块和黑色块的不同LiDAR反射。
最后,利用估计的内在矩阵和外在矩阵,可以确定用于数据融合的3D点云和2D图像之间的3D-2D对应关系。
3.5.32D SLAM
如前所述,定位和建图是自主机器人最重要的部分之一。在这里,我们将详细介绍如何在我们的机器人上实现2D SLAM功能的方法和过程。
基于运动控制和观测的不确定性,SLAM问题可以描述为一种马尔可夫决策过程(Markov Decision Process,MDP),更具体地说是部分可观测的马尔可夫决策过程(Partially Observable Markov Decision Process,POMDP),如图33所示。在这里,圆圈表示:
xt:机器人的实际位姿。
ut:发送给机器人的运动命令。
zt:来自传感器的对环境的观测。
m:真实世界或环境的实际地图或描述。
在图34中,已经示出了2D SLAM的理论结构图。由于本公开所提出的SLAM算法是基于粒子滤波的,因此整个SLAM过程可以描述为关于求解机器人当前位置概率的联合概率密度的概率分布问题。如等式所示:
p(x1:t,m|z1:t,u1:t-1) (3.22)
其中x1:t是机器人的轨迹,m是全局地图,z1:t是来自传感器的观测(在这里我们使用LiDAR2D点云、车轮编码器里程和IMU角度),u1:t-1是运动控制命令。
具体地,基于Rao-Blackwell粒子滤波,我们将SLAM分为定位和建图这两个过程,从而可以通过联合概率公式将联合概率密度因式分解为():
p(x1:t,m|z1:t,u1:t-1)=p(m|x1:t,u1:t-1)·p(x1:t|z1:t,u1:t-1) (3.23)
其中p(x1:t|z1:t,u1:t-1)是机器人轨迹在某些已知传感器观测和控制命令下的后验概率分布。注意,(z1:t,u1:t-1)可以认为是潜在的轨迹,并且可以应用粒子滤波来求解这个后验。通过求解这个后验,可以确定机器人的估计当前位姿,这意味着定位已经完成。
SLAM框架可以呈现为具有三个主要步骤的循环。第一个步骤称为预测或采样。这个步骤的输入强调在时间t时角度dθ和位姿(dx,dy)的变化,该角度和位姿可以直接从陀螺仪和里程计读取。通过这些输入,在时间t+1处将生成一定数量{(xi,yi),wi}形式的粒子来表示机器人可能出现的估计位置。将根据重要性采样原则给出这些粒子的权重wi,该权重目标分布和建议分布之间的差异:
π(x1:t|z1:t,u1:t-1)=π(xt|x1:t-1,z1:t,u1:t-1)·π(x1:t-1|z1:t-1,u1:t-2) (3.25)
由于主要的观测传感器是LiDAR,因此我们使用建议分布π(x1:t|z1:t,u1:t-1)而不是目标分布,因为点云数据计算量太大,不能直接建模。换句话说,目标分布甚至近乎无法计算。该建议分布可以通过递归公式来确定。然后,权重被计算为:
是由贝叶斯规则产生的归一化因子,它对所有粒子都是相等的。
为了提高定位和建图过程的准确度,我们在生成下一代样本时添加了来自传感器的最新观测zt。这是因为传感器信息(特别是来自LiDAR的传感器信息)比基于里程计的机器人运动估计更精确,如图35所示,L(i)是似然。通过将传感器观测zt结合到建议分布中,采样将集中在观测似然的有意义区域。该分布在添加zt后变为:
使用该优化的改进建议分布,对权重的计算变成:
如前所述,当用网格地图对环境进行建模时,由于激光传感器的计算量很大,因此不能直接实现对知情建议分布的封闭形式近似。但在这里我们可以使用采样来达到改进建议的近似形式。如图34中的框架所示,第一步是从运动模型p(xt|xt-1,ut-1)中采样一组潜在位姿xj。注意,如果观测似然达到峰值,则位姿样本的数量会很高,因为需要密集采样来覆盖所有高似然的小区域。这将导致粒子数量多,这意味着计算量大。
解决这个问题的方法是,首先通过扫描匹配器确定观测似然的有意义区域,然后仅在该有意义区域进行采样。对于每个粒子i,包括均值和方差/>在内的高斯参数将在时间间隔L(i)中对K个采样位姿{xj}进行单独估计:
使用归一化因子:
最后,获得最优建议的封闭形式近似以生成下一代粒子。注意,权重将通过使用该建议分布来计算为:
这些权重也将通过SoftMax归一化并成为现在有了这些加权粒子,我们就能够确定机器人的位置。如图34中的框架所示,我们可以将当前的2D激光命中变换到以当前位姿为中心的建图坐标来构建地图。从LiDAR到机器人身体框架的变换矩阵为:
其中θn颈部角度和θh头部角度。
从机器人的身体框架到全局地图的变换矩阵是:
其中θ偏航、θ俯仰、和θ侧倾对应于从IMU读取的偏航、俯仰和侧倾,x、y、z是机器人的轨迹。
此外,由于所配备的16通道LiDAR每次扫描可以提供38400个点,所以增加了一些操作来对点云数据进行去噪和降低密度。作为数据预处理操作之一,将设置阈值来移除开始时命中地面的这些点云。
在每次循环之后,将进行评估我们的粒子的质量的判断,以决定是否需要重采样。在重采样步骤中,那些具有低重要性权重wt的粒子将被具有较高权重的粒子替换。这一步可以确保粒子的总数保持有限,因为我们不希望太多粒子阻碍运行速度。反之,重采样也可能会从滤波中移除好的样本,这可能会导致粒子贫化。在这种情况下,毫无疑问,这个判断步骤(或人们所称的“自适应重采样”)对于找到决定何时执行重采样步骤的标准是必要的。引入了表示有效样本量的索引来估计当前粒子集表示目标后验的程度,并且在这里,这个量根据Doucet公式计算为:
如果样本是从目标分布中抽取的,则由于重要性采样原理,它们的重要性权重将彼此相等。目标分布的近似度越差,重要性权重的方差就越高。重采样的阈值设置为N/2,这意味着当Neff每次下降到粒子数的一半以下时,将会发生重采样。
然后,利用转换后的2D激光命中,将在每次循环中生成和更新占用网格,以确保整个功能是实时的。
3.5.4.路径规划
在本公开中,实现路径规划的场景可以被描述和分类为动态的、全局的和准确的。该函数的工作原理基于所构建的全局地图,该全局地图实际上是作为输出从SLAM功能流式传输的。
路径规划过程的流水线可以在图36中描述。如前所述,SLAM功能作为对环境的感知将所构建的全局占用网格地图传递给路径规划功能。占用地图的分辨率已经设置为20单元格/米,并且地图尺寸为30×30m。
然后,根据地图上不同的颜色,将网格地图转换成尺寸和分辨率相同的另一网格地图以进行路径规划。表10已经显示了对应于不同颜色的含义。
表10:与地图上用于路径规划的不同颜色相对应的含义。
用户将被要求在白色网格上选择终点。当前位置也将作为默认起点从SLAM传递。沿障碍物边缘设置了安全区域和危险区域。安全区域的尺寸为3个网格,危险区域的尺寸为2个网格。注意,设置安全区域和危险区域的目的是为安全考虑留出足够的余量。
一旦路径规划功能被激活,机器人将被命令停止并等待命令。用户可以在开始时选择路径规划的方法,这些路径规划的方法包括:
A Star(A*)
A Star启发式
Dijkstra
贪婪算法
加权启发式
强化学习
这些上述路径规划方法的原理已经在第二部分中介绍过了,所以在这里我们只将它们编码到我们的功能中。无论选择了哪种方法,路径都会被转换为一组命令并发送给伺服,以驱动机器人从起点到终点。在这里,由于时间的限制,我们提出了闭环控制,以确保机器人通过来自车轮编码器(速度)和SLAM(轨迹)的反馈而被引导到正确的终点,但在这个部分我们没有实现闭环控制。图37介绍了将路径转换为命令的示例。绿色网格是起点,而黄色网格是终点。机器人当前的位姿是向南前进,因此命令将是:
F&SP,L&SP,F&SP,F&SN,F&Z,R&SP,F&SP,F&SN,F&Z,L&SP,F&SP,F&SN,F&Z,L&SP,F&SP,F&SN,F&Z,R&SP,F&SP,F&SN,F&Z
其意思是左转,前进,刹车,右转,前进,刹车,左转,前进,刹车,左转,前进,刹车,右转,前进,刹车,停车。这样,路径规划和导航的过程就完成了。注意,在这里,我们使用从起始网格到目标网格的曼哈顿距离,这是网格地图的标准启发式。
注意,避障的优先级高于路径规划,这意味着如果局部网格地图显示静态或动态障碍物在危险距离内,路径规划功能将中断,以确保机器人不会撞到什么东西。
3.5.5仿真
这部分实际上不在本公开的主要主题之下。在新冠肺炎(COVID-19)自我隔离期间,提供给机器人在真实世界中的测试环境是不现实的。在这种情况下,我们启动了关于基于机器人操作***(ROS)和Gazebo的对机器人的除数据融合之外的全部功能进行仿真的小项目。这部分将不再详细介绍,但将简要介绍仿真环境构建和所使用的算法。
仿真环境:整个仿真环境基于ROS Kinetic和Gazebo 8.6。该仿真中的机器人被构建为具有两个差速驱动轮和一个无动力全向轮的单圆柱体形状,其与真实世界中本公开所提出的机器人具有相同的运动学模型,如图38所示。圆柱体顶部的两个小黑块是摄像头和Velodyne 3D LiDAR。有关机器人动力学的速度、航向和加速度信息可以通过带有ROS的内置库进行订阅。为了控制机器人,ROS还提供了将控制命令发布到机器人模型的内置库。它可以通过键盘控制,或者我们也可以将例如避障或导航等其它功能产生的命令发送给它。
然后,利用机器人模型,我们从Gazebo内置对象模型中安排了包括室内和室外的两种仿真场景,如图39(室内)和图40(室外)所示。室外场景以交通为关注点仿真了真实城市,其包括交通道路、建筑物、人行道、以及交通标志和信号灯等。注意,它还包括一些预编程动态对象,这些预编程动态对象包括行人和移动的汽车。
在该仿真中,除了数据融合之外,还实现了真实机器人特有的功能,包括避障、2DSLAM和路径规划。此外,由于ROS提供了3D SLAM的开源算法,因此还实现了3D SLAM。注意,所有这些功能都是由开源支持的,本项目的主要工作是在仿真机器人中将它们同时集成在一起。
避障:与本公开介绍的机器人不同的是,仿真中的避障是基于路径规划来实现的。机器人将沿着生成的路径并绕过障碍物。
2D SLAM:开源库,Gmapping。
3D SLAM:两个开源库:Loam和Lego-loam。错误!未找到参考源。
路径规划:基于2D SLAM构建的地图,在地图上手动选择终点。定位算法是基于AMCL的。
第4部分
测试和结果
这个提到的机器人的性能可以体现在多个方面。性能的某些方面可以通过通用指标(例如地图或运行时间的准确度)进行量化。然而,在本公开中,仅对机器人的一些功能进行了测试,以表明该机器人具有这种自动驾驶技术的能力,并可以基于该平台开发一些更高级的算法。因此,在本章中,将介绍测试环境、过程和结果,以向读者概述我们如何在该机器人上进行测试,同时不仅实现这些一起提到的功能,还将多个功能融合在一起并将其视为自动驾驶平台。
4.1测试过程和环境
在本公开中,由于机器人被构建为具有在不同场景下的操作能力,因此没有固定的地点作为测试环境。另一方面,机器人的不同功能可能需要不同的环境来单独测试性能。测试机器人的基本物理环境可以分为室内和室外,其主要包括如图41所示的研究实验室、大学建筑物走廊、我的个人房间(由于新冠肺炎的原因,机器人有时会在我的房间里进行测试)和校园停车场。下面将根据不同的用途详细介绍环境和测试过程。
对于测试数据融合:目标对象可以描述为如图42所示。由于该功能的目标是将图像中的像素反投影到点云数据,因此我们首先设置一些地标,例如室内场景(大学建筑物走廊)椅子上的7×10×30棋盘和两块矩形木板)。然后我们将机器人放在公寓外,使用轿车和行走的人作为目标对象,同样如图42所示。
对于测试避障:室内环境包括研究实验室、大学建筑物走廊和我的房间,而室外环境包括校园停车场。
在这些场景中选择的障碍物包括静态和动态两者,如表11以及其它规格所示。
表11:不同测试环境的规格。
对于SLAM和路径规划:由于规划路径的前提是构建环境地图,因此我们大多在相同的场景下同时测试这两种功能。此外,对于测试机器人的自动驾驶能力,这两种功能的测试环境与避障的测试环境相同,但研究室除外,因为由于新冠肺炎,我们不能在那里进行测试。注意,环境的复杂度会影响建图的准确度,因此我们根据障碍物的数量和放置情况对这些场景的复杂度进行了排序,如下所示:
校园停车场>房间>大学建筑物楼道
由于新冠肺炎,SLAM和路径规划的主要测试场景是我的个人房间。它具有中等复杂性和尺寸为5×3的障碍物,这些障碍物包括墙壁、床、桌子、椅子、盒子和移动的人。这种环境的空间相对不清晰,侧边有狭窄的走廊。对于这种场景,SLAM和路径规划的性能可以主要表现为建图准确度和运行时速度,这将在后面的第4.2.3和4.2.4部分中介绍。
4.2测试结果
4.2.1避障
没有具体的指标来表示避障性能。然而,该功能的总体性能可以通过在上述场景下的测试来体现。介绍避障性能的最好方式是使用演示视频。但在这里,我们将介绍构建的2D局部网格地图的结果,这是避障的指导和基础。
作为上述场景之一,我的房间的原始2D点云已经显示在下图43的右侧。通过对比我的房间的2D点云和真实图片,可以明显看出基本几何信息在细节上已经进行了详细体现和还原。例如,可以从2D点云中轻松识别在走廊侧边半开的门。地图的几何规格如表12所示,这与第3部分中提到的尺寸和刷新频率相同。
表12:2D局部网格地图的规格。
然而,由于如前所述的16通道LiDAR具有±15°的垂直扫描范围,因此也收集了一些异常点。例如,在走廊尽头和床边出现的弧形曲线称为接地命中,这是激光束#0和#1命中地面时地面反射的点。此类异常点的出现并不意味着该区域被任何障碍物占据。因此,利用前一章提到的数据预处理方法,我们消除了这些异常点,并设置置信阈值以在将点云转换为网格地图时简化该点云。
因此,2D局部网格地图已在图43中的点云旁边示出。很明显,真实世界的必要细节大多已被还原并在地图上表达出来(例如半开着的门),而异常点则已被删除,并且整个地图比原始数据表现得清晰得多。诸如这样的一张地图可以被传递用于提取{左距离,前距离,右距离}的模糊语言,并它可以用来指导机器人进行避障和探索环境。在这种场景下,机器人左边、右边、以及前方的封闭区域是清晰的,使得机器人可以自由移动,但根据模糊控制规则库,机器人应该向前移动。
如果有另一障碍物在机器人对面移动或围绕机器人移动(这还称为动态障碍物),我们通过保持足够的刷新频率来确保机器人的安全。避障的刷新频率取决于LiDAR的扫描频率(即10Hz)且小于该LiDAR的扫描频率。通过实际测试,将在小于0.3秒更新2D网格地图。考虑到伺服从发出指令到伺服反应的滞后性、以及机器人运动的惯性,刷新频率满足了安全性要求。
4.2.2数据融合
首先介绍如图44所示的摄像头的校准结果。已在图44的上图中标记了检测点、棋盘原点和重投影点,而在下图则显示了无失真图像的结果。
然后,利用一组25幅图像,我们能够计算出摄像头校准环节中的重投影误差。在图45中显示出了结果,总体平均误差为0.13像素,这是可接受的。图45中还示出了以摄像头为中心的顺序的不同位置的棋盘的3D表示。
此外,还示出了包括内在矩阵的一些其它数值结果如下:
内在矩阵:
主点:[969.62 541.14]
径向失真:[-0.3644 0.1177]
平均重投影误差:0.1338
在这些之后,在图46中示出了检测棋盘角点的结果。点云上的不同颜色意味着不同的反射强度。
对于较大的棋盘,找到整个棋盘的四个角点作为参考点,并匹配的那些与无失真图像相对应的点还可以计算外在参数,如图47所示。
最后,将图像中的像素反投影到点云中,如图48所示。
由于LiDAR和摄像头之间的相对空间位置关系保持不变,因此由该机器人采集的一些其它数据也可以利用内在参数和外在参数进行融合。在这里,我们通过介绍室外场景中的另一示例来说明这一点。在图49中示出了从摄像头采集的无失真图像。而图49中示出了在相同场景中从LiDAR采集的3D点云。3D点云和2D图像融合在一起的结果可以表示如下:
4.2.3 2D SLAM
2D SLAM包括定位和建图两个主要目标。在这里,由于我们使用的是我们自己采集的数据集,所以我们没有使用固定的地面实况来验证构建的地图的准确度。此外,我们只在单一场景(其为我的房间)上执行了此功能。
表13:对象在地图和现实中的测量。
然而,由于来自所生成的地图中的一些地标的尺寸可以与真实世界中相应的对象相匹配,因此所构建的地图的准确度可以定义为准确。在这里,我们选择床和墙壁作为地标,并测量对象在地图和现实中的长度,如表13所示。
这里还有一些显示了轨迹和地图的结果。不同颜色的含义表示:
灰色:未探索区域
绿色:当前LiDAR命中
黑色:障碍物或占用
白色:自由区域
蓝色:轨迹
为了说明地图构建的过程,我们屏蔽了LiDAR的扫描范围的一半从360°到180°,然后让机器人在环境中随机移动和探索,如图50所示。蓝色网格记录了机器人在移动时的轨迹。另外,我们让机器人在同样的环境下原地不动并将其转一圈,并且地图如图51所示。
很明显,机器人静止时生成的地图比移动时生成的地图具有更高的质量。可能的原因是多种多样的,但影响最大的是LiDAR可能会在机器人移动时因平地引起的振动而采集到一些异常值。虽然我们已经应用了滤波和阈值来匹配由LiDAR采集的不同帧,但仍然出现了一些异常值。实际上,这是在通过LiDAR以2D和3D进行建图时的常见现象。我们改进的地方是我们去掉了地面命中,并且我们把这个功能和其它功能同时集成在一起。
最后,图52中示出了地图的真实比例尺(30×30m)和对应的地形图。
4.2.4路径规划
如前所述,路径规划的输入是由SLAM构建的网格地图。首先,图53中显示了从SLAM转换的用于路径规划的地图。用于路径规划的地图仍然与原始地图的比例相同,其为600×600网格,但不同的是,我们在障碍物旁边设置了安全区(浅蓝色)和危险区(粉红色)。
然后,在设置起点(默认为机器人的当前位置)和终点并选择方法后,将生成如图54所示的路径。红色表示规划过程中已经经过的区域。很明显,通过不同方法生成的路径表现为相同,这意味着在没有绕过太多障碍物的简单场景下,最佳优先搜索规划的结果不会表现出太大的差异。
表14:不同算法的路径评分时间。
此外,在上表14中示出了在不同方法下对路径评分所消耗的时间。虽然生成的路径表现为相同,但不同方法的时间效率显示出显著的差异。Dijkstra算法消耗的时间最长,而贪婪和加权启发式算法几乎以最快的速度规划路径。
4.2.5仿真结果
这里是仿真的一些结果。第一种是室内场景和路径规划中构建的2D地图。在图55中的右侧是建筑物和机器人的模型(蓝色的是机器人),而左侧是所构建的2D地图和从摄像头流式传输的视频可视化。橙色点是机器人的当前位置,绿色曲线是规划到预设终点的路径。
然后在图56中示出了在室外场景下构建的2D SLAM结果。黑色的轮廓是几栋建筑物的外部形状。
在图57中示出了3D SLAM的过程。在右侧已用红色圈出了机器人,且在左侧也显示了机器人的对应位置。
最后,在图58和图59中示出了3D SLAM的结果。很明显,相比Lego-loam算法,由Loam算法构建的3D地图在点云上具有更高的密度。但每张地图的质量都非常好。
第5部分
结论和范围
在本公开中,提出了自动驾驶机器人并基于SEGWAY自平衡滑板车构建了自动驾驶机器人。该机器人是在现代智能和自主机器人的原理下设计的,该机器人由包括感知、决策、以及动作的三个主体框架组成。本公开描述了硬件/软件结构、不同功能的方法以及测试环境和结果。机器人的硬件***包括传感器、致动器和处理器。实现了包括3D LiDAR、单目网络摄像头、IMU、以及两轮编码器的几个传感器,这些传感器完成了感知采集任务,并向软件***提供数据。与摆锤和转向杆连接的两个数字伺服构成致动器,这实现了对机器人的物理控制。两个Arduino Uno微控制器和微软Surface实现了数据处理和通信能力。机器人的软件***实现了如下任务:这些任务包括从传感器收集数据并传输到高层,处理数据,几种功能的实现,以及将命令发送回致动器以控制机器人。我们介绍了在Python3.6下开发的几个功能,这些功能包括基于2D局部网格地图和模糊逻辑的避障、基于协同校准的数据融合、基于Rao-Blackwellized粒子滤波的2D SLAM、以及基于2D全局网格地图的路径规划。在本公开中,介绍了测试过程和环境,并且我们在几种场景下对机器人进行了测试。测试结果表明,各项功能均达到了预期效果。
总体而言,该机器人具有所提到的自主功能的功能能力,其可以被认为是用于一些简单任务的自动驾驶机器人。此外,该机器人的模块化硬件和软件结构已被证明可以被认为是开发更先进的自动驾驶或通用算法的平台。
5.1局限性
虽然本公开中提出的机器人已经实现了所有功能,但它在一些方面仍有一些局限性。例如,我们没有在室外场景中进行过2D SLAM的测试,并且选择用于2D SLAM的方法不适合大规模和开放场景。此外,还可以在闭环控制中添加路径规划功能,以便在沿路径到达重点时检索机器人的位置。
另外,由于测试环境的限制,对部分结果的准确度进行了粗略的测量。与其它自主机器人相比,我们的机器人的功能是完整的,这可以通过第4部分和演示视频来说明。但该机器人缺乏一致的指标来验证其性能。希望在未来,机器人可以在标准化的领域或场景中进行测试,以验证其性能。
5.2真实世界与仿真
另一值得一提的是真实世界和仿真之间的比较。从宏观上看,真实世界中机器人的整个软件框架是在Python3.6下开发的,而仿真机器人是在ROS(C++)下开发的。一般来说,ROS的运行速度被认为高于Python,这意味着仿真机器人应该具有更好的实时性能,因为ROS使用的主要语言是C++。然而,关于地图刷新频率的测试结果表明,在Python下开发的算法具有与ROS相当的运行速度。虽然我们没有在严格控制变量的情况下进行详细的比较,但可以预期的是,开发一些自动驾驶算法(特别是专注于建图、定位和运动控制的自动驾驶算法)可以通过Python来实现。
此外,仿真机器人具有比真实世界中更多的功能(例如3D SLAM),并且在仿真中的2D SLAM和导航功能的性能也表现得更好。原因在于,ROS作为众所周知的具有高成熟的开源开发环境(特别是在机器人领域)集成了许多开发人员和性能更好的算法。
5.3范围
如前所述,本公开中提到的机器人可以提供用于开发自动驾驶算法的平台。此外,本机器人设计的另一个特征是模块化。硬件和软件***都是模块化的,这意味着可以在不影响其它功能的情况下添加或删除某些功能。这样的方便之处可以在于,某些硬件可以被具有更低成本的其它硬件替代,或者可以基于该机器人开发一些更高级的算法(例如,3DSLAM),因为它对环境和自身都有感知,这满足了自动驾驶领域的基本要求。
已经出于说明和描述的目的提供了实施例的前述描述。该描述并不旨在是详尽的或者对本公开进行限制。特定实施例的各个元件或特征通常不限于该特定实施例,但是,在适用的情况下是可互换的,并且即使未具体示出或描述,也可以在所选实施例中使用。同样也可能在许多方面有所不同。此类变型不应被视为背离本公开,并且所有此类修改均旨在被包括在本公开的范围内。
Claims (12)
1.一种两轮自平衡机器人,所述两轮自平衡机器人包括:
一对驱动轮;
支承结构,所述支承结构与所述一对驱动轮可操作地耦接;
自平衡和驱动***,所述自平衡和驱动***与所述支承结构和所述一对驱动轮可操作地耦接,以响应于数据而向所述一对驱动轮输出驱动功率,从而维持所述支承结构的平衡;
至少一个传感器,所述至少一个传感器采集所述数据并向所述自平衡和驱动***输出所述数据;
至少一个致动器,所述至少一个致动器可操作地耦接到所述自平衡和驱动***;以及
至少一个处理器,所述至少一个处理器被配置为向所述自平衡和驱动***输出控制信号。
2.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个传感器包括激光雷达LiDAR***,所述LiDAR***耦接到所述支承结构并向所述自平衡和驱动***输出数据。
3.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个传感器包括单目网络摄像头,所述单目网络摄像头耦接到所述支承结构并向所述自平衡和驱动***输出数据。
4.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个传感器包括惯性测量单元,所述惯性测量单元耦接到所述支承结构并向所述自平衡和驱动***输出数据。
5.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个传感器包括两轮编码器,所述两轮编码器耦接到所述支承结构并向所述自平衡和驱动***输出数据。
6.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个致动器包括两个数字伺服,所述两个数字伺服与摆锤和转向杆连接。
7.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个处理器包括至少一个微控制器和中央处理单元。
8.根据权利要求1所述的两轮自平衡机器人,其中,所述至少一个处理器和所述自平衡和驱动***中的至少一者被配置为向所述一对驱动轮提供驱动功率以提供避障控制。
9.根据权利要求8所述的两轮自平衡机器人,其中,所述避障控制是基于2D局部网格地图和模糊逻辑提供的。
10.根据权利要求8所述的两轮自平衡机器人,其中,所述避障控制是基于以下提供的:基于协同校准的数据融合。
11.根据权利要求8所述的两轮自平衡机器人,其中,所述避障控制是基于以下提供的:基于Rao-Blackwellized粒子滤波的二维即时定位与地图构建2D SLAM。
12.根据权利要求8所述的两轮自平衡机器人,其中,所述避障控制是基于使用2D全局网格地图的路径规划提供的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163218633P | 2021-07-06 | 2021-07-06 | |
US63/218,633 | 2021-07-06 | ||
PCT/US2022/036114 WO2023283186A1 (en) | 2021-07-06 | 2022-07-05 | Two-wheeled, self-balancing robot |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118020038A true CN118020038A (zh) | 2024-05-10 |
Family
ID=82703217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280060512.XA Pending CN118020038A (zh) | 2021-07-06 | 2022-07-05 | 两轮自平衡机器人 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4367566A1 (zh) |
CN (1) | CN118020038A (zh) |
WO (1) | WO2023283186A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048091B (zh) * | 2023-02-09 | 2023-09-15 | 武汉溯野科技有限公司 | 一种考虑位姿估计不确定性的机器人轨迹规划方法和装置 |
CN116030213B (zh) * | 2023-03-30 | 2023-06-06 | 千巡科技(深圳)有限公司 | 一种多机云边协同地图创建与动态数字孪生方法及*** |
CN116203973B (zh) * | 2023-05-05 | 2023-07-21 | 唐山昌宏科技有限公司 | 轨道ai巡检机器人智能控制*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012126224A (ja) * | 2010-12-15 | 2012-07-05 | Bosch Corp | 倒立振子型移動体 |
-
2022
- 2022-07-05 EP EP22747894.8A patent/EP4367566A1/en active Pending
- 2022-07-05 WO PCT/US2022/036114 patent/WO2023283186A1/en active Application Filing
- 2022-07-05 CN CN202280060512.XA patent/CN118020038A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023283186A1 (en) | 2023-01-12 |
EP4367566A1 (en) | 2024-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dai et al. | Fast frontier-based information-driven autonomous exploration with an mav | |
Zhang et al. | 2D Lidar‐Based SLAM and Path Planning for Indoor Rescue Using Mobile Robots | |
CN111968262B (zh) | 一种语义智能变电站巡视作业机器人导航***及方法 | |
Dang et al. | Autonomous exploration and simultaneous object search using aerial robots | |
Nuske et al. | Autonomous exploration and motion planning for an unmanned aerial vehicle navigating rivers | |
CN118020038A (zh) | 两轮自平衡机器人 | |
Butzke et al. | The University of Pennsylvania MAGIC 2010 multi‐robot unmanned vehicle system | |
Zhou et al. | Toward autonomy of micro aerial vehicles in unknown and global positioning system denied environments | |
Zaki et al. | A navigation strategy for an autonomous patrol vehicle based on multi-fusion planning algorithms and multi-paradigm representation schemes | |
Sundram et al. | Development of a miniature robot for multi-robot occupancy grid mapping | |
WO2022188333A1 (zh) | 一种行走方法、装置和计算机存储介质 | |
Jensen et al. | Laser range imaging using mobile robots: From pose estimation to 3d-models | |
Song et al. | Real-time localization measure and perception detection using multi-sensor fusion for Automated Guided Vehicles | |
Talha et al. | Autonomous UAV Navigation in Wilderness Search-and-Rescue Operations Using Deep Reinforcement Learning | |
Klaser et al. | Vision-based autonomous navigation with a probabilistic occupancy map on unstructured scenarios | |
Liu | Autonomous driving segway robots | |
Border et al. | Osprey: Multi-Session Autonomous Aerial Mapping with LiDAR-based SLAM and Next Best View Planning | |
WO2024111453A1 (en) | Autonomous mapping by a mobile robot | |
Santoro | Design and implementation of a Sensory System for an Autonomous Mobile Robot in a Connected Industrial Environment | |
Abdulov et al. | AEROBOT-2020 UAV Challenge: A Report | |
Mohan et al. | A comprehensive review of SLAM techniques | |
Prophet et al. | Comprehensive floor plan mapping for indoor exploration and guidance of aerial vehicles | |
Ullah et al. | Vision-Based Autonomous Mapping & Obstacle Avoidance for a Micro-Aerial Vehicle (MAV) Navigating Canal | |
Mohan et al. | 22 A Comprehensive | |
Pasimeni | Design and Implementation of an Autonomous Navigation System for Paquitop, a novel mobile robot for indoor assistance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |