CS 354 Autonomous Robotics
Fall 2020
Turtlebot3 Navigation
Learning Objectives
The purpose of this lab is to gain experience working with the ROS2 Navigation System and ROS2 OccupancyGrid messages.
Resources
Dependencies
- The
random_navpackage you will be using for this lab depends on the following source packages. If you haven't yet, you'll need to clone this packages into~/dev_ws/srcand build them. If you already have them make sure togit pullto ensure that you have the latest versions:
Part 1 - Experimenting with Navigation
Clone and build the
random_navrepository. I suggest you use the--symlink-installoption so that you won't need to re-build every time you edit a Python file.Launch the package as follows:
This should bring up both Gazebo and Rviz pre-configured to show navigation-related topics.ros2 launch random_nav sim_nav.launch.py- Provide an initial localization using the
2d Pose Estimatebutton in Rviz. - Experiment with selecting navigation goals using the
2d Nav Goalbutton. In a separate terminal, experiment with sending navigation goals using the
nav_demonode:ros2 run random_nav nav_demo 2 2 0Take some time to read through the code in
nav_demo.pyto make sure you understand what's going on.
Part2 - Random Navigation
Modify random_nav.py so that it randomly wanders around the
environment by repeatedly selecting random navigation targets. The
pseudocode for the desired behavior should be as follows:
repeat forever:
# randomly select a free location in the map
while goal location not selected:
select a random location in the map
check the map to see if that location is free
Ask the navigation system to navigate to the selected goal location
Wait until the the goal is reached or aborted
Once you are satisfied with the behavior of your random_nav node
push your final version to Github.