spaceuma / ADE-Mobile_Manipulation

C++ code for European H2020 Project ADE
Other
1 stars 3 forks source link

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, gonzalopd96@uma.es

Co-author: J. Ricardo Sánchez Ibáñez, jricardosanchezibanez@gmail.com

Supervisor: Carlos J. Pérez del Pulgar, carlosperez@uma.es

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.

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:

Dependencies

Required (the indicated version is the one used)

Optional (mainly for results visualization)

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}}