- You could get this library from:
git clone https://bitbucket.org/khansari/obstacleavoidance ObstacleAvoidance
Obstacle avoidance is a classical problem in robotics and many approaches have been proposed to solve it. The above sourcecode provides a novel approach to real-time obstacle avoidance based on dynamical systems (DS) that ensures impenetrability of multiple convex shaped objects. In the presented method, we assume that the robot motion is driven by a continuous and differentiable DS in the absence of obstacle(s). This DS is provided by the user, and henceforth we will call it the original DS. Given the original DS and an analytical formulation describing the surface of obstacles, our algorithm is able to instantly modify the robot's trajectory to avoid collisions with obstacles by modulating the original dynamics. The modulation is parameterizable and allows to determine a safety margin and to increase the robot's reactiveness in the face of uncertainty in the localization of the obstacle. Our approach has the following main features:
1) it guarantees the safe collision avoidance.
2) As it only requires the differentiability of the original DS, it can be applied on a large set of DS including locally and globally asymptotically stable DS, autonomous and non-autonomous DS, limit cycles, unstable DS, etc.
3) It does not modify the critical points of the original DS. Thus the attractors of the original DS are also the attractors of the modulated DS.
4) it can be applied to multiple obstacles.
5) it can be applied to perform obstacle avoidance in both Cartesian and Joint spaces.
If the original DS is modeled with SEDS, the modulated DS is inherently robust to perturbations, and can instantly adapt its motion to a dynamically changing environment.
Figure In the experiment presented in this figure, the robot is required to put a glass on the desk and in front of the person, while avoid hitting several objects including a desk lamp, a pile of books, a Wall-E toy, a pencil sharpener, an open book, a (red) glass, and a desk. All the objects except the red glass are fixed and their convex envelope are shown in green. The trajectory of the red glass is indicated by red diamonds (for the clarity of the graph, we do not display the envelope of the red glass).
- An overview video of our obstacle avoidance approach: