上次给大家带来了之前学习apollo时开发的内容apollo.ros-1.0.0,主要是针对apollo 1.0.0版本进行了ros1的移植和控制算法的学习。这次是针对apollo 3.0.0版本进行了ros1的移植和学习了相关的规划算法。
项目开发详细可在评论区留言。
PS:基于ros1的 apollo 7.0.0规划控制算法已经发布,详情见apollo.ros-7.0.0
此项目为基于apollo3.0.0的ros1移植版本,移植主要目的如下:
apollo框架设计apollo中的控制算法apollo中的规划算法目前只针对apollo中部分模块进行了移植,移植模块有:
.
├── docker
│ ├── build
│ └── scripts
├── images
├── LICENSE
├── modules
│ ├── apollo_common
│ ├── apollo_control
│ ├── apollo_map
│ ├── apollo_msgs
│ ├── apollo_planning
│ ├── apollo_routing
│ └── apollo_simulator
└── README.md
目前移植版本能实现车辆在高精度地图下进行routing、planning和control仿真测试,与原有版本改动点如下:
ros(基于noetic)替代apollo中更改的rosros pkg封装apollo中的moduleros中的std_msgs/String替代apollo的pd_msgs/xxx消息cmake进行编译protobuff版本提升到3.6.1sim_control和sim_pnc仿真工具包apollo_simulatorrviz显示rviz设置此移植版本,能很好的将自己的算法增加到框架中,应用于机器人或者无人驾驶中。
在线安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装验证:安装完成执行 sudo docker version看看docker目前安装的版本等信息:

使用配置:避免每次新开一个终端都要sudo输入权限,给docker增加用户的权限。执行完成后重启电脑之后生效。
sudo usermod -aG docker $USER
执行一下指令进行镜像构建
cd apollo.ros-3.0.0/docker/build/ # 进入镜像构建目录
./build_docker.sh # 开始构建镜像
镜像构建成功后,显示如下图所示:

解压项目代码到对应目录,假设代码主目录名为apollo.ros-3.0.0,其目录结构如下:
.
├── docker
│ ├── build
│ └── scripts
├── images
├── LICENSE
├── modules
│ ├── apollo_common
│ ├── apollo_control
│ ├── apollo_map
│ ├── apollo_msgs
│ ├── apollo_planning
│ ├── apollo_routing
│ └── apollo_simulator
└── README.md
启动容器:启动成功后,显示如下图所示:
cd apollo.ros-3.0.0/ # 返回工程主目录
./docker/scripts/docker_start.sh # 启动容器

注意:
- 执行
./docker/scripts/docker_start.sh指令启动容器前,一定要返回工程主目录- 如果此终端关闭后会导致启动容器退出
- 重新启动容器需要重新编译代码
编译代码:编译成功后,显示如下图所示:
cd apollo_ros_ws/ # 进入工作空间
catkin build # 开始编译

进入容器:如果容器已经启动,想新开一个终端进去,可使用以下指令:
cd apollo.ros-3.0.0/ # 返回工程主目录
./docker/scripts/docker_into.sh # 进入容器
目前仿真测试支持两种模式:
sim_control:routing和planning模块仿真测试,移植于原apollo中的dreamviewsim_pnc:routing、planning和control模块仿真测试,移植于autoware.universe中的simple_planning_simulator仿真模式设置在modules/apollo_simulator/launch/simulation.launch文件中:
use_sim_ctrl设置为true时,为sim_control仿真模式use_sim_ctrl设置为false时,为sim_pnc仿真模式
<launch>
<arg name="map_name" default="demo"/>
<arg name="use_sim_ctrl" default="false"/>
<include file="$(find apollo_routing)/launch/routing.launch">
<arg name="map_name" value="$(arg map_name)"/>
include>
<include file="$(find apollo_planning)/launch/planning.launch">
<arg name="map_name" value="$(arg map_name)"/>
include>
<group unless="$(arg use_sim_ctrl)">
<include file="$(find apollo_control)/launch/control.launch"/>
group>
<include file="$(find apollo_simulator)/launch/simulator.launch">
<arg name="map_name" value="$(arg map_name)"/>
<arg name="use_sim_ctrl" value="$(arg use_sim_ctrl)"/>
include>
launch>
启动仿真程序:启动成功后可以看到rviz显示如下图所示
cd apollo_ros_ws/
source devel/setup.bash
roslaunch apollo_simulator simulation.launch

初始化车辆位姿:在rviz软件显示窗口上,点击2D Pose Estimate按钮在高精度地图上相应位置进行车辆位姿初始化

下发导航目标点:在rviz软件显示窗口上,点击2D Nav Goal按钮在高精度地图上相应位置进行导航目标点下发

设置静态障碍物:在rviz软件显示窗口上,点击Apollo Fake Prediction按钮在高精度地图上相应位置进行静态障碍物设置

成功运行效果:如果程序启动正常,车辆位姿和导航目标都设置正确的话,可在rviz上看到正常运行的效果,如下图所示

基于 apollo 3.0.0 的ros1移植版本 - em_planner测试
基于 apollo 3.0.0 的ros1移植版本 - lattice_planner测试
更换测试地图:仿真测试时,默认启动的地图是modules/apollo_map/data/demo,如果想更换成modules/apollo_map/data/目录下其他地图,可在启动仿真程序时,根据想使用的地图的名称,将启动指令更换成以下指令即可:
roslaunch apollo_simulator simulation.launch map_name:=cube_town
仿真测试时,所使用的高精度地图放在modules/apollo_map/data/目录下,项目中已有的地图有:
.
├── borregas_ave
├── cube_town
├── demo
├── san_francisco
└── tartu_city
如果想添加新的高精度地图,则需要按照以下步骤进行:
在modules/apollo_map/data/目录下新建以添加地图名字命名的文件夹,这里以test为例:
cd apollo.ros-3.0.0/modules/apollo_map/data/
mkdir test
将高精度地图test的地图文件base_map.bin放到刚刚创建的目录apollo.ros-3.0.0/modules/apollo_map/data/test中
base_map.bin是由高精度地图绘制工具绘制得来,常用的工具有Roadrunner,不过是收费的LGSVL仿真平台下载注意:
apollo.ros-3.0.0只支持apollo3.0百度OpenDRIVE格式规范
生成routing所需的拓扑地图:以下指令中的test为第一步在modules/apollo_map/data/目录下新建的文件夹名称
cd apollo_ros_ws/
source devel/setup.bash
roslaunch apollo_routing topo_creator.launch map_name:=test
执行成功后终端显示如下图所示,同时在apollo.ros-3.0.0/modules/apollo_map/data/test目录下还会多出routing_map.bin和routing_map.txt两个文件

rviz显示sim_control仿真支持rviz设置apollo消息rostopic echo显示rviz显示rviz设置LGSVL/Carla软件平台联合仿真