ros版本apollo7.0.0规划控制算法

apollo.ros-7.0.0

上次给大家带来了之前学习apollo时开发的内容apollo.ros-1.0.0apollo.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

简介

此项目为基于ros1apollo7.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

目前移植版本能实现车辆在高精度地图下进行routingplanningcontrol仿真测试,与原有版本改动点如下:

  • 使用原生ros(基于noetic)替代apollo中的CyberRT
  • 使用ros pkg封装apollo中的module
  • 使用cmake进行编译
  • protobuff版本提升到3.6.1
  • 增加sim_controlsim_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
评论 26
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forrest-Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值