最近在研究端到端自动驾驶,这里参考秦通开源的端到端泊车算法,并进行了部署和运行,将部署过程中踩过的坑和解决方法一一记录。
参考论文《ParkingE2E: Camera-based End-to-end Parking Network, from Images to Planning》
1 环境依赖
- 先决条件 Ubuntu 20.04,CUDA,ROS Noetic和OpenCV 4。
- 设置 克隆代码:
git clone https://github.com/ChauncyLeee/e2e_parking_imitation.git
cd e2e_parking_imitation/
安装虚拟环境:
conda env create -f environment.yaml
运行报错:
解决方法:
conda upgrade -n base -c defaults --override-channels conda
再运行conda env create -f environment.yaml,等待时间比较久,出现如下安装界面:
但在最后报错:
有一些库版本号设置错误,由于我在原版的environment.yaml对gnupg和pycryptodomex设置了版本号,导致安装失败,需要激活环境后再安装:
conda activate ParkingE2E
pip install gnupg
pip install pycryptodomex
安装完可以查看是否安装成功:
conda env list
2 设置接口
conda activate ParkingE2E
PARKINGE2E_PYTHON_PATH=`which python`
cd catkin_ws
catkin_make -DPYTHON_EXECUTABLE=${PARKINGE2E_PYTHON_PATH}
source devel/setup.bash
在执行catkin_make -DPYTHON_EXECUTABLE=${PARKINGE2E_PYTHON_PAT报错:
运行
conda install -c conda-forge catkin_pkg
安装成功
再重新执行catkin_make -DPYTHON_EXECUTABLE=${PARKINGE2E_PYTHON_PAT
编译成功
3 运行
下载预训练模型和测试数据: 首先,您应该从百度网盘[https://pan.baidu.com/s/1va_UC9nl-ykJcoeqOSt-0w?pwd=ifev]下载预训练模型和测试数据百度网盘https://pan.baidu.com/share/init?surl=m-PCvSfPydHlQaV59Wm3tg&pwd=82w5。然后,您需要修改./config/inference_real.yaml中的推理配置model_ckpt_path。
运行驱动程序:
roslaunch core driven_core.launch
当命令第一次执行时,会出现一个进度条(用于计算畸变图)。在四个(鱼眼摄像头)进度条完成后,可以继续进行后续操作。
但运行报错:
这时候检查没有安装的第三方库,并pip进行安装。
再运行roslaunch core driven_core.launch,就会出现一个进度条。
使用E2E算法开始推理:
conda activate ParkingE2E
python ros_inference.py
当命令第一次执行时,将下载EfficientNet预训练模型。
运行测试演示:
unzip demo_scene.zip
cd demo_scene
# scene_index = 1, 2, 3, 4, 5, 6, 7. For example: sh ./demo.sh 1
sh ./demo.sh ${scene_index}
在rviz中,您还可以通过rviz面板上的2D导航目标来选择停车目标。
运行过程中的cpu和gpu情况如下:
4 训练
- 我们提供了演示rosbag 百度网盘https://pan.baidu.com/share/init?surl=fQ5dWB2ZhRGifwezykt6Ug&pwd=sxug来创建小型数据集并训练模型。
生成数据集 首先,您需要创建一个数据集。
python toolkit/dataset_generation.py --bag_file_path ${DEMO_BAG_PATH} --output_folder_path ./e2e_dataset
如果您使用自己的rosbag,请确认./catkin_ws/src/core/config/params.yaml中的rosbag主题,并修改相机配置。
训练您的模型:
python train.py --config ./config/training_real.yaml
您可以在./config/training_real.yaml中修改训练配置。