# 基于激光雷达的封闭园区自动驾驶搭建--自动驾驶演示 - [基于激光雷达的封闭园区自动驾驶搭建--自动驾驶演示](#基于激光雷达的封闭园区自动驾驶搭建--自动驾驶演示) - [概览](#概览) - [前提条件](#前提条件) - [启动流程](#启动流程) - [1. 启动can卡](#1-启动can卡) - [2. 编译项目,启动Dreamview](#2-编译项目启动dreamview) - [3. 启动所需模块](#3-启动所需模块) - [4. 检查lidar数据是否正确](#4-检查lidar数据是否正确) - [5. 检查各模块channel是否正确](#5-检查各模块channel是否正确) - [6. 启动Lidar感知](#6-启动lidar感知) - [7. 验证Lidar感知](#7-验证lidar感知) - [8. 启动 Canbus、Planning、Prediction、Routing、Control模块](#8-启动-canbusplanningpredictionroutingcontrol模块) - [9. 验证Planning、Prediction、Routing、Control模块是否启动成功](#9-验证planningpredictionroutingcontrol模块是否启动成功) - [10. 启动自动驾驶](#10-启动自动驾驶) - [常见问题](#常见问题) - [1. 自动驾驶过程中车轮来回摆动,有画龙现象](#1-自动驾驶过程中车轮来回摆动有画龙现象) - [2. 车辆换道、停止等效果不理想](#2-车辆换道停止等效果不理想) ## 概览 该用户手册旨在帮助用户完成基于Lidar感知的封闭园区自动驾驶。为了方便用户快速实现基于lidar的封闭园区自动驾驶演示,我们提供了`Dev kit Closeloop`模式,建议用户在进行基于lidar的封闭园区自动驾驶演示时使用该模式, 除此之外建议使用`Dev Kit Debug`模式。本文将以`Dev kit Closeloop`模式进行说明,如果用户选择使用`Dev Kit Debug`模式,操作方法相同。 ## 前提条件 1. 正确完成了[封闭园区自动驾驶搭建--规划适配](planning_configuration_cn.md)。 2. 确保在道路平整、车少人少等相对安全的情况下实验。 3. 确保至少两人操作,一人操作工控机,一人操作遥控器,做好随时接管准备。 ## 启动流程 ### 1. 启动can卡 进入can卡目录启动can卡,用以下命令启动 cd ~/SocketCan/ bash start.sh ### 2. 编译项目,启动Dreamview 进入docker环境,用gpu编译项目,启动Dreamview cd apollo bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh bash apollo.sh build_opt_gpu bash scripts/bootstrap.sh ### 3. 启动所需模块 - 在浏览器中打开`(http://localhost:8888)`,选择模式为`Dev Kit Debug`, 根据车辆铭牌信息选择对应的车型(详情见下表),选择对应的虚拟车道线或高精地图,在Module Controller标签页启动Canbus、GPS、Localization、Transform模块。 | 铭牌信息 | 车型选择 | |---|---| | Apollo D-KIT Lite | dev_kit | | Apollo D-KIT Standard | dev_kit_standard | | Apollo D-KIT Advanced(NE-S)| dev_kit_advanced_ne-s | | Apollo D-KIT Advanced(SNE-R) | dev_kit_advanced_sne-r | ![lidar_adaption_closeloop](images/lidar_adaption_closeloop.png) - 定位模块启动后,需要接收定位数据,需要等待约1分钟左右。打开新的终端,并使用`bash docker/scripts/dev_into.sh`命令进入docker环境,在新终端中输入`cyber_monitor`命令查看`tf`、`tf_static`、`/apollo/localization/pose`数据,这三个数据在cyber_monitor中均显示为绿色代表定位模块启动成功 ![lidar_integration_localization_check](images/lidar_integration_localization_check.png) - 在dreamview中启动`lidar`模块 ![lidar_integration_start_lidar_closeloop](images/lidar_integration_start_lidar_closeloop.png) ### 4. 检查lidar数据是否正确 - 使用`cyber_monitor`,查看激光雷达数据是否正常输出,并使用上下方向键选择channel,使用右方向键查看channel详细数据,数据无异常则说明激光雷达启动成功。(关于cyber_monitor更详细使用,请参考[CyberRT_Developer_Tools](../../cyber/CyberRT_Developer_Tools.md)) - 单激光雷达用户用户,请检查如下channel是否正常输出 |序号 | channel | 帧率 | |---|---|---| | 1 | `/apollo/sensor/lidar16/PointCloud2` | 10Hz | | 2 | `/apollo/sensor/lidar16/Scan` | 10Hz | | 3 | `/apollo/sensor/lidar16/compensator/PointCloud2` | 10Hz | ![lidar_integration_cyber_monitor](images/lidar_integration_cyber_monitor.png) - 三激光雷达用户用户,请检查如下channel是否正常输出 |序号 | channel | 帧率 | |---|---|---| | 1 | `/apollo/sensor/lidar16/back/PointCloud2` | 10Hz | | 2 | `/apollo/sensor/lidar16/left/PointCloud2` | 10Hz | | 3 | `/apollo/sensor/lidar16/right/PointCloud2` | 10Hz | | 4 | `/apollo/sensor/lidar16/fusion/PointCloud2` | 10HZ | | 5 | `/apollo/sensor/lidar16/compensator/PointCloud2` | 10Hz | ### 5. 检查各模块channel是否正确 在docker中输入`cyber_monitor`命令并检查以下channel(使用`上下方向键`选择channel,使用`右方向键`查看channel详细信息): - 单激光雷达用户用户,请检查如下channel是否正常输出 |channel_name | 检查项目 | |---|---| | `/apollo/localization/pose`| 确保能正常输出数据 | |`/apollo/sensor/gnss/best_pose` | 确保能正常输出数据、`sol_type:` 选项显示为`NARROW_INT` | |`/apollo/sensor/lidar16/PointCloud2` | 确保能正常输出数据| |`/apollo/sensor/lidar16/Scan`| 确保能正常输出数据| | `/apollo/sensor/lidar16/compensator/PointCloud2` | 确保能正常输出数据 | |`/tf`|确保能正常输出数据| |`/tf_static`|确保能正常输出数据| |`/apollo/canbus/chassis`|确保能正常输出数据| |`/apollo/canbus/chassis_detail`|确保能正常输出数据| - 三激光雷达用户用户,请检查如下channel是否正常输出 |channel_name | 检查项目 | |---|---| | `/apollo/localization/pose`| 确保能正常输出数据 | |`/apollo/sensor/gnss/best_pose` | 确保能正常输出数据、`sol_type:` 选项显示为`NARROW_INT` | | `/apollo/sensor/lidar16/back/PointCloud2` |确保能正常输出数据| | `/apollo/sensor/lidar16/left/PointCloud2` |确保能正常输出数据| | `/apollo/sensor/lidar16/right/PointCloud2` |确保能正常输出数据| | `/apollo/sensor/lidar16/fusion/PointCloud2` |确保能正常输出数据| | `/apollo/sensor/lidar16/compensator/PointCloud2` |确保能正常输出数据| |`/tf`|确保能正常输出数据| |`/tf_static`|确保能正常输出数据| |`/apollo/canbus/chassis`|确保能正常输出数据| |`/apollo/canbus/chassis_detail`|确保能正常输出数据| ### 6. 启动Lidar感知 确认各模块正常启动且channel输出正常后,在DreamView上启动`Lidar Perception`,使用`cyber_monitor`查看`/apollo/perception/obstacles`是否正常输出 ![lidar_adaption_dreamview_closeloop](images/lidar_adaption_dreamview_closeloop.png) ### 7. 验证Lidar感知 在DreamView上启动Perception模块,使用`cyber_monitor`查看`/apollo/perception/obstacles`是否正常输出,查看车前方10米处运动的人或者自行车(自行车上要有人),在DreamView上查看障碍物颜色以及位置速度信息(自行车青蓝色,行人黄色,车辆绿色),如下图所示: ![lidar_adaptation_dreamview2](images/lidar_adaptation_dreamview2.png) `/apollo/perception/obstacles`的数据如下图所示: ![lidar_demonstration_obstacles1](images/lidar_demonstration_obstacles1.png) ![lidar_demonstration_obstacles2](images/lidar_demonstration_obstacles2.png) 确保在DreamView上能看到障碍物且`/apollo/perception/obstacles`有障碍物信息。 ### 8. 启动 Canbus、Planning、Prediction、Routing、Control模块 在Module Controller标签页启动Planning、Prediction、Routing、Control模块。 ![lidar_adaptation_dreamview7_closeloop](images/lidar_adaptation_dreamview7_closeloop.png) 在Routing Editor标签中点击Add Point of Interest按钮添加一个point, 然后选择Send Routing Request按钮发送添加的routing点 ![lidar_adaptation_dreamview1](images/lidar_adaptation_dreamview6.png) ### 9. 验证Planning、Prediction、Routing、Control模块是否启动成功 从DreamView中查看会出现一个蓝色的线 以及一个红色的stop标志。如下图所示: ![lidar_demonstration_routing1](images/lidar_demonstration_routing1.png) 在车前方存在人或者自行车(车上有人)时,在task标签页查看planning轨迹线,正常情况下planning会重新规划轨迹,如下图所示: ![lidar_demonstration_routing2](images/lidar_demonstration_routing2.png) 在docker环境中输入命令`cyber_monitor`并查看planning channel信息: ![lidar_demonstration_channel](images/lidar_demonstration_channel.png) 如果出现上图所示轨迹线和topic信息,表示规划模块适配和开环测试通过,否则继续查看log信息进行调试。 ### 10. 启动自动驾驶 在附近没有人员和车的情况下,遥控器下放权限并在task标签页中点击start auto使车进入自动驾驶状态,在车自动驾驶这个过程中做好随时用遥控器接管确保安全的准备。 ## 常见问题 ### 1. 自动驾驶过程中车轮来回摆动,有画龙现象 这种情况一般是车辆动力学标定没有做好,建议重新进行动力学标定 ### 2. 车辆换道、停止等效果不理想 - 在保证感知、定位稳定的前提下,可以尝试修改planning配置文件中的相关参数进行调整,详情参考[封闭园区自动驾驶搭建--规划适配](planning_configuration_cn.md)