Autoware 自动驾驶栈 10 分钟跑通:从仿真驾驶到换硬件
【免费下载链接】autowareAutoware - the world's leading open-source software project for autonomous driving项目地址: https://gitcode.com/GitHub_Trending/au/autoware
想在自有硬件上跑通一套自动驾驶算法,通常要先把 ROS、CUDA 等一堆依赖装齐。Autoware 把这些依赖连同定位、感知、规划、控制的全链路封装在一个开源软件栈里,基于 ROS 2(机器人通信与任务管理的中间件)构建。本文只解决一件事:先让仿真车开起来,再讲各层在做什么。
🚀 如何用 10 分钟跑通 Autoware 仿真车辆
最短路径是用预构建镜像加仓库自带的示例仿真,不用本地编译。流程很短,一共三条命令。
第一步,拿到仓库:
git clone https://gitcode.com/GitHub_Trending/au/autoware这是个元仓库,真正的源码由 repositories/ 下的.repos文件描述,用 vcs 拉取。只看效果的话,这一步可以跳过源码导入。
第二步,允许容器在宿主机上弹出图形窗口:
xhost +local:docker第三步,启动规划仿真示例:
cd docker/examples/demos/planning-simulator HOST_UID=$(id -u) HOST_GID=$(id -g) docker compose up这份 compose 直接拉取预构建镜像ghcr.io/autowarefoundation/autoware:universe-jazzy,启动时自动运行planning_simulator.launch.xml。
跑起来后打开 RViz:你会看到一条街道地图和停在起点的自车。在 RViz 里设定初始位姿、点选目的地,规划器算出路线,按下 Engage,仿真车就开始自己行驶。从感知到控制,这条链路已经完整走过一遍。
如果宿主机还没有示例地图,先运行 ansible/roles/demo_artifacts/ 角色下载样例数据,它会落在~/autoware_data下。compose 把这个目录挂进容器,容器内路径是/home/aw/autoware_data/maps,启动参数里的map_path指向的就是它。
读懂容器里的镜像层级与地图挂载
你会先碰到镜像 tag,先把 docker/ 的镜像族理清。命名规则是"阶段 + ROS 2 发行版",比如universe-jazzy、universe-cuda-humble:
| 镜像 | 装了什么 | 适合 |
|---|---|---|
core-devel-* | core 稳定包的构建环境 | 改 core 代码 |
universe-devel-* | 全量构建环境,含实验性功能 | 改 universe 代码 |
universe-* | 纯运行时,无编译链 | 只跑不改 |
universe-cuda-* | 运行时 + GPU 计算库 | 需要 GPU 加速的感知任务 |
源码分两棵树:core 是稳定包,universe 放实验性功能。改哪个包的代码,先确认它属于哪棵树,再选对应的 devel 镜像编译。
要动代码时,先拉源码再构建镜像:
vcs import src < repositories/autoware.repos docker buildx bake -f docker/docker-bake.hcl universe构建目标定义在docker/docker-bake.hcl,入口脚本docker/docker-entrypoint.sh负责三件事:把容器内用户对齐到宿主机 UID,为 DDS(ROS 节点间的消息通信层)打开组播,然后 source ROS 环境。
如何更换硬件、传感器并批量装机
没有 GPU,或新机器上线。换 tag 就行。无 GPU 用universe-jazzy,有 GPU 用universe-cuda-jazzy,旧发行版把jazzy换成humble。docker/examples/basic/ 里还备了 dev-cpu、dev-dri、dev-nvidia 三个最小开发 shell,按硬件挑一个即可。
换传感器或换车。仿真里的"车"也是参数。规划示例用的是vehicle_model:=sample_vehicle、sensor_model:=sample_sensor_kit;在 docker/examples/demos/carla/ 示例中,同一辆车换成了 CARLA 的传感器套件,启动文件也换为e2e_simulator.launch.xml。改 compose 里 command 块的参数即可,不用动代码。
批量装机与可复现构建。ansible/ 是一套部署角色:ros2、cuda、tensorrt、nvidia_container_toolkit、docker_engine,每个角色只干一件事。构建镜像时加环境变量USE_LOCKFILE=true,依赖版本会被冻结到 ansible/vars/ 下的锁文件。锁定之后结果可复现,不同天构建同一目标不会再漂移。
遇到问题去哪里问
Autoware 的价值,在于把整辆车的算法变成可拉取、可启动、可修改的一套栈。技术问答走项目的 Discord 社区和 GitHub Discussions 的 Q&A 分区;想参与开发,先看仓库里 CONTRIBUTING.md 的入口说明。
【免费下载链接】autowareAutoware - the world's leading open-source software project for autonomous driving项目地址: https://gitcode.com/GitHub_Trending/au/autoware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考