UP | HOME

Homework 4

Logistics

  1. Create a git repository using the link provided in Canvas.
  2. Your homework will be submitted via this git repository.
  3. I will grade whatever is on the main branch when I clone the repository.
  4. Guidelines provides important information about what you should turn-in, including information about your README.md file.

Navigation

  • The goal is to use the simulated robot to map an environment and then navigate within the map using the slam_toolbox

The Environment

  • Clone the package nubot, which is a package that simulates a mobile robot with a lidar in ignition gazebo into the source space
  • Your repository will be next to nubot in the source space as well
  • I purposely did not put a README.md in this package, so you will need to explore it to find out how it works.
  • HINT: There is one launchfile that runs the simulation and visualizes it in rviz.
  • HINT: There are two worlds to use, either will be accepted for the assignment but one is significantly smaller (and hence easier to explore).

Navigation Stack Setup

  • Going through the First Time Setup Guide to understand how the navigation stack works (up through Setting up the robot's footprint) will be immensely helpful for this homework.
  • Much of the setup, however, is already done for you in nubot.
  • By running the launch file in the nubot package you will be able to see what features required by the nav_stack are already implemented.

A Launch File

  • Your package will be called nubot_nav
  • In nubot_nav, write a launch file called manual_explore.launch.xml (or you can use a python launch file).
    • Starts the nubot simulation.
    • Starts slam_toolbox in async mode.
    • Starts the nav2 stack (to create cost-maps and also enable navigation).
      • Make sure to set a parameter to increase the footprint of the robot so that it encompasses the whole robot
      • You may use a circular approximation of the robot
    • Starts rviz and displays
      • The robot relative to the /map frame
      • The global costmap
      • The local costmap (with the costmap color scheme)
      • The planned path
  • Record a video of the robot mapping the environment until at least 1 corridor is mapped.

Autonomous Exploration

  • Write a node called explore that causes the robot to explore the environment autonomously while mapping the world.
  • The launchfile called explore.launch.py (or .xml) should start all the nodes necessary to allow the robot to explore and map its environment
    • This launchfile should call manual_explore.launch.xml and then start the explore node.
  • Use the map_saver_cli in the nav2_map_server package to save the resulting map and place it within the maps directory of the git repository
  • Record a video of the robot exploring the environment in rviz

Exploration Algorithm

You can use any algorithm you want, but it should be described or cited in your README.md.

  • The exploration does not need to be complete, perfect, or optimal, but it should be generic (so no hardcoding locations that work for this particular room).
  • The algorithm will ideally enable the robot to explore at least two "rooms" in the environment

    • You can subscribe to the /map topic output by slam_toolbox to get information about the map

README

  • The README.md should contain your name, and a description or citation to the exploration algorithm used.
  • It should also have the ros2 launch commands needed to run the manual and autonomous exploration
  • It should embed both of the required videos directly in the README so that they can viewed on github

Author: Matthew Elwin