rover_navigation package from roverrobotics_ros2 reporover_bringup rover_description rover_driver rover_msgs rover_navigation rover_simulation rover_teleop roverrobotics_ros2
|Tags||No category tags.|
|CI status||No Continuous Integration|
|Package Tags||No category tags.|
Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)
- Nick Padilla
- Rover Robotics
Rover Robotics Nav2 (Under Development)
How to get the code
Ideally, all dependencies would be released and available in the ROS Package Index, but that's not currently the case. Instead, some packages need to be built from source. The index to the source code is available in the file
How to build the rover_navigation
You must repeat this on both the robot and the workstation:
|command||what it does|
||Activates the underlay
||Ensures the directory
||Change directories to the workspace. All
||Download the file
||Import (i.e. clone) all the repos specified in
||Search the packages in the source code subfolder for
||Build all packages from your workspace into the
Once you have built the workspace, if you want to use any of its packages from the shell with
ros2, you must first activate the workspace with
How to map the space
Except for launching
drive.launch.py, all below commands are to be run on your workstation. Also don't forget to activate the workspace first!
|command||what it does|
||Kicks off ROS2 nodes to interface with the rover, the LIDAR, and the IMU.|
||Opens RViz, a GUI program for visualizing all kinds of data coming out of ROS. Most useful will be the robot's location, the raw LIDAR data being fed into the SLAM algorithm, and the map as it is generated. At this point, you will not see a map, but you may see red dots, each of which represents a bit of raw LIDAR data.|
||Kicks off the Cartographer ROS SLAM node. This will take in all the LIDAR scan data and stitch it together into a map. It will also publish the relation between that map and the robot's local position. At this point, you should start seeing a fragment of the map in RViz. Note that killing this node will cause you to lose the map, so don't forget to save the map as below!|
||Your robot probably can't see the whole room from where it is, so this launches an interactive process to command the rover with the keyboard as it explores the room.
Spacebar stops the robot, up/down arrows change the forward speed, left/right arrows change the angular speed. Go slow and take your time: Turning too fast can cause smearing artifacts on the map. Driving forward too fast can bruise your coworkers' shins and break things.
Also be aware that some obstacles may not be visible to the robot - transparent, reflective, or dark objects may not reflect the laser well enough, and anything below the LIDAR's plane of sight will also not show up on the map.
||When you have adequately explored the space and your map looks good, this commits the map to disk as a
The generated map serve two purposes: It can be used to determine where the robot is in the mapped space, and can be used as an obstacle map for the robot to plan paths.
Planning and navigation
All the below instructions expect that you've built rover_navigation (on both the robot and your workspace) and activated the workspace and its underlays in your terminal with:
- On your robot:
ros2 launch rover_navigation drive.launch.py
- On your workstation in one window:
ros2 launch rover_navigation nav2.launch.py
- On your workstation in a second window, open RViz with:
ros2 launch rover_navigation rviz.launch.py
- In RViz, use the 2D Pose Estimate tool to specify a seed pose for AMCL.
- In RViz, use the 2D Nav Goal tool to specify a destination pose for AMCL
Changelog for package rover_navigation
- first public release for Foxy