Giter Club home page Giter Club logo

ade-mobile_manipulation's Introduction

ADE-Mobile_Manipulation

Combined path and motion planner for workspace restricted mobile manipulators in planetary exploration

C++ library used in H2020 EC Project Autonomous DEcision making in very long traverses (ADE)

image

Author: Gonzalo Jesús Paz Delgado, [email protected]

Co-author: J. Ricardo Sánchez Ibáñez, [email protected]

Supervisor: Carlos J. Pérez del Pulgar, [email protected]

Organization: Space Robotics Lab, University of Malaga

Table of Contents

Description

Coupled path and motion planner for Mobile Manipulation (MM), focused on rovers with a restricted arm workspace.

  • First, a Fast Marching Method (FMM) based path planner generates a safe trajectory to reach the goal vicinity, avoiding obstacles and non-traversable areas in the scenario. The path planner is able to control the final rover orientation to ensure that the goal is finally reachable by the arm.
  • Second, a FMM 3D based motion planner generates the arm joints motion profile, by creating a 3D tunnel-like cost volume surrounding the already computed rover base trajectory. This tunnel makes use of an offline-computed safe workspace of the manipulator, thus ensuring that no self-collision will occur during the planned motion.

Check the Simulation and field tests video.

Installation

In order to get this repository together with its submodules, use the following command (Source):

git clone --recursive ADE-Mobile_Manipulation

Then, to install the component and the required packages:

cd ~/ADE-Mobile_Manipulation
chmod u+x install.sh
sudo ./install.sh

Examples

There are several unit tests that can be used as examples. To run them:

./runUnitTests

Then, the results will be saved in:

test/unit/data/results

The input for the unit tests (rover and goal poses, maps...) can be modified in:

test/unit/data/input

The unit test results can be viewed using the provided python3 utils. For example, to represent the evolution of the arm during the motion plan:

cd utils/unitTestsViewers/
python3 armFullPlanViewer.py <approach>

Or to represent the base motion plan:

python3 baseMotionPlanViewer.py <approach>

Where <approach> is:

  • 0 for end deployment within the coupled approach
  • 1 for progressive deployment within the coupled approach
  • 2 for beginning deployment within the coupled approach
  • 3 for decoupled solution

Dependencies

Required (the indicated version is the one used)

Optional (mainly for results visualization)

  • python3-pip

  • mayavi

  • PyQt5

  • python3-matplotlib

File Tree

Directory Description
data/ Data required as input by the planner
deps/ External dependencies
├── ESA-Trajectory_Control/ (Git submodule) Libraries for path tracking
├── UMA-PathAndMotion_Planning/ Libraries for planning rover and arm paths
doc/ Documentation
spike/ Individual portions of code to try new things
src/ Source files
├── MobileManipMotionPlanner.h Main Interface Class
├── MobileManipMap.h Class to handle Map Information
├── MotionPlan.h The Plan to move both arm and rover
├── MobileManipExecutor.h Class to provide commands during execution
├── mmFileManagerLib/ Library to read external files
         ├── mmFileManager.h Functions to read from external text files
├── types/ All types used by the component
         ├── MMError.h MM Error Codes
         ├── MMStatus.h MM Status Codes
         ├── RoverGuidance_Dem.h DEM type used by Rover Guidance
         ├── base/ Types using base namespace
         ├── proxy_library/ Types using proxy_library namespace
test/ Test files
UML/ UML Project files
utils/ Utilities
├── armCollisionsViewer/ Check and view if the arm collides for a given config
├── armReachabilityComputer/ Compute and represent the arm reachability volume
├── armSingleSweepingComputer/ Example computation of a simple sweeping movement for the end effector
├── logsHandler/ Logs extraction and different pythonr utils for representation
├── motionPlannerAnalyzer/ Process unit tests log data to obtain results about performance
├── unitTestsViewers/ Python scripts to represent the results of the unit tests

Citation

If this work was helpful for your research, please consider citing the following BibTeX entry:

@ARTICLE{author={Paz-Delgado, G.J. and Sánchez-Ibáñez, J.R. and Domínguez, R. and Pérez-Del-Pulgar, C.J. and Kirchner, F. and García-Cerezo, A.}, journal={IEEE Access}, title={Combined path and motion planning for workspace restricted mobile manipulators in planetary exploration}, year={2023}, pages={1-1}, doi={10.1109/ACCESS.2023.3298980}}

ade-mobile_manipulation's People

Contributors

jricardosan avatar gonzalopd96 avatar carlibiri 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.