Coder Social home page Coder Social logo

mirkow / dynamic_obstacle_avoidance_linear Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jingluo93/dynamic_obstacle_avoidance_linear

0.0 0.0 0.0 7.06 MB

This package contains a dynamic obstacle avoidance algorithm for concave and convex obstacles as developped in [1].

Home Page: http://lasa.epfl.ch/people/member.php?SCIPER=274454

Python 100.00%

dynamic_obstacle_avoidance_linear's Introduction

ObstacleAvoidance Algorithm


This package contains a dynamic obstacle avoidance algorithm for concave and convex obstacles as developped in [1]. The algorithm is an extension of the work of [2].

This module requires python 3 including certain libraries which can be found in requirements-pip.txt.

To install, clone the code from github and make sure all pip requirement are met:

git clone https://github.com/epfl-lasa/dynamic_obstacle_avoidance_linear
pip install -r requirements-pip.txt

Quick start

Several examples of the obstacle avoidance algorithm have been ipmlemented. The highly reactive nature of the algorithm allows it to be used to avoid crowded environment with fastly chaning movement of humans.

Vector fields

Different examples of the vector field simulation can be launched by running the script

examples_vectorField.py

The simulation number can be specified to run each specific simulation. The resolution indicates the number of grid points along each axis. Further more figures can be saved automatically into the <> folder.

Custom vector fields can be created using by calling the class

Simulation_vectorFields() [$ lib_visalization/vectorField_visualization.py]

Animated visualization

Different animated examples with static and non-static obstacles can be found in:

examples_animation.py

The simulation number can be specified to choose between the animations. Further it can be saved directly to a MP4 video.

Custom vector animation can be created by running the function

run_animation() [$ lib_visalization/animated_simulation.py]

Obstacle Class

For each obstacle of an ellipsoid form, a class instanse of "lib_obstacleAvoidance/obstacle_class.py" has to be defined. This desires several paramters such as center position x0, axis length a, surface curvature p, orientation th_r. Moving obstacles additionally have a linear velocity xd and an angular velocity w.

For the modulation towards a general obstacle needs a reference point within the obstacle, the distance to the obstacle and the tangent hyperplane.

An ellipsoid obstacle can be created using the class

class_obstacle() [$ lib_obstacleAvoidance/class_obstacle.py]

Modulation

An initial (linear) dynamical system is modulated around obstacles. The modulation works in real-time and dynamically around any number of obstacles. Convergence towards an attractor can be ensured, as long as intersecting obstacles can be described with a star shape. Detailled information can be found in [1]. The modulation is performed with the function

obs_avoidance_interpolation_moving() in [$ lib_obstacleAvoidance/linear_modulations.py]

It takes as argument the position x of the modulation, the initial dynamial system xd and a list of obstacles obs. Optional arguments are the position and the hyperparameter weightPow, which defines the weighting function.

A RK4 integration uses the function:

obs_avoidance_rk4() in [$ lib_obstacleAvoidance/linear_modulations.py]

Helping functions are defined in the "lib_obstacleAvoidance/linear_modulations.py".

Reference Point

At the heart of the present obstacle avoidance algorithm lies the correct placement of the reference point within the obstacle. It ensures convergence towards the attractor and defines the split of the DS.

Automatic and dynamic placement of the reference point is done with the functions of the dynamic center are applied with "lib_obstacleAvoidance/obs_common_section.py" and "lib_obstacleAvoidance/obs_dynamic_center_3d.py". </>

Concave obstacles

Complexer obstacles can either be formed using several ellipses, which already allows to form many star shaped obstacles. Note, more complex obstacles can be formed with an analytical description of the surface of the obstacle, but this module can not handle it yet

References

[1] Huber, Lukas, Aude Billard, and Jean-Jacques E. Slotine. "Avoidance of Convex and Concave Obstacles with Convergence ensured through Contraction." IEEE Robotics and Automation Letters (2019).

[2] Khansari-Zadeh, Seyed Mohammad, and Aude Billard. "A dynamical system approach to realtime obstacle avoidance." Autonomous Robots 32.4 (2012): 433-454.

Contact: [Lukas Huber] (http://lasa.epfl.ch/people/member.php?SCIPER=274454) (lukas.huber AT epfl dot ch)

Acknowledgments This work was funded in part by the EU project Crowdbots.

dynamic_obstacle_avoidance_linear's People

Contributors

hubernikus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.