Skip to content

naturerobots/mesh_navigation_tutorials

Repository files navigation

Mesh Navigation Tutorials

Mesh Navigation   •   Documentation   •   Videos   •   Issues

This repository contains a set of examples to quickly and easily start with mesh_navigation. We provide different scenarios where our approach excels over state-of-the art 2D or 2.5D approaches. We will explain different parameter sets in more detail and show how to fine-tune mesh_navigation in various scenarios. Our example worlds consists of both real-world and hand-modelled scenarios. With the hand-modelled examples we particularly aim to support low-end computers or laptops.

Note: Because of an great interest of people we talked to, we decided to release this repository in an unfinished state. It is still under construction and will be extended by more synthetic and real-world recorded worlds and detailed docs. It's open-source: Feel free to contribute.

Requirements and Installation

  • You need a working ROS 2 installation. We target humble at the moment.
  • Go into a ROS 2 workspace's source directory cd $YOUR_ROS_WS/src.
  • Clone the tutorial code git clone [email protected]:naturerobots/mesh_navigation_tutorials.git
  • Get the tutorial's ROS 2 dependencies
    • Clone source dependencies: Run vcs import --input mesh_navigation_tutorials/source_dependencies.yaml in your ROS 2 workspace source directory.
    • Get packaged dependencies: Run rosdep install --from-paths . --ignore-src -r -y from within your ROS 2 workspace source directory.
  • Build: Go to workspace root cd $YOUR_ROS_WS and run colcon build --packages-up-to mesh_navigation_tutorials.

Run the Examples

Launch

ros2 launch mesh_navigation_tutorials mesh_navigation_tutorial_launch.py world_name:=floor_is_lava

You change floor_is_lava by any world name that is available with this repository (see all by calling launch file with --show-args). Those are:

Name World Default Map Description
tray tray_world tray_map This world is a rectangular area with a wall around the perimeter.
floor_is_lava floor_is_lava_world floor_is_lava_map This world contains a square area with with two pits and a connecting section at a slightly higher elevation.
parking_garage parking_garage_world parking_garage_map This world represents a parking garage with multiple floors connected by ramps.

When running a simulated world, you can save some resources by not running the gazebo GUI: Add the start_gazebo_gui:=False launch argument.

Rviz GUI

In rviz, you should be able to see the mesh map. This map is being used for navigation.

In order to make the robot move, find the "Mesh Goal" tool at the top. With it, you can click on any part of the mesh. Click and hold to set a goal pose. The MbfGoalActions rviz plugin contains a very tiny state machine that performs the following actions:

  • subscribe to that goal pose
  • get a path to that pose
  • execute that path

Detailed Instructions

For more detailed instructions on how to parameterize things or what things can be changed see the wiki

Related Repositories