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规划控制算法
版本差异
| 版本 | 说明 | 主要算法 |
|---|---|---|
| apollo.ros-1.0.0 | 实现录制轨迹跟踪功能 | PID + LQR |
| apollo.ros-3.0.0 | 基于高精度地图,引入交通规则决策,实现车道巡航、变道等功能 | A* + em_planner + lattice_planner + PID + LQR + MPC |
| apollo.ros-7.0.0 | 基于高精度地图,引入场景决策,实现车道巡航、变道、泊车等功能 | A* + public_road_planner + lattice_planner + open_space_planner + PID + LQR + MPC |
简介
此项目为基于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 │ │ ├── apollo.ros-7.0.0.dockerfile │ │ └── build_docker.sh │ └── scripts │ ├── docker_into.sh │ └── docker_start.sh ├── images ├── LICENSE ├── modules │ ├── apollo_common │ │ ├── CMakeLists.txt │ │ ├── conf │ │ │ └── vehicle_model_config.pb.txt │ │ ├── data │ │ │ ├── gem_config.pb.txt │ │ │ ├── global_flagfile.txt │ │ │ └── vehicle_param.pb.txt │ │ ├── include │ │ │ └── apollo_common │ │ │ ├── adapters │ │ │ │ ├── adapter_gflags.h │ │ │ │ ├── adapter.h │ │ │ │ ├── adapter_manager.h │ │ │ │ └── message_adapters.h │ │ │ ├── component.h │ │ │ ├── configs │ │ │ │ ├── config_gflags.h │ │ │ │ └── vehicle_config_helper.h │ │ │ ├── filters │ │ │ │ ├── digital_filter_coefficients.h │ │ │ │ ├── digital_filter.h │ │ │ │ └── mean_filter.h │ │ │ ├── kv_db │ │ │ │ └── kv_db.h │ │ │ ├── latency_recorder │ │ │ │ └── latency_recorder.h │ │ │ ├── log.h │ │ │ ├── macros.h │ │ │ ├── math │ │ │ │ ├── aabox2d.h │ │ │ │ ├── aaboxkdtree2d.h │ │ │ │ ├── angle.h │ │ │ │ ├── box2d.h │ │ │ │ ├── cartesian_frenet_conversion.h │ │ │ │ ├── curve_fitting.h │ │ │ │ ├── euler_angles_zxy.h │ │ │ │ ├── factorial.h │ │ │ │ ├── hermite_spline.h │ │ │ │ ├── integral.h │ │ │ │ ├── kalman_filter.h │ │ │ │ ├── linear_interpolation.h │ │ │ │ ├── linear_quadratic_regulator.h │ │ │ │ ├── line_segment2d.h │ │ │ │ ├── math_utils.h │ │ │ │ ├── matrix_operations.h │ │ │ │ ├── mpc_osqp.h │ │ │ │ ├── path_matcher.h │ │ │ │ ├── polygon2d.h │ │ │ │ ├── qp_solver │ │ │ │ │ └── qp_solver.h │ │ │ │ ├── quaternion.h │ │ │ │ ├── search.h │ │ │ │ ├── sin_table.h │ │ │ │ └── vec2d.h │ │ │ ├── monitor_log │ │ │ │ ├── monitor_log_buffer.h │ │ │ │ └── monitor_logger.h │ │ │ ├── nlohmann │ │ │ │ └── json.hpp │ │ │ ├── status │ │ │ │ └── status.h │ │ │ ├── time │ │ │ │ ├── atomic_rw_lock.h │ │ │ │ ├── clock.h │ │ │ │ ├── duration.h │ │ │ │ ├── rw_lock_guard.h │ │ │ │ └── time.h │ │ │ ├── types.h │ │ │ ├── util │ │ │ │ ├── color.h │ │ │ │ ├── eigen_defs.h │ │ │ │ ├── factory.h │ │ │ │ ├── file.h │ │ │ │ ├── future.h │ │ │ │ ├── json_util.h │ │ │ │ ├── lru_cache.h │ │ │ │ ├── map_util.h │ │ │ │ ├── message_util.h │ │ │ │ ├── perf_util.h │ │ │ │ ├── point_factory.h │ │ │ │ ├── points_downsampler.h │ │ │ │ ├── string_util.h │ │ │ │ ├── time_util.h │ │ │ │ └── util.h │ │ │ ├── vehicle_model │ │ │ │ └── vehicle_model.h │ │ │ └── vehicle_state │ │ │ └── vehicle_state_provider.h │ │ ├── package.xml │ │ ├── README_cn.md │ │ ├── README.md │ │ └── src │ │ ├── adapters │ │ │ ├── adapter_gflags.cc │ │ │ └── adapter_manager.cc │ │ ├── component.cc │ │ ├── configs │ │ │ ├── config_gflags.cc │ │ │ └── vehicle_config_helper.cc │ │ ├── filters │ │ │ ├── digital_filter.cc │ │ │ ├── digital_filter_coefficients.cc │ │ │ └── mean_filter.cc │ │ ├── kv_db │ │ │ └── kv_db.cc │ │ ├── latency_recorder │ │ │ └── latency_recorder.cc │ │ ├── math │ │ │ ├── aabox2d.cc │ │ │ ├── angle.cc │ │ │ ├── box2d.cc │ │ │ ├── cartesian_frenet_conversion.cc │ │ │ ├── integral.cc │ │ │ ├── linear_interpolation.cc │ │ │ ├── linear_quadratic_regulator.cc │ │ │ ├── line_segment2d.cc │ │ │ ├── math_utils.cc │ │ │ ├── matrix_operations.cc │ │ │ ├── mpc_osqp.cc │ │ │ ├── path_matcher.cc │ │ │ ├── polygon2d.cc │ │ │ ├── qp_solver │ │ │ │ └── qp_solver.cc │ │ │ ├── search.cc │ │ │ ├── sin_table.cc │ │ │ └── vec2d.cc │ │ ├── monitor_log │ │ │ ├── monitor_log_buffer.cc │ │ │ └── monitor_logger.cc │ │ ├── time │ │ │ ├── clock.cc │ │ │ ├── duration.cc │ │ │ └── time.cc │ │ ├── util │ │ │ ├── file.cc │ │ │ ├── json_util.cc │ │ │ ├── perf_util.cc │ │ │ ├── string_util.cc │ │ │ └── util.cc │ │ ├── vehicle_model │ │ │ └── vehicle_model.cc │ │ └── vehicle_state │ │ └── vehicle_state_provider.cc │ ├── apollo_control │ │ ├── CMakeLists.txt │ │ ├── conf │ │ │ ├── adapter.conf │ │ │ ├── calibration_table.pb.txt │ │ │ ├── control_common_conf.pb.txt │ │ │ ├── control.conf │ │ │ ├── control_conf.pb.txt │ │ │ ├── lateral_controller_conf.pb.txt │ │ │ ├── longitudinal_controller_conf.pb.txt │ │ │ ├── mpc_controller_conf.pb.txt │ │ │ └── navigation_lincoln.pb.txt │ │ ├── include │ │ │ └── apollo_control │ │ │ ├── common │ │ │ │ ├── control_gflags.h │ │ │ │ ├── dependency_injector.h │ │ │ │ ├── hysteresis_filter.h │ │ │ │ ├── interpolation_1d.h │ │ │ │ ├── interpolation_2d.h │ │ │ │ ├── leadlag_controller.h │ │ │ │ ├── mrac_controller.h │ │ │ │ ├── pid_BC_controller.h │ │ │ │ ├── pid_controller.h │ │ │ │ ├── pid_IC_controller.h │ │ │ │ └── trajectory_analyzer.h │ │ │ ├── control_component.h │ │ │ └── controller │ │ │ ├── controller_agent.h │ │ │ ├── controller.h │ │ │ ├── lat_controller.h │ │ │ ├── lon_controller.h │ │ │ └── mpc_controller.h │ │ ├── launch │ │ │ └── control.launch │ │ ├── package.xml │ │ ├── README_cn.md │ │ ├── README.md │ │ └── src │ │ ├── common │ │ │ ├── control_gflags.cc │ │ │ ├── hysteresis_filter.cc │ │ │ ├── interpolation_1d.cc │ │ │ ├── interpolation_2d.cc │ │ │ ├── leadlag_controller.cc │ │ │ ├── mrac_controller.cc │ │ │ ├── pid_BC_controller.cc │ │ │ ├── pid_controller.cc │ │ │ ├── pid_IC_controller.cc │ │ │ └── trajectory_analyzer.cc │ │ ├── control_component.cc │ │ └── controller │ │ ├── controller_agent.cc │ │ ├── lat_controller.cc │ │ ├── lon_controller.cc │ │ └── mpc_controller.cc │ ├── apollo_map │ │ ├── CMakeLists.txt │ │ ├── conf │ │ │ ├── navigator_config.pb.txt │ │ │ ├── relative_map.conf │ │ │ └── relative_map_config.pb.txt │ │ ├── data │ │ ├── include │ │ │ └── apollo_map │ │ │ ├── hdmap │ │ │ │ ├── adapter │ │ │ │ │ ├── coordinate_convert_tool.h │ │ │ │ │ ├── opendrive_adapter.h │ │ │ │ │ ├── proto_organizer.h │ │ │ │ │ └── xml_parser │ │ │ │ │ ├── common_define.h │ │ │ │ │ ├── header_xml_parser.h │ │ │ │ │ ├── junctions_xml_parser.h │ │ │ │ │ ├── lanes_xml_parser.h │ │ │ │ │ ├── objects_xml_parser.h │ │ │ │ │ ├── roads_xml_parser.h │ │ │ │ │ ├── signals_xml_parser.h │ │ │ │ │ ├── status.h │ │ │ │ │ └── util_xml_pars

最低0.47元/天 解锁文章
1168

被折叠的 条评论
为什么被折叠?



