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

该博客介绍了将 Apollo 1.0.0 框架移植到 ROS1 的过程,包括主要模块的移植,如控制、决策、定位和消息等。移植目的是为了学习 Apollo 框架和控制算法,并提供了一个可用于机器人或无人驾驶算法开发的平台。移植后的版本包含了 Apollo_simulator 仿真工具,可用于测试和验证算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

apollo.ros-1.0.0

Hello,时隔不知道多久……我又回来了!这次给大家带来的是我之前学习apollo时开发的内容,主要是针对apollo 1.0.0版本进行了ros1的移植,具体介绍见下文。即上次开源机器人算法分享cpp_robotics后,这次分享也是开源的,需要下载见apollo.ros-1.0.0

PS:

  • 基于ros1的 apollo 3.0.0规划控制算法已经发布,详情见apollo.ros-3.0.0
  • 基于ros1的 apollo 7.0.0规划控制算法已经发布,详情见apollo.ros-7.0.0

简介

此工程为基于 apollo 1.0.0 的ros1移植版本,移植主要目的如下:

  • 学习apollo框架设计
  • 学习apollo中的控制算法

目前只针对apollo中主要模块进行了移植,移植模块有:

apollo_ros
    ├── apollo_common
    ├── apollo_control
    ├── apollo_decision
    ├── apollo_localization
    ├── apollo_msgs
    ├── apollo_planning
    └── apollo_simulator

目前移植版本与原有版本改动点如下:

  • 使用原生ros(基于noetic)替代apollo中更改的ros
  • 使用ros pkg封装apollo中每个module
  • 使用cmake进行编译
  • 将protobuff版本提升到3.6.1
  • 使用ros中的std_msgs/String替代apollo的pd_msgs/xxx消息
  • 增加pnc仿真工具apollo_simulator

此移植版本,能很好的将自己的算法增加到框架中,应用于机器人或者无人驾驶中。

内容

.
├── apollo_common
│   ├── CMakeLists.txt
│   ├── data
│   │   └── mkz_config.pb.txt
│   ├── include
│   │   └── apollo_common
│   │       ├── adapters
│   │       │   ├── adapter_gflags.h
│   │       │   ├── adapter.h
│   │       │   ├── adapter_manager.h
│   │       │   └── message_adapters.h
│   │       ├── apollo_app.h
│   │       ├── configs
│   │       │   ├── config_gflags.h
│   │       │   └── vehicle_config_helper.h
│   │       ├── log.h
│   │       ├── macro.h
│   │       ├── math
│   │       │   ├── aabox2d.h
│   │       │   ├── aaboxkdtree2d.h
│   │       │   ├── angle.h
│   │       │   ├── box2d.h
│   │       │   ├── euler_angles_zxy.h
│   │       │   ├── integral.h
│   │       │   ├── kalman_filter.h
│   │       │   ├── linear_interpolation.h
│   │       │   ├── linear_quadratic_regulator.h
│   │       │   ├── line_segment2d.h
│   │       │   ├── math_utils.h
│   │       │   ├── matrix_operations.h
│   │       │   ├── polygon2d.h
│   │       │   ├── quaternion.h
│   │       │   ├── search.h
│   │       │   ├── sin_table.h
│   │       │   └── vec2d.h
│   │       ├── monitor
│   │       │   ├── monitor_buffer.h
│   │       │   └── monitor.h
│   │       ├── status
│   │       │   └── status.h
│   │       ├── time
│   │       │   └── time.h
│   │       ├── util
│   │       │   ├── factory.h
│   │       │   ├── file.h
│   │       │   ├── string_tokenizer.h
│   │       │   └── util.h
│   │       └── vehicle_state
│   │           └── vehicle_state.h
│   ├── package.xml
│   ├── README.md
│   └── src
│       ├── adapters
│       │   ├── adapter_gflags.cc
│       │   └── adapter_manager.cc
│       ├── apollo_app.cc
│       ├── configs
│       │   ├── config_gflags.cc
│       │   └── vehicle_config_helper.cc
│       ├── math
│       │   ├── aabox2d.cc
│       │   ├── angle.cc
│       │   ├── box2d.cc
│       │   ├── integral.cc
│       │   ├── linear_interpolation.cc
│       │   ├── linear_quadratic_regulator.cc
│       │   ├── line_segment2d.cc
│       │   ├── math_utils.cc
│       │   ├── polygon2d.cc
│       │   ├── search.cc
│       │   ├── sin_table.cc
│       │   └── vec2d.cc
│       ├── monitor
│       │   ├── monitor_buffer.cc
│       │   └── monitor.cc
│       ├── util
│       │   ├── file.cc
│       │   ├── string_tokenizer.cc
│       │   └── util.cc
│       └── vehicle_state
│           └── vehicle_state.cc
├── apollo_control
│   ├── CMakeLists.txt
│   ├── conf
│   │   ├── adapter.conf
│   │   ├── control.conf
│   │   ├── lincoln_062145.pb.txt
│   │   ├── lincoln_062146.pb.txt
│   │   ├── lincoln_062147.pb.txt
│   │   ├── lincoln_062546.pb.txt
│   │   ├── lincoln_062547.pb.txt
│   │   ├── lincoln_062845.pb.txt
│   │   └── lincoln.pb.txt
│   ├── include
│   │   └── apollo_control
│   │       ├── common
│   │       │   ├── base_types.h
│   │       │   ├── control_gflags.h
│   │       │   ├── definitions.h
│   │       │   ├── hysteresis_filter.h
│   │       │   ├── interpolation_2d.h
│   │       │   ├── pid_controller.h
│   │       │   └── trajectory_analyzer.h
│   │       ├── control.h
│   │       ├── controller
│   │       │   ├── controller_agent.h
│   │       │   ├── controller.h
│   │       │   ├── lat_controller.h
│   │       │   └── lon_controller.h
│   │       └── filters
│   │           ├── digital_filter_coefficients.h
│   │           ├── digital_filter.h
│   │           └── mean_filter.h
│   ├── launch
│   │   └── control.launch
│   ├── package.xml
│   ├── README.md
│   └── src
│       ├── common
│       │   ├── control_gflags.cc
│       │   ├── hysteresis_filter.cc
│       │   ├── interpolation_2d.cc
│       │   ├── pid_controller.cc
│       │   └── trajectory_analyzer.cc
│       ├── control.cc
│       ├── controller
│       │   ├── controller_agent.cc
│       │   ├── lat_controller.cc
│       │   └── lon_controller.cc
│       ├── filters
│       │   ├── digital_filter.cc
│       │   ├── digital_filter_coefficients.cc
│       │   └── mean_filter.cc
│       └── main.cc
├── apollo_decision
│   ├── CMakeLists.txt
│   ├── conf
│   │   ├── adapter.conf
│   │   └── decision.conf
│   ├── include
│   │   └── apollo_decision
│   │       ├── common
│   │       │   └── decision_gflags.h
│   │       └── decision.h
│   ├── launch
│   │   └── decision.launch
│   ├── package.xml
│   ├── README.md
│   └── src
│       ├── common
│       │   └── decision_gflags.cc
│       ├── decision.cc
│       └── main.cc
├── apollo_localization
│   ├── CMakeLists.txt
│   ├── conf
│   │   ├── camera_adapter.conf
│   │   ├── localization.conf
│   │   ├── localization_config.pb.txt
│   │   └── rtk_adapter.conf
│   ├── include
│   │   └── apollo_localization
│   │       ├── camera
│   │       │   └── camera_localization.h
│   │       ├── common
│   │       │   └── localization_gflags.h
│   │       ├── decision.h
│   │       ├── localization_base.h
│   │       ├── localization.h
│   │       └── rtk
│   │           └── rtk_localization.h
│   ├── launch
│   │   └── localization.launch
│   ├── package.xml
│   ├── README.md
│   └── src
│       ├── camera
│       │   └── camera_localization.cc
│       ├── common
│       │   └── localization_gflags.cc
│       ├── localization.cc
│       ├── main.cc
│       └── rtk
│           └── rtk_localization.cc
├── apollo_msgs
│   ├── CMakeLists.txt
│   ├── include
│   │   └── apollo_msgs
│   │       └── proto
│   │           ├── canbus
│   │           ├── common
│   │           ├── control
│   │           ├── decision
│   │           ├── localization
│   │           ├── perception
│   │           ├── planning
│   │           └── prediction
│   ├── package.xml
│   ├── proto
│   │   └── apollo_msgs
│   │       └── proto
│   │           ├── canbus
│   │           │   ├── chassis_detail.proto
│   │           │   └── chassis.proto
│   │           ├── common
│   │           │   ├── adapter_config.proto
│   │           │   ├── config_extrinsics.proto
│   │           │   ├── error_code.proto
│   │           │   ├── geometry.proto
│   │           │   ├── gnss_status.proto
│   │           │   ├── header.proto
│   │           │   ├── monitor.proto
│   │           │   └── vehicle_config.proto
│   │           ├── control
│   │           │   ├── calibration_table.proto
│   │           │   ├── control_cmd.proto
│   │           │   ├── control_conf.proto
│   │           │   ├── lat_controller_conf.proto
│   │           │   ├── lon_controller_conf.proto
│   │           │   └── pad_msg.proto
│   │           ├── decision
│   │           │   └── decision.proto
│   │           ├── localization
│   │           │   ├── camera_parameter.proto
│   │           │   ├── camera.proto
│   │           │   ├── gps.proto
│   │           │   ├── imu.proto
│   │           │   ├── localization_config.proto
│   │           │   ├── localization.proto
│   │           │   └── pose.proto
│   │           ├── perception
│   │           │   ├── perception_obstacle.proto
│   │           │   └── traffic_light_detection.proto
│   │           ├── planning
│   │           │   ├── planning_internal.proto
│   │           │   └── planning.proto
│   │           └── prediction
│   │               └── prediction_obstacle.proto
│   └── README.md
├── apollo_planning
│   ├── CMakeLists.txt
│   ├── conf
│   │   ├── adapter.conf
│   │   └── planning.conf
│   ├── data
│   │   └── garage.csv
│   ├── include
│   │   └── apollo_planning
│   │       ├── common
│   │       │   ├── base_types.h
│   │       │   └── planning_gflags.h
│   │       ├── planner
│   │       │   ├── planner.h
│   │       │   └── rtk_replay_planner.h
│   │       ├── planner_factory.h
│   │       ├── planning.h
│   │       └── planning_node.h
│   ├── launch
│   │   └── planning.launch
│   ├── package.xml
│   ├── README.md
│   └── src
│       ├── common
│       │   └── planning_gflags.cc
│       ├── main.cc
│       ├── planner
│       │   └── rtk_replay_planner.cc
│       ├── planner_factory.cc
│       ├── planning.cc
│       └── planning_node.cc
├── apollo_simulator
│   ├── CMakeLists.txt
│   ├── conf
│   │   └── adapter.conf
│   ├── include
│   │   └── apollo_simulator
│   │       ├── apollo_simulator.h
│   │       └── vehicle_sim_model
│   │           ├── sim_model_constant_acceleration.h
│   │           ├── sim_model_ideal.h
│   │           ├── sim_model_interface.h
│   │           ├── sim_model_time_delay.h
│   │           └── sim_model_util.h
│   ├── launch
│   │   ├── simulation.launch
│   │   └── simulator.launch
│   ├── package.xml
│   ├── param
│   │   └── simulator_params.yaml
│   ├── README.md
│   ├── rviz
│   │   └── simulation.rviz
│   └── src
│       ├── apollo_simulator.cpp
│       ├── main.cpp
│       └── vehicle_sim_model
│           ├── sim_model_constant_acceleration.cpp
│           ├── sim_model_ideal.cpp
│           ├── sim_model_interface.cpp
│           ├── sim_model_time_delay.cpp
│           └── sim_model_util.cpp
├── AUTHORS.md
├── LICENSE
└── README.md

安装

依赖

  • ros1(noetic,安装见ros官网)

  • eigen3

    sudo apt install libeigen3-dev
    
  • glog

    sudo apt install libgoogle-glog-dev
    
  • gflags

    sudo apt install libgflags-dev 
    
  • gtest

    sudo apt install libgtest-dev 
    
  • protobuff 3.6.1

    wget https://github.com/google/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz
    tar xzf protobuf-cpp-3.6.1.tar.gz
    
    pushd protobuf-3.6.1
    ./configure --prefix=/usr
    make -j8
    make install
    popd
    

编译

  • 创建的ros工作空间
  • 使用catkin_make或者catkin build指令进行代码编译

测试

这里主要使用apollo_simulator仿真工具进行规划控制(pnc)进行测试,测试指令如下:

roslaunch apollo_simulator simulation.launch

基于 apollo 1.0.0 的ros1移植版本

维护者

@forrest

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Forrest-Z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值