0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AutowareAuto的定位是如何实现的呢?

新机器视觉 来源:古月居 作者:Lxxxb 2022-11-16 10:35 次阅读

前提准备

AutowareAuto ade环境搭建完成

Lgsvl环境和仿真器配置完成

运行环境建议

如果运行 LGSVL 仿真器,需要搭载 NVIDIA 显卡,具体要求如链接所示,推荐配置如下

Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz (16 virtual cores) with 64GB RAM

NVIDIA GeForce RTX 2080 with 8 GB memory

如果运行失败或者效果差,可能是计算资源不足造成。

启动

终端一:启动仿真器

ade --rc .aderc-amd64-foxy-lgsvl start --update --enter
/opt/lgsvl/simulator &

终端二:启动可视化界面

ade enter
source /opt/AutowareAuto/setup.bash
ros2 launch autoware_auto_launch autoware_auto_visualization.launch.py

终端三:

ade enter
source /opt/AutowareAuto/setup.bash
ros2 launch autoware_demos avp_sim.launch.py

这个时候,即可看到如图界面

de6130c2-64ce-11ed-8abf-dac502259ad0.png

具体流程介绍

1、设定初始位姿与定位简介

使用2D Pose Estimate指令给车辆设定初始位置。如下图所示

dfad8f3e-64ce-11ed-8abf-dac502259ad0.png

此时,车辆便和LGSVL中位置达成一直一致,如果位置不一致,导航将会失败。

AutowareAuto的定位是如何实现的呢?

首先,需要给定车辆一个初始位姿,这个姿态对于车辆而言就是一个绝对位置,相当于GPS位置,至于为什么不使用GPS定位,在定位一栏中会专门介绍。

在初始位姿给定后,NDT算法会对现有为位姿做一个微调,这里其实就是采用点云信息的匹配做到的。

在之后导航的过程中,NDT算法会一直作用与车辆身上,帮助车辆时刻保持定位准确。

2、导航与内部算法简介

定位结束后,AutowareAuto对于车辆的移动采用定点移动,即利用 2D Nav Goal 插件对车辆发布目标点。如下图所示

dfd190fa-64ce-11ed-8abf-dac502259ad0.png

此时,车辆将会朝着目标点行使。

AutowareAuto的决策规划是如何实现的呢?

这里首先得讲到AutowareAuto背后的一个逻辑,那就是如何判断某个位置是否是可行区域。其实这就是正式驾驶的前提条件,地图构建。

AutowareAuto的地图构建分为两个部分,一部分为点云地图,一部分为语义地图。点云地图将地图中障碍物信息采集,语义地图则根据点云地图画出。

所以,AutowareAuto规划的一个基础为地图,从地图中可行区域中规划出一条从当前位置到目标位置的路径。

3、泊车案例及其内部算法

从导航原理可知,泊车无非也是从语义地图中读出,哪一些地方属于可停车区域,如下图所示

e0335aba-64ce-11ed-8abf-dac502259ad0.png

可是,我们虽然直到了其中的一个本质。可是它具体是如何实现的呢?

从泊车案例思考,其内部的一个算法为混合 A* (Hybrid A*)。混合A*算法是斯坦福大学于2010年提出用于解决在侧方位停车和倒车入库过程中的路径规划问题。

其背后的原理其实和A*算法一致,不同的是,其中加入了车辆运动学模型。

伪代码为:

ASTAR()
{
  INIT START
  INIT END
  INIT_VEC OPENSET
  INIT_VEC FATHERSET
  INIT_VEC OBSTACLE


  OPENSET.ADD(START)
  ADD_OPENSET(START)


  WHILE(!IS_OPENSET_EMPTY()){
    MIN_FN_POINT = FIND_MIN_FN(OPENSET)
    IF(MIN_FN_POINT == END){BREAK}
    SEARCH_ENV_BLOCK(MIN_FN_POINT)
    OPENSET.DELETE(MIN_FN_POINT)
    FATHERSET.ADD(MIN_FN_POINT)
  }


  GET_TRAJECTORY()
}


SEARCH_ENV_BLOCK(MIN_FN_POINT)
{
  FOR(AUTO_P : MIN_FN_POINT){
    COST = MIN_FN_POINT.G + CALCU_G(MIN_FN_POINT, AUTO_P)
    IF((AUTO_P IN FATHERSET) || (AUTO_P IN OBSTACLE)){CONTINUE}
    IF(AUTO_P NOT IN OPENSET){
      OPENSET.ADD(AUTO)
    }ELSE IF(AUTO_P.G > COST){
      UPDATE AUTO_P
    }
  }
}

泊车最后实现如图:

e06cdda8-64ce-11ed-8abf-dac502259ad0.png

注:一旦自动驾驶,手动驾驶将不再起作用,因为车辆会激活制动器以保持在先前定义的目标位置

重要事项

在之前的操作中,我们都是在 docker ade 环境下执行的 /opt/AutowareAuto 目录下的代码,当读者选择通过自行编译的代码,也就是 /home/${USER}/AutowareAuto 下代码执行上述操作时,会出现车辆不出现,点云地图不出现的情况,在此解释:

地图和车辆都是基于 /opt/AutowareAuto 下配置进行的,如果想要用 AutowareAuto 内配置,需要将点云地图和车辆都换成下载代码中的配置

 vehicle_characteristics_param_file = os.path.join(
    get_package_share_directory('autoware_demos'), 'param/vehicle_characteristics.param.yaml')


  vehicle_constants_manager_param_file = os.path.join(
    get_package_share_directory('autoware_auto_launch'), 'param/lexus_rx_hybrid_2016.param.yaml')

同理,之后如果想要更换地图或者更换车辆配置,都需要在launch中作详细目录说明,不然都会指到 /opt 中。

在修改后都需要用 colcon build --packages-select 功能包 来重新编译。

问题与解答

1.车辆在模拟器中没有改变,但是在rviz2中显示十分奇怪,比如卡在某一个位置或者定位不准确

原因:计算资源不够

2.出现如下所示报错:

[object_collision_estimator_node_exe-18] [WARN] [1613130016.283356960] [planning.object_collision_estimator_node]: on_bounding_box cannot transform base_link to map.
[behavior_planner_node_exe-19] [INFO] [1613130016.285522103] [planning.behavior_planner_node]: Waiting for localization result to become available
[lanelet2_global_planner_node_exe-15] [ERROR] [1613130016.285673175] [planning.lanelet2_global_planner_node]: Failed to transform Pose to map frame
[behavior_planner_node_exe-19] [INFO] [1613130016.320455277] [planning.behavior_planner_node]: Waiting for localization result to become available
[lanelet2_global_planner_node_exe-15] [ERROR] [1613130016.321167460] [planning.lanelet2_global_planner_node]: Failed to transform Pose to map frame
[p2d_ndt_localizer_exe-4] [ERROR] [1613130016.337780380] [localization.p2d_ndt_localizer_node]: Could not find a connection between 'map' and 'base_link' because they are not part of the same tree.Tf has two or more unconnected trees.

3.解决方法:重新给定一个绝对坐标

[lanelet2_global_planner_node_exe-15] [ERROR] [planning.lanelet2_global_planner_node]: Global route has not been found!

原因:全局路径规划器规划失败,一方面可能是性能原因,一方面可能是车辆本身机制不允许,比如位置在车身之后。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    1019

    浏览量

    83807
  • NDT
    NDT
    +关注

    关注

    0

    文章

    26

    浏览量

    14952
  • NVIDIA显卡
    +关注

    关注

    0

    文章

    15

    浏览量

    3181

原文标题:AutowareAuto 泊车案例复现及原理简介

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    蓝牙AOA是如何实现人员定位

    定位的出现,更是为室内定位带来了革命性的突破。相信很多人对蓝牙AOA技术存在一定的问题,比如很多人想了解的:“蓝牙AOA究竟是是如何实现人员定位
    发表于 08-06 18:34

    蓝牙如何检测距离实现定位

    我看市面上的产品大多蓝牙产品都是通过检测通断报警,来实现一个防丢的功能,如何实现精准定位技术
    发表于 04-19 08:35

    UWB定位系统实现精确定位原理解析

    景。那么,UWB定位系统是如何实现精确定位?UWB定位系统原理EHIGH恒高UWB定位系统采
    发表于 03-19 17:06

    请问AD的定位怎么才能精准

    AD的PCB里的定位,怎么才能精准?做出的板子,定位孔总是偏一点。
    发表于 08-10 08:02

    如何才能实现无线定位

    如何才能实现无线定位
    发表于 12-17 07:58

    小白求助GPS是怎么定位

    小白求助GPS是怎么定位
    发表于 02-10 07:53

    ARM为什么需要重定位?如何去实现

    bss段的文件 } bss_end= .;       //把当前的地址赋值给bss_end} 6、重定位的具体实现// adr指令用于加载_start当前运行地址 adr r0, _start
    发表于 05-18 16:42

    5G是如何实现更高精度的定位

    问题发挥更强的赋能和带动作用。   那么,5G是如何实现更高精度的定位?3gpp面向5G新的网络架构,提出了下图所示的5G定位架构图:      总体上来看,5G的
    发表于 05-05 10:53

    SKYLAB:室外定位靠卫星,室内定位靠什么

    GPS模块、北斗模块将接收的卫星信号转化,继而为用户提供位置服务。那么像地下停车场、机场、医院等这些室内定位又靠什么实现?在这里,你将得到室内定位靠什么的答案。室内
    的头像 发表于 03-22 17:08 2354次阅读

    北斗的定位系统,相比以往的GPS会有哪些变化

    以路面上最常见的共享单车为例,在6月23日,哈啰出行宣布,旗下单车全面接入北斗定位。使用了北斗的定位系统,相比以往的GPS会有哪些变化
    的头像 发表于 09-21 16:12 2470次阅读

    工厂人员定位系统可以实现哪些功能

    提供一套集人员设备定位管理的工厂人员定位系统。那么工厂定位系统能够实现哪些功能? 1、电子围栏 通过管理软件(工厂人员
    的头像 发表于 05-22 09:34 690次阅读

    隧道人员定位如何实现

    隧道人员定位如何实现 UWB(超宽带)技术可以用于隧道人员定位实现方式主要包括UWB定位基站和UWB
    的头像 发表于 08-09 16:56 870次阅读

    编码器是如何实现定位功能的

    严格来讲,编码器只会告诉你改如何定位,要如何执行,是需要靠数控系统(或者PLC或运动控制器之类控制器)控制伺服或者步进电机来实现定位的,编码器好比人的眼睛,知道电机轴或者负载处于当前某个位置,工业上
    的头像 发表于 11-13 08:07 2268次阅读
    编码器是如何<b class='flag-5'>实现</b><b class='flag-5'>定位</b>功能的<b class='flag-5'>呢</b>?

    无线室内定位系统是通过什么技术实现

    无线室内定位系统作为现代科技的重要组成部分,广泛应用于智能家居、企业管理、医疗护理等多个领域。这些系统通过不同的技术手段实现高精度的室内定位,为用户带来便捷与高效。那么,无线室内定位
    的头像 发表于 09-10 09:28 411次阅读
    无线室内<b class='flag-5'>定位</b>系统是通过什么技术<b class='flag-5'>实现</b>的<b class='flag-5'>呢</b>?

    UWB技术如何实现不同维度的定位需求

    ,正在逐渐成为室内定位领域的明星技术。 UWB技术通过发送和接收超宽带信号来定位目标。这种技术相较于其他定位技术,具有更高的定位精度和更低的信号干扰。那么,UWB
    的头像 发表于 11-01 10:43 302次阅读
    UWB技术如何<b class='flag-5'>实现</b>不同维度的<b class='flag-5'>定位</b>需求