apollo.ros-7.0.0
上次给大家带来了之前学习apollo时开发的内容apollo.ros-1.0.0和apollo.ros-3.0.0,主要是针对apollo 1.0.0和3.0.0版本进行了ros1下的移植和规划控制算法的学习。本次在之前工作的基础上,针对apollo 7.0.0版本,进行了ros1下的移植更新,针对apollo原有方案初学者难入门,测试操作不便等问题,能很好进行相关算法学习和测试,并可以将自己的算法增加到框架中,应用于机器人或者无人驾驶中。
项目开发详细了解可在评论区留言。
基于ros1的 apollo 7.0.0规划控制算法
简介
此项目为基于ros1的apollo7.0.0规划控制算法,移植主要目的如下:
- 学习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中的CyberRT
- 使用ros pkg封装apollo中的module
- 使用cmake进行编译
- 将protobuff版本提升到3.6.1
- 增加sim_control和sim_pnc仿真工具包apollo_simulator
- 增加高精度地图rviz显示
- 增加动/静态障碍物rviz设置
- 更多的高精度地图测试数据
代码部署
docker安装
-  在线安装 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-7.0.0/docker/build/ # 进入镜像构建目录 ./build_docker.sh # 开始构建镜像
-  镜像构建成功后,显示如下图所示: 
  
代码编译
-  解压项目代码到对应目录,假设代码主目录名为 apollo.ros-7.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-7.0.0/ # 返回工程主目录 ./docker/scripts/docker_start.sh # 启动容器 注意: - 执行./docker/scripts/docker_start.sh指令启动容器前,一定要返回工程主目录
- 如果此终端关闭后会导致启动容器退出
- 重新启动容器需要重新编译代码
 
- 执行
-  编译代码:编译成功后,显示如下图所示: cd apollo_ros_ws/ # 进入工作空间 catkin build # 开始编译 
-  进入容器:如果容器已经启动,想新开一个终端进去,可使用以下指令: cd apollo.ros-7.0.0/ # 返回工程主目录 ./docker/scripts/docker_into.sh # 进入容器
仿真测试
仿真模式
目前仿真测试支持两种模式:
- sim_control:- routing和- planning模块仿真测试,移植于原- apollo中的- dreamview
- sim_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仿真模式
<?xml version="1.0" encoding="UTF-8"?>
<launch>
  <arg name="map_name" default="demo"/>
  <arg name="use_sim_ctrl" default="true"/>
  <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按钮在高精度地图上相应位置进行动/静态障碍物设置 
-  障碍物速度清除、数量和速度设置,可使用 ros中的rqt_reconfigure工具进行更改  - 在显示界面中勾选obstacle_clear按钮即可进行设置障碍物清除
- 障碍物速度设置只需在在显示界面obstacle_speed输入栏中输入对应速度即可
- 障碍物数量设置只需在在显示界面obstacle_max_size输入栏中输入对应数量即可
 
- 在显示界面中勾选
-  设置静态障碍物:在 rviz软件显示窗口上,点击Apollo Fake Prediction按钮在高精度地图上相应位置进行静态障碍物设置注意:此时障碍物速度必须设置为0  
-  设置动态障碍物:在 rviz软件显示窗口上,点击Apollo Fake Prediction按钮在高精度地图上相应位置进行动态障碍物设置注意: - 此时障碍物速度必须设置>0
- 障碍物前方蓝色轨迹为障碍物预测轨迹
  
 
-  
-  成功运行效果:如果程序启动正常,车辆位姿和导航目标都设置正确的话,可在 rviz上看到正常运行的效果,如下图所示 
-  更换测试地图:仿真测试时,默认启动的地图是 modules/apollo_map/data/demo,如果想更换成modules/apollo_map/data/目录下其他地图,可在启动仿真程序时,根据想使用的地图的名称,将启动指令更换成以下指令即可:roslaunch apollo_simulator simulation.launch map_name:=cube_town
高精度地图
仿真测试时,所使用的高精度地图放在modules/apollo_map/data/目录下,项目中已有的地图有:
.
├── autonomou_stuff
├── borregas_ave
├── cube_town
├── demo
├── go_mentum_dtl
├── modern_city
├── san_francisco
├── san_mateo
├── sunnyvale_big_loop
├── sunnyvale_loop
└── sunnyvale_with_two_offices
如果想添加新的高精度地图,则需要按照以下步骤进行:
-  在 modules/apollo_map/data/目录下新建以添加地图名字命名的文件夹,这里以test为例:cd apollo.ros-7.0.0/modules/apollo_map/data/ mkdir test
-  将高精度地图 test的地图文件base_map.bin放到刚刚创建的目录apollo.ros-7.0.0/modules/apollo_map/data/test中- 高精度地图文件base_map.bin是由高精度地图绘制工具绘制得来,常用的工具有Roadrunner,不过是收费的
- 本项目的高精度地图均是在LGSVL仿真平台下载
 注意: apollo.ros-7.0.0只支持apollo7.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-7.0.0/modules/apollo_map/data/test目录下还会多出routing_map.bin和routing_map.txt两个文件 
-  到达此步骤,添加新的高精度地图流程已完成,在仿真测试时,选择对应的地图进行测试即可 
维护者
Forrest



















