Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

spaceuma/ADE-Mobile_Manipulation

Open more actions menu

Repository files navigation

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.

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

About

C++ code for European H2020 Project ADE

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.