/safety_pipeline_UAV

A Lightweight Pipeline for landing obstacles avoidance and safe landing zone extraction

Primary LanguageCMake

UAV Landing Safety Pipeline

A Lightweight Pipeline for landing obstacles avoidance and safe landing zone extraction

Pipeline Arch

In this repository you can find our proposed pipeline for safe landing areas. It is implemented in ROS.

The pipeline is consisted of three submodules:

  • Point Cloud Generator
  • Temporal Octomap
  • Landing Commander

Pipeline Arch

Point Cloud Generator

The backbone of this submodule is the object detector. In that case we use the YOLO v7. A pair of stereo images is collected and then feeded to the object detector. The centers of the detections' bounding boxes are matched and then triangulated to produce a point cloud (ROS pointcloud2 msg) consisting only of the network's detections.

Subscribing Topics

  • /stereo/left/image_raw
  • /stereo/left/camera_info
  • /stereo/right/image_raw
  • /stereo/left/camera_info

Publishing Topics

  • /PointCloud
  • /detector/detected_objects
  • /detector/detection_image
  • /detector_debug

Parameters

  • ~weigths
  • Path to the network's weights.
  • ~matching_distance_coefficient
  • Distance coefficient of two points, in image pairs, to match them.
  • ~confidence
  • Confidence threshold. Detections with conf. less than this value are ignored.
  • ~max_detections
  • Maximum number of detections in each frame.
  • ~device
  • Device that the network in loaded on.
  • ~camera0_topic
  • ~camera0_info_topic
  • ~camera1_topic
  • ~camera1_info_topic

Temporal Octomap

This submodule has as its input the pointcloud2 msg from the Point Cloud Generator. The point cloud is inserted into an Octomap for its efficient manipulation. This module is very similar to octomap_mapping package. One key difference is the deletion of every octree node after a predefined time frame. The outoput of this module comprises of an occupancy grid projected on the ground plane that represents occupied space by landing obstacles.

Subscribing Topics

  • /PointCloud

Publishing Topics

  • /occupied_cells_vis_array
  • /projected_map
  • /temporal_octomap_debug

Parameters

  • ~frame_id
  • ~min_x_size
  • ~min_y_size
  • ~max_range
  • ~resolution
  • ~sensor_model/hit
  • ~sensor_model/miss
  • ~sensor_model/min
  • ~sensor_model/max
  • ~Occupancy_Thres
  • ~sensor_model/min
  • ~decaytime/sec
  • ~decaytime/nsec

Landing Commander

This is the last module of the pipeline and it handles the safe landing points extraction and the landing procedure itself. The latter is base on the PX4 Autopilot software.

Subscribing Topics

  • /projected_map
  • /mavros/state
  • /mavros/extended_state

Publishing Topics

  • /occupancy_output
  • /landing_commander_debug
  • /debug_landing_targets
  • /mavros/setpoint_position/local

Parameters

  • ~safety_dist
  • Safety radius drawn from each occupied cell in the occupancy grid
  • ~target_proc_time
  • The processing time target for the dynamic stride
  • ~safety_area
  • Land point searching begins after x meters.
  • ~minimum_stirde
  • The minimum searching stride
  • ~stride_coef
  • Coef for stride change intensity
  • ~robot_frame/hit
  • The UAV's frame name
  • ~land_to_base
  • Taget is to land to the base
  • ~debug
  • Publish debug msgs
  • ~show_occupancy_map
  • Display occupancy map

Other

A tool to help evaluate the performance of this pipeline can be found in gazebo_occupancy repo

Experiments done to evaluate the performance of this pipeline can be found in safety_pipeline_experiments repo