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

前提准备
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 entersource /opt/autowareauto/setup.bashros2 launch autoware_auto_launch autoware_auto_visualization.launch.py  
终端三:
ade entersource /opt/autowareauto/setup.bashros2 launch autoware_demos avp_sim.launch.py  
这个时候,即可看到如图界面
具体流程介绍
1、设定初始位姿与定位简介
使用2d pose estimate指令给车辆设定初始位置。如下图所示
此时,车辆便和lgsvl中位置达成一直一致,如果位置不一致,导航将会失败。
autowareauto的定位是如何实现的呢?
首先,需要给定车辆一个初始位姿,这个姿态对于车辆而言就是一个绝对位置,相当于gps位置,至于为什么不使用gps定位,在定位一栏中会专门介绍。
在初始位姿给定后,ndt算法会对现有为位姿做一个微调,这里其实就是采用点云信息的匹配做到的。
在之后导航的过程中,ndt算法会一直作用与车辆身上,帮助车辆时刻保持定位准确。
2、导航与内部算法简介
定位结束后,autowareauto对于车辆的移动采用定点移动,即利用 2d nav goal 插件对车辆发布目标点。如下图所示
此时,车辆将会朝着目标点行使。
autowareauto的决策规划是如何实现的呢?
这里首先得讲到autowareauto背后的一个逻辑,那就是如何判断某个位置是否是可行区域。其实这就是正式驾驶的前提条件,地图构建。
autowareauto的地图构建分为两个部分,一部分为点云地图,一部分为语义地图。点云地图将地图中障碍物信息采集,语义地图则根据点云地图画出。
所以,autowareauto规划的一个基础为地图,从地图中可行区域中规划出一条从当前位置到目标位置的路径。
3、泊车案例及其内部算法
从导航原理可知,泊车无非也是从语义地图中读出,哪一些地方属于可停车区域,如下图所示
可是,我们虽然直到了其中的一个本质。可是它具体是如何实现的呢?
从泊车案例思考,其内部的一个算法为混合 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        }    }}  
泊车最后实现如图:
注:一旦自动驾驶,手动驾驶将不再起作用,因为车辆会激活制动器以保持在先前定义的目标位置
重要事项
在之前的操作中,我们都是在 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!  
原因:全局路径规划器规划失败,一方面可能是性能原因,一方面可能是车辆本身机制不允许,比如位置在车身之后。


努比亚红魔3体验 装了风扇有什么不一样
西门子控制设备,在水利工程项目中的应用
高质量发展要务下先进制造业集群竞争力提升路径与策略研究
一加 9RT全渠道开启首销 5分钟全渠道销售额破亿
微软计划利用区块链技术拦截垃圾电话
AutowareAuto的定位是如何实现的呢?
芯片价格继续走低 智能手机价格战将打响
中国电信2018年财报曝光,年收入达3771亿 预计今年5G建设投入约90亿元
回流焊缺陷分析
降压-升压型转换器4节磷酸铁锂(LiFePO4)电池充电器电路图
工信部责令1571款违规App进行整改,下架120款
摩尔定律或在2021终结?原因是什么?
IBM的量子飞跃
orcad中如何点亮整个网络
iphone8发布会前瞻:iphone7s/iphone8即将上市,外观、配置大升级,首批缺货价格贵到没朋友,无线充电也没了?
LDO电源电路设计
电工常用试验公式
磁珠的特性及应用,application of Ferrite bead
iPhoneSE2什么时候上市?iPhoneSE2最新消息:双摄+无边框,iPhoneSE2这是要学安卓吗
iphone8什么时候上市?iphone8最新消息:高屏占比+无HOME键,功能更全,iphone8价格更高