Lecture 7 - Obstacle Avoidance with Dynamical Systems
Abstract
This lecture presents how dynamical systems can be used to create robust obstacle avoidance when controlling robots. In order to guarantee obstacle avoidance, one can locally modulate the dynamical system (DS) to contour obstacles or to remain within a given workspace. Importantly, while doing so, we can preserve some of the inherent properties of the DS, such as convergence on a given target. We start with a modulation that allows for avoiding convex obstacles, and then extend it to concave obstacles and to multiple obstacles in movement. We show that the formulation can also be used to enforce a flow to move inside a volume, which would be useful to ensure that the path stays within the robot’s workspace.
Lecture Video
Slides
Click here to download a pdf version of the ppt presentation.
Exercises Instructions
Click here to download a pdf of the instructions for the exercises.
Code for MATLAB Exercises
The recommended way to do the MATLAB exercises is to download the entire repository once, then go to each lecture's folder. Detailled instructions for installation can be found on the Software page.
Click here to download the corresponding exercise for this lecture as a zip file.
Note you will also need this libraries folder placed with the correct directory structure.
First Theoretical Exercise Solution
Click here to download a pdf of the solution of the first handwritten exercise.
Supplements
Guaranteed obstacle avoidance of dense and dynamic obstacles in enclosed spaces
Python packages by Lukas Huber for :
This is a closed-form approach to obstacle avoidance for multiple moving convex and star-shaped concave obstacles, inspired from harmonic-potentials fields. It was applied on an autonomous robot (QOLO) in a static complex indoor environment and tested in simulations with dense crowds.
Obstacle Type : Convex, Concave, multiple, moving
Theoritical guarantees : Asymptotic stability, Impenetrability of obstacles hull
Type of dynamics : non-linear, task-space
Fast obstacle avoidance
Python packages by Lukas Huber for : Fast obstacle avoidance
This method addresses the issue of enabling obstacle avoidance based on sparse and asynchronous perception. The proposed control scheme combines a high-level input command provided by either a planner or a human operator with fast reactive obstacle avoidance (FOA). The sampling-based sensor data can be combined with an analytical reconstruction of the obstacles for real-time collision avoidance.
Obstacle Type : Convex, star-shaped, multiple, moving
Theoritical guarantees : Asymptotic stability, Impenetrability of obstacles hull
Type of dynamics : non-linear
Avoidance of concave obstacles through rotation of nonlinear dynamics
Controlling complex tasks in robotic systems, such as circular motion for cleaning or following curvy lines, can be dealt with using nonlinear vector fields. This article introduces a novel approach called the rotational obstacle avoidance method (ROAM) for adapting the initial dynamics when obstacles partially occlude the workspace. ROAM presents a closed-form solution that effectively avoids star-shaped obstacles in spaces of arbitrary dimensions by rotating the initial dynamics toward the tangent space. The algorithm enables navigation within obstacle hulls and can be customized to actively move away from surfaces while guaranteeing the presence of only a single saddle point on the boundary of each obstacle. We introduce a sequence of mappings to extend the approach for general nonlinear dynamics.
Obstacle Type : Convex, star-shaped, multiple, moving
Theoritical guarantees : single saddle point on boundary of obstacle, Impenetrability of obstacles hull
Type of dynamics : dynamic, non-linear
Passive obstacle aware control to follow desired velocities
Evaluating and updating the obstacle avoidance velocity for an autonomous robot in real-time ensures robustness against noise and disturbances. A passive damping controller can obtain the desired motion with a torque-controlled robot, which remains compliant and ensures a safe response to external perturbations. Here, we propose a novel approach for designing the passive control policy. Our algorithm complies with obstacle-free zones while transitioning to increased damping near obstacles to ensure collision avoidance. This approach ensures stability across diverse scenarios, effectively mitigating disturbances. Validation on a 7DoF robot arm demonstrates superior collision rejection capabilities compared to the baseline, underlining its practicality for real-world applications. Our obstacle-aware damping controller represents a substantial advancement in secure robot control within complex and uncertain environments.
Real-time Joint-Space Obstacle Avoidance
Python code by Mikhail Koptev for : Reactive joint space obstacle avoidance.
This method uses a neural implicit signed distance function expressed in joint space coordinates, that efficiently computes distance-to-collisions for arbitrary robotic manipulator configurations. This distance function can be used to achieve real-time reactive control by i) formulating it as a collision-avoidance constraint for a quadratic programming (QP) inverse kinematics (IK), and ii) introducing it as a collision cost in a sampling-based joint space model predictive controller (MPC).
Obstacle Type : Convex, Concave, multiple, moving
Theoritical guarantees :
Type of dynamics : non-linear, joint-space