# jmc-apollo-e2e **Repository Path**: JMCAuto/jmc-apollo-e2e ## Basic Information - **Project Name**: jmc-apollo-e2e - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-11 - **Last Updated**: 2026-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Apollo Base e2e [apollo 说明文档](https://apollo.baidu.com/docs/apollo/latest/index.html) ## 环境准备 (包安装方式) ```sh # install NVIDIA Container Toolkit curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get -y update sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker ## restart docker sudo systemctl restart docker # 环境安装 sudo apt-get update sudo apt-get install ca-certificates curl gnupg # 添加 gpg key sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://apollo-pkg-beta.cdn.bcebos.com/neo/beta/key/deb.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/apolloauto.gpg sudo chmod a+r /etc/apt/keyrings/apolloauto.gpg # 设置源并更新 echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/apolloauto.gpg] https://apollo-pkg-beta.cdn.bcebos.com/apollo/core"\ $(. /etc/os-release && echo "$VERSION_CODENAME") "main" | \ sudo tee /etc/apt/sources.list.d/apolloauto.list sudo apt-get update # 安装aem sudo apt install apollo-neo-env-manager-dev --reinstall aem -h ## 删除容器 # 先进入工程目录 cd # 删除容器 aem remove ``` ## 编译运行 ```sh # 首先切换环境配置 bash setup.sh # 创建容器(如果不存在镜像会自动下载) aem start aem enter # 编译例程 buildtool build -p modules/example_components cyber_launch start /apollo_workspace/modules/example_components/example.launch cyber_monitor # 启动DV # aem bootstrap start --plus # aem bootstrap stop --plus ## TODO # 由于apollo自带的libtorch库版本不匹配,需要使用本地的libtorch,所以e2e模块暂时编不过 ``` ```sh # 创建新组件 buildtool create --template component $YOU_MODULE_PATH buildtool create --template component modules/e2e # 编译 buildtool build -p modules/e2e # 运行方式1 cyber_launch start cyber/examples/common_component_example/common.launch # 运行方式2 mainboard -d cyber/examples/common_component_example/common.dag # 启动模块 .launch文件中定义多个标签可同时启动多个模块 cyber_launch start /apollo_workspace/modules/example_components/example.launch # 一个dag文件对应一个进程,一个dag文件如果包含多个component,则多个component在同一进程中运行 # 日志级别(0=INFO, 1=WARNING, 2=ERROR) export GLOG_minloglevel=0 # # 设置将输出结果到控制台 export GLOG_alsologtostderr=1 # 安装对应源码(要哪个装哪个 目前装了一个最小的control,cyber) buildtool install cyber audio bridge canbus canbus-vehicle-lincoln common control dreamview drivers guardian localization map monitor perception planning-gpu prediction routing storytelling task-manager third-party-perception transform v2x dreamview_plus docker save -o apollo_neo_dev_10.0.1_pkg_apollo.tar registry.baidubce.com/apollo/apollo-env-gpu:10.0-u22 docker load -i apollo_neo_dev_10.0.1_pkg_apollo.tar ``` ## 工具使用 ```sh # topic 监控 cyber_monitor # 录制cyber包 -a为录制所有通道 cyber_recorder record -a -o /apollo_workspace/exampleData # 录制指定通道的包 可多次使用-c添加多个通道录制 cyber_recorder record -c /apollo/channel_example/driver_test -o /apollo_workspace/exampleData cyber_recorder info exampleData.00000.20260225131148 # 播放cyber包(-l为循环播放) cyber_recorder play -f /apollo_workspace/exampleData.00000.20260225114215 -l ## ros bridge 使用 # 配置ros环境 # buildtool rosenv -t wget http://fishros.com/install -O fishros && . fishros # source ros的脚本 source /opt/ros/iron/setup.sh # 如果您的ubuntu是22.04 # 编译 ros bridge buildtool build -p cyber # 若ros不在dockers内安装需要配置domainID: export ROS_DOMAIN_ID=0 # 启动ros bridge ros_bridge # 录制bag文件 ros2 bag record /ros2/driver_test0 ros2 bag record -o ros2bag --all ros2 topic echo /ros2/driver_test0 ## 部署 # 打包 工作空间下会产生一个 release.tar.gz 文件 buildtool release -p sample_plugin core # 创建环境后加载 buildtool deploy -f release.tar.gz ``` ## 其他命令 ```sh # 清理工作空间 buildtool clean # 清理上一次缓存后后编译 buildtool build -p modules/example_components --expunge # gdb调试 buildtool build -p cyber:ros_bridge --dbg buildtool build --dbg gdb --args mainboard -d modules/my_component/dag/my_component.dag # 输出详细编译命令 buildtool build --expunge --arguments="--subcommands" 2>&1|tee build.log # 根据build.log 生成compile_commonds.json python3 paraser.py build.log # 生成compile_commonds.json后,使用vscode连接到容器内部,配合clangd插件可实现代码提示 # core 文件相关 # 查看core文件生成路径 sysctl kernel.core_pattern ulimit -c # 接触core大小限制 ulimit -c unlimited # 修改core文件生成路径为当前目录 sudo sysctl -w kernel.core_pattern=/apollo_workspace/core.%E.%p # 调试core文件 gdb <你的程序路径> core.<程序名>. ``` ## 软链外部路径 ```sh /apollo_workspace -> pwd external -> .cache/bazel/679551712d2357b63e6e0ce858ebf90e/external bazel-apollo_workspace -> /apollo_workspace/.cache/bazel/679551712d2357b63e6e0ce858ebf90e/execroot/application-pnc bazel-bin -> /apollo_workspace/.cache/bazel/679551712d2357b63e6e0ce858ebf90e/execroot/application-pnc/bazel-out/k8-opt/bin bazel-out -> /apollo_workspace/.cache/bazel/679551712d2357b63e6e0ce858ebf90e/execroot/application-pnc/bazel-out bazel-testlogs -> /apollo_workspace/.cache/bazel/679551712d2357b63e6e0ce858ebf90e/execroot/application-pnc/bazel-out/k8-opt/testlogs /opt/apollo -> /apollo_workspace/.aem/envroot/opt/apollo ``` ## tips ```sh # Q: 编译成功后再次编译报错 ERROR hint: multiple e2e exist in following paths # A: 删除/apollo_workspace目录下的external,该文件为软链,删除不影响编译 # Q: 若flag_file_path使用相对路径,gflag配置文件路径? # A: .aem/envroot/apollo/modules/example_components/conf/example.conf # 该文件为符号连接,链接到.aem/envroot/opt/apollo/neo/share/modules/example_components/conf/example.conf # 即cyber_launch运行的根路径为容器内的/apollo # Q: 关闭容器后再次使用aem start启动容器报错 # A: 手动启动容器,再使用命令 docker exec -it -u apollo_neo_dev_10.0.1_pkg /bin/bash # 进入容器,若还是无法启动容器,则先使用aem remove删除容器再使用aem start重新创建容器 # 自带protobuf版本为3.14.0,libtorch版本为1.11.0 ```