Skip to content

INESCTEC/AgRobPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logotipo Instituição A                 Logotipo Instituição B

AgRob Path Planning

robot

AgRob Path Planning (AgRobPP) (watch video) is an A* algorithm designed for robot navigation in uneven terrains, such as steep slope vineyards, which are characterized by their unique landscapes with high inclinations. This algorithm ensures safe and efficient path planning for robots operating in challenging environments.

Key Features:

  • Terrain Awareness: The algorithm subscribes to an Occupancy Grid Map (ROS2), an Elevation Map, the robot's localization (or starting point), and a goal point.
  • Safe Path Generation: Based on the input data, AgRobPP generates a safe path considering the robot's center of mass and dimensions. This ensures the robot does not experience excessive vertical deviation, preventing potential falls in steep terrains.
  • Consideration of Maximum Curvature: The path generation process also takes into account the robot's maximum curvature. This ensures that the generated path respects the robot's turning capabilities, preventing sharp turns that might be physically impossible or unsafe for the robot to execute in the given terrain.
  • Waypoints or Parametric Curves: The output provides a set of waypoints or parametric curves that can be utilized by a precision controller for navigation.
  • Point Cloud Translator (PC2GD): AgRobPP includes a point cloud translator algorithm called PC2GD (Point Cloud to Grid Map and Digital Elevation Model). This algorithm extracts the Occupancy Grid Map and Digital Elevation Model (DEM) from a point cloud.

The software is currently being tested with Ubuntu 22.04 LTS (Jammy Jellyfish) and ROS2 Humble Hawksbill.

Topological Map Implementation

There is a non-open-source version of AgRobPP that implements a topological representation of the map, which significantly optimizes the use of computational resources. This implementation allows for path planning in large, more realistic agricultural environments, such as vast vineyards, where traditional grid-based methods may become inefficient.

For more information on this version of the algorithm, refer to the following articles:

  1. Path Planning with Hybrid Maps for Processing and Memory Usage Optimisation
    DOI: 10.1109/ICARSC55462.2022.9784767

  2. Occupancy Grid and Topological Maps Extraction from Satellite Images for Path Planning in Agricultural Robots
    DOI: 10.3390/robotics9040077


Table of Contents


Version History

Below is a list of versions released for this project. Each version has a link to its release notes or relevant documentation.

Version Release Date Description
v1.0.0 2020-12-02 Initial ROS1 Release
v1.1.0 2021-07-01 Improvements in Elevation Map
v2.0.0 2022-05-20 Initial ROS2 Foxy Release
v2.0.1 2025-04-07 ROS2 Foxy Release Open-Source
v2.1.0 2025-04-09 ROS2 Humble Release

Prototype Status

  • In Development: aligned with [Roadmap](#Software Roadmap).
  • Testing Phase: Being tested in agricultural scenarios (steep slope vineyards).
  • Completed: Center of mass awareness and trajectory in splines format.

Software Roadmap

The planned milestones and tasks for the project's development. Completed tasks are marked.

  • ROS2 Compatibility:
    • Compatible with ROS2 Foxy
    • Compatible with ROS2 Humble
    • Compatible with ROS2 Jazzy
  • *Path Planning:
    • A* Algorithm for 2D Path Planning
    • A* Algorithm for 2.5D Path Planning (Robot's heading)
    • Path generation considering robot's maximum curvature
    • Output with continuous splines trajectories
    • Improve path quality using backwards search (enhance planning for better optimization)
  • Terrain Awareness:
    • Integration with Occupancy Grid Map
    • Integration with Digital Elevation Map (DEM)
    • Path generation considering robot's center of mass
    • Enhance terrain adaptation for real-time path adjustments based on terrain data
  • Hybrid Path Planning with AgRob Topologic:
    • Initial integration with AgRob Topologic
    • Testing for hybrid path planning with topological map
    • Optimization of computational resources for large areas
  • Path Planning Without prior map:
    • Usage of onboard sensors for online path planning
  • Release:
    • Write release notes
    • Conduct user testing
    • Final documentation update

Dependencies


Installation Instructions

Refer to ROS official documentation to install it in your machine.

cd /home/<user>/dev_ws/src (to e.g.)
git clone https://gitlab.inesctec.pt/agrob/tribe_nav_msgs.git -b main
git clone https://gitlab.inesctec.pt/agrob/prototypes/agrobpp.git -b main
cd ../

apt install libopencv-dev python3-opencv

apt install ros-humble-nav2-map-server ros-humble-nav2-lifecycle-manager

apt install ros-humble-rviz2 #(if not previously installed - optional)

rosdep install --from-paths src --ignore-src -r

colcon build

_## Usage

The agrob_path ROS2 package includes a node, agrob_path_node, for path planning, along with service interfaces and several configurable parameters. Before executing, please check the Interfaces file for details. In this file you will find the published/subscribed topics, services, and the parameters and their meaning. With this, you can better tune and use agrob_path_node.

Two examples are available in the launch directory of this repository. Customize parameters to suit your specific use case.

source /opt/ros/humble/setup.bash
source /home/<user>/dev_ws/install/local_setup.bash (to e.g.)

cd /home/<user>/dev_ws/src/agrobpp/agrob_path/launch/seixo_integration_eurecat
ros2 launch run.launch.py
# Wait for the information of initialized map and use 2D Pose Buttons of Rviz to define Init and Goal Poses

The agrob_path package requires specific inputs depending on the selected operating mode:

When operating with centre of mass awareness, the system requires:

  • 2D Occupancy Grid Map
  • Elevation map
  • Centre of mass of the robot (xyz coordinates in base referential)

For standard operation without centre of mass considerations, only the 2D occupancy grid map is required.

To generate the necessary map inputs, you must first obtain a 3D map of the environment in either PCD or PLY format. The map_generator_node provided with agrob_path processes these 3D maps to extract both the 2D occupancy grid map and the elevation map in the formats required by the path planning algorithms. Check the Interfaces file for details.

source /opt/ros/humble/setup.bash
source /home/<user>/dev_ws/install/local_setup.bash (to e.g.)

cd /home/<user>/dev_ws/agrob_path/launch/map_generator/seixo_eurecat/
ros2 launch generate_map.launch.py

# new terminal (source again if necessary)
ros2 launch map_saver_server.py 

# new terminal (source again if necessary)
ros2 service call /map_saver/save_map nav2_msgs/srv/SaveMap "{map_topic: /map_generator_node/map, map_url: my_map, image_format: pgm, map_mode: trinary, free_thresh: 0.25, occupied_thresh: 0.65}"

# You should now have an Occupancy Grid Map (map.png) and Elevation Map (elevation.yml) in the current directory 

Project Structure

Overview of the main folders and files in the repository to help users navigate the code.

Folder/File Description
/src Source code files for the software prototype
/include Source code header files for the software prototype
/srv Service definition files for the software prototype
/launch Template for a launch file to run agrob_path_node
/data Contains images used in this README file, the ROS2 interfaces used by agrob_path_node and debug maps created by the node

Contributors

We thank the following team members for their contributions to this project:

Name Email
Luís Carlos Santos luis.c.santos@inesctec.pt
Filipe Neves dos Santos fbsantos@inesctec.pt

Information and Citation:

To cite this work, please refer to the following article:

Path Planning Aware of Robot’s Center of Mass for Steep Slope Vineyards

@article{santos_path_planning_2020, 
  title={Path Planning Aware of Robot’s Center of Mass for Steep Slope Vineyards}, 
  volume={38}, 
  DOI={10.1017/S0263574719000961}, 
  number={4}, 
  journal={Robotica}, 
  publisher={Cambridge University Press}, 
  author={Santos, Luís and Santos, Filipe and Mendes, Jorge and Costa, Pedro and Lima, José and Reis, Ricardo and Shinde, Pranjali}, 
  year={2020}, 
  pages={684–698}
}

License

AgRobPP is licensed under the GNU General Public License v3.0 (GPL-3.0).

Copyright (C) 2017-2020, INESC TEC

This software is distributed WITHOUT ANY WARRANTY. See the full license for details.

A commercial license is available for industrial use. Contact INESC TEC at info@inesctec.pt.

If you use this software in your research, please cite according to the details in the Information and Citation section.

Acknowledgments

This prototype was funded and developed under the following projects:

  • Vine & Wine - This project focused on enhancing vineyard management and production efficiency.

  • Scorpion - The Scorpion project aimed to develop a smart sprayer for precision agriculture.

  • NOVATERRA - NOVATERRA addresses the reduction of chemical inputs in Mediterranean agriculture.

  • ROSIN- ROS-Industrial Quality-Assured Robot Software Components.

This work is financed by National Funds through the Portuguese funding agency, FCT - Fundação para a Ciência e a Tecnologia, within project LA/P/0063/2020.


About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published