{"id":24936804,"url":"https://github.com/aliy98/slope_constrained_planner","last_synced_at":"2025-10-06T05:56:29.329Z","repository":{"id":227297704,"uuid":"768559759","full_name":"aliy98/slope_constrained_planner","owner":"aliy98","description":"A global path planner for quadruped robots which considers slope of the terrain as constraint","archived":false,"fork":false,"pushed_at":"2025-01-23T09:20:52.000Z","size":10901,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T01:13:48.777Z","etag":null,"topics":["boston-dynamics-spot","ompl","prm-planner"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliy98.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-07T10:04:15.000Z","updated_at":"2025-04-07T23:48:38.000Z","dependencies_parsed_at":"2025-01-23T10:32:31.752Z","dependency_job_id":null,"html_url":"https://github.com/aliy98/slope_constrained_planner","commit_stats":null,"previous_names":["aliy98/slope_constrained_planner"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aliy98/slope_constrained_planner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliy98%2Fslope_constrained_planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliy98%2Fslope_constrained_planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliy98%2Fslope_constrained_planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliy98%2Fslope_constrained_planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliy98","download_url":"https://codeload.github.com/aliy98/slope_constrained_planner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliy98%2Fslope_constrained_planner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278565853,"owners_count":26007757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boston-dynamics-spot","ompl","prm-planner"],"created_at":"2025-02-02T16:57:17.282Z","updated_at":"2025-10-06T05:56:29.314Z","avatar_url":"https://github.com/aliy98.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Slope-Informed Global Path Planning for Quadruped Robots\n\nThis work describes the initial steps in developing a global path planner for a quadruped robot designed to traverse outdoor environments with uneven terrains. The ultimate goal is to generate paths that strike a balance between path length, tortuousness, energy efficiency, and safety when encountering slopes. The article details the system architecture and the implemented planning method, which incorporates slope\nconstraints into a roadmap-based approach to generate paths with various characteristics. The algorithm has undergone\nextensive testing, both in simulation and with the Spot robot from Boston Dynamics. In both sets of experiments, noticeable\ndifferences were observed when adjusting the constraints on the robot’s maximum allowable inclination angles.\nPlease refer to the provided [documentation](https://aliy98.github.io/slope_constrained_planner/), for more details about this work.\n\n**Authors:** \n  - Ali Yousefi, ali.yousefi@edu.unige.it\n  - Zoe Betta, zoe.betta@edu.unige.it\n  - Carmine Tommaso Recchiuto, carmine.recchiuto@dibris.unige.it\n  - Antonio Sgorbissa, antonio.sgorbissa@unige.it\n    \n©2024 RICE - DIBRIS, University of Genova\n\u003cp align=\"left\"\u003e\n\u003cimg src=\"https://github.com/aliy98/slope_constrained_planner/assets/65722399/720cd6f1-419a-46f1-82e4-84ae9e84bdd2\" width=\"150\" title=\"rice_logo\"\u003e\n\u003c/p\u003e\n\n\n### Docker Image\nThere is a docker image provided for this work, containing ROS noetic on Ubuntu 20.04, and all the required packages as well. It could be accessed using the link [HERE](https://hub.docker.com/r/aliy98/slope_constrained_planner). Otherwise, in order to run this package in a native linux, the following dependencies have to be taken into account.\n\n### Dependencies\n* The software for this planner is based on [OMPL](https://ompl.kavrakilab.org/index.html), which consists of many state-of-the-art sampling-based motion planning algorithms. The required dependencies could be installed using the following command:\n \n```\nsudo apt install ros-noetic-ompl ros-noetic-grid-map-core ros-noetic-actionlib ros-noetic-geometry-msgs ros-noetic-grid-map-msgs ros-noetic-grid-map-ros ros-noetic-nav-msgs ros-noetic-roscpp ros-noetic-tf2-geometry-msgs ros-noetic-tf2-ros\n```\n\n* Additionally, [elevation_mapping](https://github.com/ANYbotics/elevation_mapping) ROS package was used to create a 2.5D map of the environment. \n\n* In order to test the software package in simulation environment, [WoLF](https://github.com/graiola/wolf-setup) was used. This package provides whole-body controller, along with the robot description files and some interesting worlds for Boston Dynamics Spot robot, as well as several other famous quadruped robots.\n\n\n### Usage in Simulation\nIn order to run the simulation environemnt, along with the elevation mapping package, the following launch file could be used:\n\n```\n   roslaunch slope_constrained_planner_ros simulation.launch\n```\n\nOnce the robot is spawned in a random point by ``go0.py`` script, a random goal point would be chosen on the map with a particular distance to robot. Then, robot would align to the goal point, and it would tilt along it's y-axiz by ``tilt_robot.py`` script, in order to have a better view in the elevation map.\n\nThe planner node, could be launched using the following command:\n\n```\n   roslaunch slope_constrained_planner_ros planner.launch \n```\n\nOnce the solution path is found by the planner, the robot could move along the path, using the provided ``path_follower.py`` script:\n\n```\n   roslaunch slope_constrained_planner_ros path_follower.launch\n```\n\n### Usage in real-world experiment\nRegarding the real-world usage with Boston Dynamics Spot CORE, the elevation mapping package, and spot ros packages could be launched using the command:\n\n```\n   roslaunch slope_constrained_planner_ros navigation.launch\n```\n\nMoreover, the following command would make the robot stand up and wait for the waypoint on the found trajectory. Actually, it uses the commands on the Spot SDK, to perform the task of local path planning, based on the found global path by our planner.\n\n```\n   rosrun slope_constrained_planner_ros gotopoint.py\n```\nThe planner node, could be launched using the following command:\n\n```\n   roslaunch slope_constrained_planner_ros planner.launch \n```\nOnce the path is found, the waypoints on the trajectory would be published to the local path planner ``gotopoint``, using the following command:\n```\n   rosrun slope_constrained_planner_ros goal_publisher.py\n```\n\n### Configuration\nThe parameters of planner components (e.g. sampler, motion validartor, planning algorithm), could be modified in the file ``slope_constrained_planner/config/params.yaml``. Regarding the elevation map, the configuration files are located in the same directory which are named ``map_sim.yaml`` and ``map_real.yaml``.\n\n### System hypothesis and future work\nWe implemented a global path planner algorithm able to\ntake into account constraints on the slope a quadruped robot\ncan face outdoor. The presence slope constraints effectively\ninfluences the generated path in a way that allows for longer\npaths but limited slope or vice versa. We observed these\nresults both in simulation and in real-world experiments with\nthe Spot robot from Boston Dynamics.\n\nIn future work, we plan to conduct more extensive testing\nwith the Spot robot on steeper hills to thoroughly assess\nthe algorithm’s limitations. Additionally, we will investigate\nthe impact of various solutions on battery consumption to\ndetermine potential differences in energy efficiency. This\nresearch will ultimately contribute to the development of a\nsystem that emulates human versatility in making decisions\nregarding slope navigation. The robot may opt to follow a\nlonger (and potentially safer) path or a shorter (but more\nenergy-intensive) path, taking into account factors such as\ntask requirements, time constraints, payload, battery charge,\nand other relevant parameters.\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliy98%2Fslope_constrained_planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliy98%2Fslope_constrained_planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliy98%2Fslope_constrained_planner/lists"}