Prometheusv2中的EGOSwarm代码阅读笔记,个人学习用。
目前还有部分代码没看明白,欢迎大家交流!
EGOPlanner—Prometheus代码阅读笔记汇总
主要参考资料:
Fast Planner——代码解读参考资料整理
EGO-Swarm代码阅读笔记汇总
代码来源:
https://github.com/ZJU-FAST-Lab/ego-planner
https://github.com/amov-lab/Prometheus
一、启动文件
(一)介绍
1. 位置
Scripts\simulation\ego_planner\
2. 仿真启动文件
- ego_planner_1uav.sh:单个无人机算法测试(传感器信息由map_generator模拟得到)
- ego_planner_4uav.sh:4架无人机算法测试
(二)仿真启动文件
1. ego_planner_1uav.sh(单机仿真)
- roscore(ros节点管理器)
- prometheus_simulator_utils:map_generator.launch(Prometheus地图生成器:启动gazebo场景、rviz点云图)
- prometheus_gazebo: sitl_indoor_1uav.launch(Prometheus室内单无人机仿真,gazebo_enable=false)
- prometheus_uav_control: uav_control_main_indoor.launch(Prometheus单机控制节点)
- ego_planner: sitl_ego_planner_basic.launch(运行单机EGO-Planner算法)
节点运行图
节点
- /joy_node:遥控器(Prometheus)
- /uav_control_main_1:主控制(Prometheus)
- /uav1/mavros:与飞控通信(Prometheus)
- /gazebo:仿真(Prometheus)
- /map_generator_node:点云地图生成(Prometheus)
- /uav1_ego_planner_node:ego_planner主节点(EGO-Planner-Swarm)
- /uav1_traj_server_for_prometheus:发布轨迹(EGO-Planner-Swarm)
话题
- /uav1/prometheus/fake_rc_in:虚拟PX4遥控器数据
- /uav1/prometheus/ground_truth:gazebo仿真真值
- /uav1/prometheus/state:无人机状态合集,包括位置\速度\姿态\模式等
- /uav1/prometheus/odom:无人机里程计数据
- /uav1/prometheus/command:无人机控制指令
- /uav1/mavros/local_position/velocity_loacl:无人机ENU坐标系的当前速度数据
- /uav1/mavros/setpoint_raw/local:期望的无人机ENU坐标系的控制量(包含位置、速度、加速度等)
- /uav1/map_generator/local_cloud:局部点云
- /uav1/scan:
- /uav1/planning/bspline:
- /broadcast_bspline:
2. ego_planner_4uav.sh
- roscore(ros节点管理器)
- prometheus_simulator_utils:map_generator.launch(Prometheus地图模拟器)
- prometheus_gazebo: sitl_indoor_4uav.launch gazebo(Prometheus多无人机gazebo仿真)
- prometheus_uav_control: uav_control_main_indoor_4uav.launch(Prometheus多机控制)
- ego_planner: sitl_ego_planner_4uav.launch(运行多机EGO-Planner)
节点运行图
节点
话题
(三)节点启动文件
1. sitl_ego_planner_basic.launch
功能
- 运行advanced_param.xml进行参数初始化,并启动ego_planner_node节点;
- 启动traj_server_for_prometheus节点,向无人机发送控制命令。
启动节点
- ego_planner:ego_planner(算法主节点)
- ego_planner:traj_server_for_prometheus(根据B样条轨迹向无人机发送控制指令)
包含
- advanced_param.xml:初始化参数,启动ego_planner 主节点
2. advanced_param.xml
传入参数
- 无人机编号:uav_id = 1
- 地图大小:map_size_x/y/z = 50/50/52
- map_origin_x/y = -25/-25
- 飞行高度:ground_height = 0.5
- 里程计话题:odometry_topic = prometheus/odom
- 移动物体数obj_num_set =10
- 相机系到全局系的坐标变换话题camera_pose_topic =pcl_render_node/camera_pose
- 点云信息:cloud_topic = map_generator/local_cloud
- scan话题:scan_topic = scan
- 最大速度及加速度:max_vel/acc = 0.5/0.5
- 局部规划的范围:planning_horizon =7.5 (1.5倍的传感器距离)
- 是否使用特定的轨迹:use_distinctive_trajs = true
- 飞行模式:flight_type= 1使用用户设置的2D目标 或 2使用给定的全局路标点
- 路标点个数:point_num=1
- 路标点坐标pointi_x/y/z (i=0~n-1共n个路标点)
启动节点
- ego_planner:ego_planner_node(ego_planner主节点)