Real-Time Quad-Rotor Path Planning for Mobile Obstacle Avoidance Using Convex Optimization
Michael Szmuk, Carlo Alberto Pascucci, BehÇet AÇikmeşe
Abstract
In this paper, we employ convex optimization to perform real-time 3-dimensional path planning on-board a quad-rotor and demonstrate its real-time capabilities. Building on our previous work, we make the following modifications: (1)we assume the obstacles are mobile, and (2)we introduce a simple framework to continuously recompute and update the trajectory. The contribution of this paper is to demonstrate the feasibility of real-time on-board convex-optimization-based path planning. For multi-rotors with fixed-pitch propellers, this path planning problem has two sources of non-convexity. First, since fixed-pitch actuators produce uni-directional thrust, the commanded total thrust must be maintained above a non-zero minimum in order to retain sufficient independent attitude control authority. The second source of non-convexity is due to the keep-out zones that envelop each obstacle. To circumvent the non-convexities introduced by these control and state constraints, we employ lossless and successive con-vexification, respectively. Consequently, we cast the original problem as a sequence of Second-Order Cone Programming problems, which can be solved quickly and reliably on-board. We conclude by presenting indoor flight demonstration and timing results of a scenario with three mobile obstacles. In this scenario, our algorithm assumes that the obstacles move with constant acceleration, and is re-executed regularly to account for uncertainties in the motion of the obstacles. The results show that new trajectories can be computed at rates in excess of 10 Hz, quickly enough to adapt to the uncertainty introduced in our flight demonstration.
BibTeX
@inproceedings{iros2018_realtimequadroto,
title = {Real-Time Quad-Rotor Path Planning for Mobile Obstacle Avoidance Using Convex Optimization},
author = {Michael Szmuk and Carlo Alberto Pascucci and BehÇet AÇikmeşe},
booktitle = {IROS 2018},
year = {2018}
}