apollo.ros-7.0.0
本文章针对apollo 7.0.0版本进行了ros1移植,具体介绍见下文。
PS:项目开发详细了解可在评论区留言。
ros版本apollo7.0.0感知算法
基于ros1的apollo 7.0.0感知融合算法。
简介
此项目基于ros1的apollo 7.0.0感知融合算法,移植主要目的如下:
- 学习apollo框架设计
- 学习apollo的感知融合算法
目前只针对apollo中部分模块进行了移植,移植模块如下:
目前移植版本与原有版本改动点如下:
- 使用原生ros(基于melodic)替代apollo中更改的Cyber
- 使用ros pkg封装apollo中module
- 使用catkin_make/cmake编译
- 将
ptotobuf
版本提升到3.19.4 - 将
cmake
版本提升到3.25.2 - 增加动/静态障碍物
rviz
显示
此移植版本,能很好的将自己的算法增加到框架中,应用于机器人或者无人驾驶中;并且该框架适用于多模态传感器的融合,非1V1R
内容
.
├── CMakeLists.txt
├── launch
│ └── perception_fusion.launch
├── main.cc
├── modules
│ └── apollo_perception
│ ├── apollo_base
│ │ ├── CMakeLists.txt
│ │ ├── blob.cc
│ │ ├── blob.h
│ │ ├── box.h
│ │ ├── camera.cc
│ │ ├── camera.h
│ │ ├── common.h
│ │ ├── comparison_traits.h
│ │ ├── concurrent_object_pool.h
│ │ ├── distortion_model.cc
│ │ ├── distortion_model.h
│ │ ├── frame.h
│ │ ├── frame_supplement.h
│ │ ├── image.h
│ │ ├── image_8u.h
│ │ ├── impending_collision_edge.h
│ │ ├── object.cc
│ │ ├── object.h
│ │ ├── object_pool.h
│ │ ├── object_pool_types.cc
│ │ ├── object_pool_types.h
│ │ ├── object_supplement.h
│ │ ├── object_types.h
│ │ ├── omnidirectional_model.cc
│ │ ├── omnidirectional_model.h
│ │ ├── point.h
│ │ ├── point_cloud.h
│ │ ├── polynomial.cc
│ │ ├── polynomial.h
│ │ ├── sensor_meta.h
│ │ ├── syncedmem.cc
│ │ ├── syncedmem.h
│ │ └── vehicle_struct.h
│ ├── apollo_common
│ │ ├── CMakeLists.txt
│ │ ├── duration.cc
│ │ ├── duration.h
│ │ ├── environment.h
│ │ ├── file.cc
│ │ ├── file.h
│ │ ├── geometry
│ │ ├── graph
│ │ ├── include
│ │ ├── io
│ │ ├── perception_gflags.cc
│ │ ├── perception_gflags.h
│ │ ├── sensor_manager
│ │ ├── src
│ │ ├── time_utils.cc
│ │ └── time_utils.h
│ ├── apollo_fusion
│ │ ├── CMakeLists.txt
│ │ ├── app
│ │ ├── base
│ │ ├── common
│ │ ├── config
│ │ ├── lib
│ │ └── rviz
│ ├── apollo_lib
│ │ ├── CMakeLists.txt
│ │ ├── config_manager
│ │ ├── registerer
│ │ └── thread
│ └── proto
│ ├── CMakeLists.txt
│ ├── dst_existence_fusion_config.pb.cc
│ ├── dst_existence_fusion_config.pb.h
│ ├── dst_existence_fusion_config.proto
│ ├── dst_type_fusion_config.pb.cc
│ ├── dst_type_fusion_config.pb.h
│ ├── dst_type_fusion_config.proto
│ ├── fusion_component_config.pb.cc
│ ├── fusion_component_config.pb.h
│ ├── fusion_component_config.proto
│ ├── object.pb.cc
│ ├── object.pb.h
│ ├── object.proto
│ ├── pbf_tracker_config.pb.cc
│ ├── pbf_tracker_config.pb.h
│ ├── pbf_tracker_config.proto
│ ├── perception_config_schema.pb.cc
│ ├── perception_config_schema.pb.h
│ ├── perception_config_schema.proto
│ ├── probabilistic_fusion_config.pb.cc
│ ├── probabilistic_fusion_config.pb.h
│ ├── probabilistic_fusion_config.proto
│ ├── sensor_meta_schema.pb.cc
│ ├── sensor_meta_schema.pb.h
│ └── sensor_meta_schema.proto
├── package.xml
├── test
│ └── unit_test.cc
└── test_data
├── 20231121_Q2_roadtest_1.bin
└── modules
├── kalman_motion_fusion
│ ├── data
│ └── params
└── probabilistic_fusion
├── conf
├── data
└── params
代码部署
-
在线安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-
安装验证:安装完成执行,
sudo docker version
查看docker目前安装的版本等信息: -
使用配置:避免每次新开一个终端都要
sudo
输入权限,给docker增加用户的权限。执行完成后重启电脑之后生效
sudo usermod -aG docker $USER
-
docker拉取ros melodic镜像
docker pull osrf/ros:melodic-desktop-full
镜像构建
- 执行指令构建镜像
cd apollo_ros_7.0.0_ws/src/docker/build/
./docker_build.sh
- 构建成功显示如下:
编译
- 创建容器并进入
./src/docker/scripts/docker_start.sh
cd apollo_ros_ws/
- 使用catkin_make install
catkin_install
- 进入容器:如果容器已经启动,想新开一个终端进去,可使用以下指令:
./src/docker/scripts/docker_into.sh
测试
cd /home/apollo_ros/apollo_ros_ws
source devel/setup.bash
roslaunch src/apollo_7.0.0/launch/perception_fusion.launch
宿主机新开一个终端:
rviz -d src/rviz/fusion_rviz.rviz
Enjoy.