Skip to content

Navigate TurtleBot3

Darko Lukić edited this page Oct 19, 2020 · 19 revisions

In this tutorial, we want to show you how to navigate TurtleBot3 Burger in Webots simulation. You will see that Webots uses a standard ROS2 interface that can be used with the TurtleBot3 Navigation2 package without modifications.

Install turtlebot3_navigation2 Package for ROS2

Unfortunately, the turtlebot3_navigation2 package is not yet available as a Debian package so you have to build it manually:

source /opt/ros/${ROS_DISTRO}/local_setup.bash

# Retrieve the sources
cd /path/to/ros2_ws
git clone -b ${ROS_DISTRO}-devel https://github.com/ROBOTIS-GIT/turtlebot3.git

# Check dependencies
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO}

# Building packages
colcon build --packages-up-to turtlebot3_navigation2

Run Navigation2

Once the turtlebot3_navigation2 package is ready to launch a Webots simulation:

ros2 launch webots_ros2_core robot_launch.py \
    executable:=webots_differential_drive_node \
    node_parameters:=$(ros2 pkg prefix webots_ros2_examples --share)/resource/turtlebot3_burger.yaml \
    world:=$(ros2 pkg prefix webots_ros2_examples --share)/worlds/turtlebot3_burger_example.wbt

In the second terminal, launch Navigation2 as:

export TURTLEBOT3_MODEL='burger'
ros2 launch turtlebot3_navigation2 navigation2.launch.py \
    use_sim_time:=true \
    map:=$(ros2 pkg prefix webots_ros2_examples --share)/resource/turtlebot3_burger_example_map.yaml

The command will initialize the Navigation2 package and open RVIz2. Make sure you set the initial pose by clicking 2D Pose Estimate button in RViz2 or by executing the following command:

ros2 topic pub --once /initialpose geometry_msgs/msg/PoseWithCovarianceStamped '{
    "header": { "frame_id": "map" },
    "pose": {
        "pose": {
            "position": { "x": 0.0, "y": 0.0, "z": 0.0 },
            "orientation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 }
        }
    }
}'
Clone this wiki locally