A step-by-step tutorial for how to work with some of the most basic features of Nav2 using a Jupyter Notebook in a warehouse environment to create a basic application.

Overview

nav2_rosdevday_2021

This project has a step-by-step tutorial for how to work with some of the most basic features of Nav2 using a Jupyter Notebook in a warehouse environment to create a basic application. This is used by the 2021 ROS Developers Day talk by Steve Macenski.

This contains:

  • A Jupyter notebook with instructions for a Nav2 walkthrough of these features
  • Demo for running Nav2 in the AWS Warehouse World
  • Demo for running Nav2 on a non-TB3 industrial robot
  • Demo for Keepout Zones and Speed Restricted Zones
  • Demo code for working with Nav2 in python3 simple autonomy application

This demonstration is overall a reasonable baseline for how to work with Nav2 with a non-default setup (e.g. non-Turtlebot3 robot in a non-sandbox world) for first-time users.

Setup

To set this up on your own machine, please do the following:

# Create a workspace
mkdir -p colcon_ws/src
cd colcon_ws/src

# Get the demo code
git clone [email protected]:stevemacenski/nav2_rosdevday_2021.git

# Get the dependencies not shipped with Galactic at June 8, 2021.
vcs import . < nav2_rosdevday_2021/deps.repos
cd ../

# Install dependencies which are shipped with Galactic at June 8, 2021.
rosdep install --from-path src --ignore-src -r -y

# Build the workspace
source /opt/ros/galactic/setup.bash
colcon build

Running the demos

You can see step-by-steps in the main.ipynb file (which can be launched via jupyter-notebook main.ipynb). In general though after building the demos can be launched as (after setting the proper GAZEBO_MODEL_PATHs):

source colcon_ws/install/setup.bash
ros2 launch nav2_rosdevday_2021 system_launch.py # launches simulation, rviz, nav2

source colcon_ws/install/setup.bash
python3 colcon_ws/src/nav2_rosdevday_2021/nav2_rosdevday_2021/scripts/{pick a demo}.py # launches autonomy or API demo

With demos being:

  • picking_demo.py
  • security_demo.py
  • inspection_demo.py
  • nav_to_pose_demo.py
  • nav_through_poses_demo.py
  • waypoint_follower_demo.py

The first 3 are example demo applications using Nav2 tools. The final 3 are full examples of using the robot_navigator.py file for python3-based Nav2-as-a-library. Each are well commented and self explanatory.

Comments
  • On the topic of navigation states

    On the topic of navigation states

    Hi Steve Macenski, if I want to write a callback function with return of def getResult(self), which topic should I subscribe to? Maybe navigate_to_pose/_action/status? But what makes me sad is that I can't find a poster for this topic.

    opened by miku54 1
  • Unable to locate package ros-galactic-slam-toolbox

    Unable to locate package ros-galactic-slam-toolbox

    System Description:

    • OS: Ubuntu 20.04
    • Environment: ROS2 Galactic inside a Docker environment
    1. On running rosdep install --from-path src --ignore-src -r -y, the following error occurs-
    executing command [sudo -H apt-get install -y ros-galactic-slam-toolbox]
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package ros-galactic-slam-toolbox
    ERROR: the following rosdeps failed to install
      apt: command [sudo -H apt-get install -y ros-galactic-slam-toolbox] failed
      apt: Failed to detect successful installation of [ros-galactic-slam-toolbox]
    
    1. I could, still, successfully simulate Nav2 Goal, Nav Through Poses, and Waypoint Following in the amazon warehouse world as well as the security demo. The costmaps did not appear in RViz, accompanied by this warning:
      image
      I suspect this may be related to missing installation of the slam toolbox.

    2. The Time Taken indicator in the Nav2 RViz Panel did not update, while the other indicators worked flawlessly.

    opened by trunc8 1
  • Repo

    Repo

    • [x] Add images / gif to readme
    • [ ] Add link to presentation in readme
    • [x] Add link to event in readme
    • [x] Add more context / info that might be valuble
    • [ ] branch out into tutorials: python3 working with nav2 (/scripts), package for custom robot sim (all else)
    • [x] python navigator commander? harden, remove all ros dependencies/status codes
    • [x] upload videos to youtube
    opened by SteveMacenski 0
  • The Construct Needs

    The Construct Needs

    • [x] Galactic environment
    • [x] No ROS1 / ROS1 paths
    • [x] Installed dependencies: OMPL, bond_core, test_msgs, lcov, behaviortree_cpp, gazebo_ros_pkgs
    • [x] clone into git repo
    • [ ] update instructions to include Construct-specific button instructions (?)
    • [x] repo contain submodule for nav2 galactic
    • [x] repo flatten out workspace, show pkg in root (use a script + .repos file instead?)
    opened by SteveMacenski 0
  • Outline

    Outline

    • [x] Who am I
    • [x] Overview of talk
    • [x] Overview of Nav2
    • [x] Getting started - NTP rviz
    • [x] Getting started - NHP python (generic driving around basics leading into python script, building to...)
    • [x] wp + executors (doing what? executors or TODO app building to...)
    • [x] keepout / speed (now complete application for a warehouse)
    • [x] Now full basic autonomy application!
    • [x] Conclusion / questions

    Demo tasks

    • [x] change world to aws warehouse world
    • [x] costmap filter tool / pregenerated maps from alexey
    • [x] launch files / param files / commands
    • [ ] 35 minutes of dialog
    • [ ] change robot (?)
    opened by SteveMacenski 0
  • Neobotix MP400 isn't rendered correctly in Gazebo

    Neobotix MP400 isn't rendered correctly in Gazebo

    Bug report

    • operating system: Ubuntu 20.04
    • ROS2 Galactic (binaries)

    Steps to reproduce:

    • clone repository to your ros2_ws, install aws-robomaker-small-warehouse-world ROS2 Galactic package (binary) and the rest from deps.repos (neobotix robot etc.)
    • build package colcon build --symlink-install
    • source install/setup.bash
    • ros2 launch nav2_rosdevday_2021 system_launch.py

    Part of my .bashrc file:

    source ~/nav2_ws/install/setup.bash
    export TURTLEBOT3_MODEL=waffle
    export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/home/ljaniec/ros2_ws/install/aws_robomaker_small_warehouse_world/share/aws_robomaker_small_warehouse_world/worlds:/home/ljaniec/ros2_ws/install/aws_robomaker_small_warehouse_world/share/aws_robomaker_small_warehouse_world/models:/home/ljaniec/ros2_ws/install/neo_simulation2/share/neo_simulation2/robots:/home/ljaniec/ros2_ws/install/neo_simulation2/share/neo_simulation2/models:/opt/ros/galactic/share/turtlebot3_gazebo/models:/home/ljaniec/.gazebo/models
    

    Expected behavior

    The simulation with one visible AMR MP 400 rendered and Nav2 stack for starting demo scripts.

    Actual behavior

    The simulation doesn't have correctly rendered robot (screens below).

    • Collision view in Gazebo
    • Model tree

    Additional information

    What I tried:

    • reinstall Gazebo and Nav2 packages

    • I have found a similar bug there

    • I checked URDF like there and it didn't show problems

    • this bug shows in Simple Commander too (TB3 is invisible, but not in "Collisions" view in Gazebo) - maybe it is something connected with these meshfile changes mentioned in the link above?

    opened by ljaniec 2
  • foxy-devel

    foxy-devel

    would it be possible to run this repo under foxy(-devel).

    sofar i tried changing the deps.repos: url: https://github.com/ros-planning/navigation2.git version: foxy

    thing seam to be running so far BUT i am getting an error (wish seam to be handled in other issues):

    [bt_navigator-12] [ERROR] [] []: Original error: Could not load library: libnav2_compute_path_to_pose_action_bt_node.so: cannot open shared object file: No such file or directory

    any recommendation on how to fix this?

    should i take other consideration for the implantation in foxy be taken in to account?

    thank you for the support

    opened by 3mrrrx 2
Owner
Steve Macenski
I make robots move, Open Source Robotics Lead.
Steve Macenski
Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Nikolaos Avouris 2 Dec 5, 2021
Repo to demo translating colab/jupyter notebook to streamlit webapp

Repo to demo translating colab/jupyter notebook to streamlit webapp

Marisa Smith 2 Feb 2, 2022
The refactoring tutorial I wrote for PyConDE 2022. You can also work through the exercises on your own.

Refactoring 101 planet images by Justin Nichol on opengameart.org CC-BY 3.0 Goal of this Tutorial In this tutorial, you will refactor a space travel t

Kristian Rother 9 Jun 10, 2022
C++ Environment InitiatorVisual Studio Code C / C++ Environment Initiator

Visual Studio Code C / C++ Environment Initiator Latest Version : v 1.0.1(2021/11/08) .exe link here About : Visual Studio Code에서 C/C++환경을 MinGW GCC/G

Junho Yoon 2 Dec 19, 2021
Collection of tools to be more productive in your work environment and to avoid certain repetitive tasks. 💛💙💚

Collection of tools to be more productive in your work environment and to avoid certain repetitive tasks. ??????

Raja Rakotonirina 2 Jan 10, 2022
Script to work around some quirks of the blender obj importer

ObjFix 1.0 (WIP) Script to work around some quirks of the blender obj importer Installation Download this repo In Blender, press "Edit" on the top-bar

Red_3D 4 Nov 20, 2021
✔️ Create to-do lists to easily manage your ideas and work.

Todo List + Add task + Remove task + List completed task + List not completed task + Set clock task time + View task statistics by date Changelog v 1.

Abbas Ataei 30 Nov 28, 2022
MindF**k it's a programming language as BrainFuck, but with some cool features.

MindF**k Description MindF**k it's a programming language as BrainFuck, but with some cool features. Symbol What does symbol mean > Next slot < Previo

tixcode 0 Jun 15, 2022
InfiniPy has some neat features - like the endpoint for function

InfiniPy has some neat features - like the endpoint for function

ZeroTwo 7 Nov 20, 2022
Application launcher and environment management

Application launcher and environment management for 21st century games and digital post-production, built with bleeding-rez and Qt.py News Date Releas

null 10 Nov 3, 2022
a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself.

Handy Project a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself. the handy pro

amirkasra esmaeilian 13 Jul 5, 2021
Comics/doujinshi reader application. Web-based, will work on desktop and tablet devices with swipe interface.

Yomiko Comics/doujinshi reader application. Web-based, will work on desktop and tablet devices with swipe interface. Scans one or more directories of

Kyubi Systems 26 Aug 10, 2022
The purpose is to have a fairly simple python assignment that introduces the basic features and tools of python

This repository contains the code for the python introduction lab. The purpose is to have a fairly simple python assignment that introduces the basic

null 1 Jan 24, 2022
This repository requires you to solve a problem by writing some basic python code.

Can You Solve a Problem? A beginner friendly repository that requires you to solve familiar problems with python. This could be as simple as implement

Precious Kolawole 11 Nov 30, 2022
ArinjoyTheDev 1 Jul 17, 2022
Display your data in an attractive way in your notebook!

Bloxs Bloxs is a simple python package that helps you display information in an attractive way (formed in blocks). Perfect for building dashboards, re

MLJAR 192 Dec 28, 2022
The only purpose of a byte-sized application is to help you create .desktop entry files for downloaded applications.

Turtle ?? The only purpose of a byte-sized application is to help you create .desktop entry files for downloaded applications. As of usual with elemen

TenderOwl 14 Dec 29, 2022
KUIZ is a web application quiz where you can create/take a quiz for learning and sharing knowledge from various subjects, questions and answers.

KUIZ KUIZ is a web application quiz where you can create/take a quiz for learning and sharing knowledge from various subjects, questions and answers.

Thanatibordee Sihaboonthong 3 Sep 12, 2022
Create an application to visualize single/multiple Xandar Kardian people counting sensors detection result for a indoor area.

Program Design Purpose: We want to create an application to visualize single/multiple Xandar Kardian people counting sensors detection result for a indoor area.

null 2 Dec 28, 2022