在Apollo中模拟障碍物
一、准备工作
在模拟障碍物之前,需要下载并编译Apollo源码,过程可以依据Apollo开放平台文档,其中可能遇到的问题在这里或许可以寻找到答案
二、运行Dreamview
- 进入容器
cd ~/apollo
bash docker/scripts/dev_start.sh(再次使用会新建docker,导致依赖丢失)
bash docker/scripts/dev_into.sh
- 启动Dreamview
bash scripts/bootstrap.sh
此时便可以在对应网址看到页面
三、修改特定位置的Json脚本
脚本路径:modules\tools\perception\garage_perception.bash
这个脚本会在运行时启动相关依赖,并且在Dreamview中按照设定好的障碍物信息进行3D绘图。增加障碍物只需要新建Json脚本,将其内容按照下方的格式填写,再运行garage_perception.bash即可。(需在容器内运行)
{
"id": 1,
"position": [1868.59, 2990.91, 0.0],
"theta": 1.1659045405098132,
"length": 4,
"width": 2,
"height": 1,
"speed": 8.0,
"tracking_time": 1.0,//追踪的时间间隙
"type": "VEHICLE",//类型,已知的还有行人、未知物体
"trace": [[-1868.59, -2990.91, 0.0],
[-1845.16, -2994.59, 0.0],
[-1850.16, -3000.0, 0.0]]//设定运行轨迹
}
四、退出环境
运行脚本时,Terminal会不断刷新,但命令输入依然有效,使用Ctrl+C即可停止,退出Dreamview可使用以下命令
./scripts/bootstrap.sh stop
2023.9.18
——————————————————————————————————————————————————
在Apollo中制作地图
Apollo中的地图生成与添加障碍物类似,同样依赖于源码中自带的脚本。本次使用的数据为已经处理好的UTM坐标数据,可以利用Github上的脚本将bag文件(或者使用默认的"extract_path.py"解压)转换为经纬高信息txt/csv文本(未经验证)。获取数据之后,可以使用plot_path.py可视化录制的轨迹,命令如下所示
python modules/tools/map_gen/plot_path.py path.txt
然而,在运行上述代码时,会出现“UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.”的报错信息,大致含义就是当前使用的后端无法显示GUI图形,所以应该将plot_path.py中的import做出以下改变
旧代码:import matplotlib.pyplot as plt
import sys
新代码:import matplotlib
matplotlib.use('TkAgg')//使用TkAgg后端
import matplotlib.pyplot as plt
import sys
修改后的报错信息变为ModuleNotFoundError: No module named ‘tkinter’,即缺少tkinter模块,利用下列代码进行安装
sudo apt-get install python3-tk
安装时会再次出现问题,Ubuntu报错“Package pkg-config is not available, but is referred to by another package”,这个报错是Ubuntu中的源过于老旧,需要换成新的镜像站,使用下列命令更新即可
sudo apt-get -y update
再次安装python3-tk,使用pip list即可看到此模块,再次执行可视化,效果如下图
编译地图工具
bazel build modules/tools/map_gen:all
./bazel-bin/modules/tools/map_gen/map_gen path.txt
成功后会生成特定的地图格式
生成好地图之后,可以通过"add_signal.py"来添加红绿灯。
./bazel-bin/modules/tools/map_gen/add_signal.py map_file your_signal_map
这里map_file就是刚才生成的地图文件,而your_signal_map是红绿灯的文件,红绿灯文件实际上就是apollo hdmap中指定的红绿灯格式,也就是说你需要按照apollo hdmap中指定的红绿灯格式保存红绿灯的数据,然后把它添加到map_file中(红绿灯格式未知)
bazel build modules/tools/mapshow:all
./bazel-bin/modules/tools/mapshow/mapshow -m your_map_name -sl
执行上述命令即可将生成的高精度地图可视化,但会出现如下报错信息
根据报错信息进入proto-utils.py的37行,结合此错误信息产生的原因通常是数据格式问题以及确定自动生成的文件格式标准,可以推测出可能是编码格式错误,添加encoding="utf-8"即可解决
此地图后续应当可以导入Dreamview