AutowareAuto + LGSVL 仿真 并实现自动巡航

一 、前言

        目标是使用AutowareAuto + LGSVL进行仿真并实现车辆在地图内的自动巡航。具体包括:1.

安装AutowareAuto + LGSVL;2. 对仿真器的启动进行定制化,使用tmux进行仿真器启动。3.将仿

真器的一些数据通过kafka发出。4. 对/adehome 下的AutowareAuto源码进行编译,并作一定的修

改来满足目标。

二 、AutowareAuto 安装

        AutowareAuto的安装按照官方指引进行安装即可,地址附上:

https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/installation-ade.html

        采用的安装方式为ade安装,建议大家也这样安装,省去很多环境配置的问题,而且

ade+docker 也是环境部署和开发的现在/未来主流方式。

       这里对关于AutowareAuto 和ADE 的一些知识进行记录:

        ade从一个基础镜像创建一个容器,同时在/opt目录下挂载其他只读的卷。在AutowareAuto的ade中使用了三个镜像:

.../amd64/ade-foxy:master:基础镜像

.../amd64/binary-foxy:master:  作为只读卷挂载在/opt下 为/opt/ros

.../ade-lgsvl/foxy:2021.3: 作为只读卷挂载在/opt下 为/opt/lgsvl

        在安装完成之后,请先根据指引完成一次仿真器的启动和使用,链接如下:

https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/avpdemo.html

        在AutowareAuto 自带的仿真中,只有Autonomous Valet Parking 这个自动泊车的场景.目前只

能基于这个仿真环境进行开发,应该还有其他的场景可用,毕竟大神很多,目前没有计划采用别的

仿真场景。

三、使用tmux进行仿真的启动

        需要用到tmux主要因为要启动仿真器,还是要启动多个launch的,如果不使用tmux进行启

动,则需要打开多个终端。

        在这里我是用的是bash脚本来启动tmux,里面主要覆盖了依赖安装,仿真器的启动,初始定

位发布,ros2_kafka_bridge 启动等终端。现在在下面贴一个使用示例:

#!/bin/bash
tmux source ~/.tmux.conf
tmux new -d -s simulation -n empty  #创建一个tmux终端,并创建一个新窗口empty
#空白窗口:用户自由使用
tmux split-window -h -t simulation:empty  #竖向分割窗口
tmux split-window -v -t simulation:empty.1 #横向分割窗口
tmux split-window -v -t simulation:empty.0 #横向分割窗口
#最后生成的是一个四宫格的窗口
#依赖安装窗口
tmux new-window -n dependent_install -t simulation  #再创建一个新窗口
tmux split-window -h -t simulation:dependent_install #竖向分割窗口
tmux split-window -v -t simulation:dependent_install.1 #横向分割窗口
tmux split-window -v -t simulation:dependent_install.0 #横向分割窗口
#向某个终端输入命令并执行
tmux send-keys -t simulation:dependent_install.0 'sudo -S pip install pymongo' C-m

四、将仿真的一些数据使用kafka发出来

        AutowareAuto是基于ros2开发,在github上找了一个ros2_kafka_bridge进行修改使用:

         地址附上:

https://github.com/endre90/ros2_kafka_bridge

        关于一些依赖的安装还有使用中出现的问题,请各位查看另一篇博文:

        地址附上:

ros2 kafka 联合使用_小鹿的先生的博客-CSDN博客

五,对AutowareAuto 的源码进行编译,并对一些修改

        对源码进行编译是发现这个仿真场景主要是自动泊车的场景,要想进行车辆在环境中自动巡

航有些参数不适用。

        5.1 编译的问题

        在对/adehome下的AutowareAuto 进行编译的时候发现 costmap_generator_nodes 和

velodyne_nodes 这两个节点编译有错误。一直编译不过去,目前的不需要对这两个节点进行修

改,因此在编译的时候直接跳过这个节点:

        colcon build --packages-ignore velodyne_nodes costmap_generator_nodes

        编译完成之后,就可以使用/adehome下的节点了。不需要进行修改的节点可以使  

用/opt/AutowareAuto下的节点,而自己修改的节点就可以启用 ~/AutowareAuto下的节点,把

launch进行拆分成不同的launch,并在tmux中不同的端口中source不同的环境启动即可。

        下面这篇博文也记录了一些信息,但是比较乱,也不整理了,权当参考资料:

Autoware.Auto avp仿真详解_小鹿的先生的博客-CSDN博客

        5.2 感知障碍物入侵道路的问题

        车辆跑的时候,会出现识别到的点云boundingbox突然变的很大,甚至跑到路上挡住车;  

原因是仿真中的识别是用的简单的欧几里德聚类方法,有时会有很多云被识别为一类,在生成

boundingbox难免体积会变的不合理。这里对参数进行修改,问题得到解决:

        参数文件位置

          /AutowareAuto/src/autoware_auto_launch/param/euclidean_cluster_.param.yaml

        其中两个参数改为:

        min_cluster_threshold_m : 0.2

        max_cluster_threshold_m : 0.8

        此处不要求感知的结果正确,只为了达到障碍物不会入侵可行使区域;

        5.3 车辆直角路口进行转弯时,很容易卡住

        目前还在寻找解决方法

六、发布巡航任务

        直接写一个节点,循环发布/planning/goal_pose 就可以,但是有一个问题要注意,仿真里车

辆的目标点不能在车现在位置的反方向,因为在道路上车辆被限定不能倒车(或者是规划器的问

题),目标点如果在车后,车会一直向前走直到撞停。

七、总结

        目前已经能够让车辆自动在仿真环境中自己围着一个圈不停的跑,但是直角转弯会卡住的问

题尚待解决,车辆的信息也可以通过ros2_kafka_bridge发布到kafka,详细的技术问题,可以私信交

流。

        附图如下:

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值