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
- Go to Simulation tab and select a rosbag which includes /points_raw and /nmea_sentence(or /gnss_pose).
- Click “Play” and click “Pause” to set rosparam “use_sim_time” true.
- 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.).
- Go to Map tab and load pointcloud map and publish TF between /world and /map. (Refer to https://www.youtube.com/watch?v=EJa4P…)
- Go to Sensing tab and run voxel_grid_filter to downsample scan data.
- Go to Computing tab and run nmea2tfpose to convert /nmea_sentence into /gnss_pose.
- Run ndt_mathcing, click “app” and choose GNSS as initial position.
- Go to Simulation tab and click “Pause” to replay rosbag.
一些Error的解决
运行起来后,出现几个问题
-
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,太粗心了 -
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
后解决 -
运行Simulation,车没有如期望的那样跑起来
Solution: 解决了问题1以后,这个问题也迎刃而解啦!文章来源:https://www.toymoban.com/news/detail-636017.html
下一篇预告:
Runtime_Manager的使用,调试
astar模块分析
open_planner模块分析文章来源地址https://www.toymoban.com/news/detail-636017.html
到了这里,关于【Autoware.ai】Autoware.ai配置和demo运行教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!