【Autoware.ai】Autoware.ai配置和demo运行教程

  • Post author:
  • Post category:其他




Autoware.ai配置和demo运行教程

之前看了一些关于Autoware的内容,由于工作的需要,暂时不能切换到Autoware.Auto的新版本,依然在用Autoware.ai的旧版本。Autoware.ai是基于ROS1的,目前官方已经于2022年底停止维护。Autoware.Auto是基于ROS2的,依然在不断更新中。新来的小伙伴建议用Autoware.Auto。

这个系列的文章计划把自己在学习和运用的过程中遇到的一些问题和方法做一个记录。



配置



环境

首先你需要一台ubuntu的电脑,官方说需要18.04LTS,但是我在20.04LTS和22.04LTS上都运行过,目前都还是可以的,也可能是因为我一直用docker。

Autoware提供两种配置方式,一种是source build,一种是docker build。

理论上说,需要nvidia支持,之前在有nvidia支持的电脑上也运行起来了,但是后面在没有nvidia的机器上也可以运行起来,不过有些功能会受限。

需要说明的是,Autoware建议CUDA支持,如果没有CUDA支持,受限的功能在这里有列出:

https://autowarefoundation.github.io/autoware-documentation/main/how-to-guides/running-autoware-without-cuda/



Docker Build

首先,你需要按照Docker官方的教程,安装docker

https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/docker-installation

不想看的话直接看这里



Old Docker Cleanup


$ sudo apt-get remove docker docker-engine docker.io



Docker CE Installation
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88

pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb)
sub 4096R/F273FCD8 2017-02-22
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ sudo docker run hello-world

然后根据autoware的官方的教程链接,配置:

https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Generic-x86-Docker

不想看的话还是看这里

$ git clone https://gitlab.com/autowarefoundation/autoware.ai/docker.git
$ cd docker/generic
$ ./run.sh

在执行

./run.sh

时,通常会要求root权限,如果不想每次运行docker都要用root权限,可以用下面的方法配置:

https://docs.docker.com/engine/install/linux-postinstall/

依然是不想仔细看的话,直接看这里

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker run hello-world


Run autoware docker without nvidia-driver

由于我的新电脑没有nvidia的graphic cards,只有Intel的,所以在运行

run.sh

的时候,可以把文件里的

CUDA

选项改为

off



Docker运行后不想每次都被自动删除


run.sh

的脚本,默认是会在每次运行结束,退出docker container之后,自动kill掉之前用过的docker container的,这样是为了不占据太多存储,因为每次运行

run.sh

,都会创建一个新的docker container,但是我们常常会在docker container中做一些设置,配置等等。要想不被删除,可以在

run.sh

文件中,翻到最后面,找到

docker run -it

后面的一个,

--rm

,这个是每次

exit

后删除的意思。



Source Build

我没有试过source build,贴一个官方的链接,有需要的同学可以自行实践

https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Source-Build?version_id=a33764ab4b6e7a1798c9f79465c74d565e92904b



官方Demo运行



ROSBAG Demo

之前搜了一些教程,发现那些数据包都不能下载,还是官方教程靠谱。链接如下

https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/ROSBAG-Demo

不想看的直接看这里



下载数据

$ wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz
$ wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz
# or
$ wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.bag2.tar.gz



在docker中运行

$ cd ~
$ mkdir .autoware
$ cd .autoware
$ cp ~/shared_dir/sample_moriyama_* .
$ tar zxfv sample_moriyama_150324.tar.gz
$ tar zxfv sample_moriyama_data.tar.gz



Run Autoware

$ cd /home/autoware/Autoware
$ source install/setup.bash
$ roslaunch runtime_manager runtime_manager.launch

按照教程里导入文件,运行即可

在runtime_manager的Simulation Tab页,导入

.autoware/sample_moriyama_150324.bag


点击Play按钮,然后点Pause


注意这里一定要先点一下Play!然后再进行后面的操作,不要等全部设置完才回来点。这样会导致timestamp的错误,使得demo无法正常运行。这部分在后面的Error解决中有详细的描述。

在runtime_manager的Quick Start Tab页,导入

/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo

目录下的对应配置文件

继续播放,打开rviz,可以看到内容

附一个官方的视频详细教程

https://www.youtube.com/watch?v=OWwtr_71cqI&ab_channel=TIERIV

————分割线

很神奇的一点就是,按照官方的这个教程,我运行起来都有问题,不显示points map之类的,或者其他问题。不管是有nvidia支持的机器还是没有的机器,试过都不行。然后重新找了这个教程,操作就成功了,而且不可以加载quick start页的那些文件,否则好像是会有冲突。

https://www.cxyzjd.com/article/weixin_42441790/113784687

————分割线2

然后发现上面这个教程其实也很潦草,解决后面出现的error的时候,在万能的github上找到了一个更详细有解释的版本。

https://github.com/autowarefoundation/autoware_ai/issues/884

并将具体的操作方法贴在这里:

This is the corret sequence to run ndt_matching.

https://www.youtube.com/watch?v=5bj7gkFlul0

  1. Go to Simulation tab and select a rosbag which includes /points_raw and /nmea_sentence(or /gnss_pose).
  2. Click “Play” and click “Pause” to set rosparam “use_sim_time” true.
  3. Go to Setup tab, select Localizer (Velodyne or Hokuyo 3D URG), input parameters related to relative position between the vehicle and localizer, push “TF” and push “Vehicle Model” (if you leave the space blank, the default model will be loaded.).
  4. Go to Map tab and load pointcloud map and publish TF between /world and /map. (Refer to https://www.youtube.com/watch?v=EJa4P…)
  5. Go to Sensing tab and run voxel_grid_filter to downsample scan data.
  6. Go to Computing tab and run nmea2tfpose to convert /nmea_sentence into /gnss_pose.
  7. Run ndt_mathcing, click “app” and choose GNSS as initial position.
  8. Go to Simulation tab and click “Pause” to replay rosbag.



一些Error的解决

运行起来后,出现几个问题

  1. Vehicle Model 报错,错误内容


    No transform from [base_link] to [world]

    检查一下当前tf的转换关系:


    rosrun tf view_frames


    输出

    frames.pdf

    文件

    查看该文件即可知道当前的所有tf转换关系,如果箭头从A指向B,表示A是B的parent。

    还有一个方法是在terminal中使用命令行:


    rosrun tf tf_echo [$FRAME1] [$FRAME2]

    其他的一些tf相关命令可以再这里找到:

    http://wiki.ros.org/tf/Debugging%20tools

    然后去搜索这个error,终于找到了一个靠谱的答案:

    https://github.com/autowarefoundation/autoware_ai/issues/884

    感谢某位小姐姐的帮助。

    错误的原因是:

    I think it is caused by simulation clock.

    If you use rosbag, pls play rosbag in order to enable simulation clock at first.

    因此跑rosbag的时候,要先运行一下,再做其他的配置。

    这个链接中还详细的描述了每个配置的步骤,和原因。

    另外还有一点就是一定要仔细!之前要求选ndt_matching,我选了ndt_mapping,太粗心了

  2. Points Raw报错,错误内容


    For frame [velodyne]: No transform to fixed frame [world]. TF error: [Lookup would require extrapolation into the past. Requested time 1427157892.272318976 but the earliest data is at time 1678869922.342216365, when looking up transform from frame [velodyne] to frame [world]]


    勾选Computing页的

    nmea2tfpose



    ndt_mapping

    后解决

  3. 运行Simulation,车没有如期望的那样跑起来

    Solution: 解决了问题1以后,这个问题也迎刃而解啦!

下一篇预告:

Runtime_Manager的使用,调试

astar模块分析

open_planner模块分析



版权声明:本文为ninnyyan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。