Skip to content

Demonstrative navigation stack for a quadruped robot (nav + control).

Notifications You must be signed in to change notification settings

rebmaso/quadruped_ros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

quadruped_ros

Full navigation stack (control + navigation) for a quadruped robot (tested on a React Robotics Dogbot). It includes a demo app. The project integrates libraries such as Towr, Idyntree and Alglib in ROS. The demo task consists in looking for a user-specified target QR code among 3 rooms, whose location is known and also assigned by the user. the robot returns to the home location either after finding the right QR code, or after all rooms have been unsuccesfully explored (QR code not found). The control algorithm implemented in Controller is inspired by the whole-body controller in this paper. The navigation module in Planner is instead based on the artificial potential fields method. The app that uses these libraries is in Main. To take a look at the demo app in action, please watch this video.

This is an image

Setting things up

This project has been tested on ROS Noetic.

Install all external dependencies (ROS Noetic, Idyntree, Zbar, Ifopt, and Hector Mapping):

sudo apt-get install ros-noetic-desktop-full zbar-tools ros-noetic-ifopt ros-noetic-hector-slam

Follow these instructions to install Idyntree with Conda, or build it from source.

This project also uses Alglib and Towr, but you don't need to install them. The headers are in the include folder.

Clone the repo in your current ROS workspace and

source ~/<your_ws>/devel/setup.bash

Build the workspace with the release flag:

catkin_make -DCMAKE_BUILD_TYPE=Release

Launching the simulator

Spawn the world and the dogbot model in gazebo:

roslaunch dogbot_gazebo dogbot_sim.launch <gui:=false> <rviz:=true>

This launch file also runs rviz with a custom lightweight config. You can optionally use the gazebo gui using the input args as shown.

Running the app (control + navigation)

Launch the node:

roslaunch popt main.launch <target_id:="id_2">

The main app unpauses gazebo and runs both the control and the navigation pipelines. This launch file also starts the hector_mapping node, which uses lidar scans to build a globally consistent 2D occupancy grid map of the environment, along with a 2D base link pose estimate. The map is used by the navigation algorithm. You can optionally pass the target qr code as an argument, as shown.

About

Demonstrative navigation stack for a quadruped robot (nav + control).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages