The goal of this exercise is to control a simple differential wheel robot by solving its inverse kinematic equations and implement a simple path following service. Being able to follow a path specified in world coordinates is a pre-cursor to the path planning exercise that follows and relevant for both mobile robots and manipulators. This exercise will use a simulated version of the Turtlebot.

Deliverable: A plot showing a set of waypoints and the trajectory your controller implemented.

Duration: 2.5 weeks

1. Run

roslaunch turtlebot_gazebo turtlebot_empty_world.launch

On your own computer, follow the instructions on to install the turtlebot simulator.

2. Use “rostopic list” to find out what messages the turtlebot publishes and subscribes to. Use “rostopic echo” to inspect them. ROS image_view ( allows you to inspect images, e.g., what the turtlebot’s camera sees.

3. Find out which message lets you send velocity commands to the robot. Use “rostopic info” to learn which type this message is. You can then use “rosmsg show” to see how this message type looks like. Revisit if you have problems with these commands.

4. Use “rostopic pub” to publish velocity Twists. Read up on “rostopic pub” here to find out what the right syntax for non-trivial message types is. Select some values that let the robot move in a circle.

5. While the robot moves, echo the /odom message. Compare what you see there with the tf messages. You can do this, e.g., using

rosrun tf tf_echo odom base_footprint

6. Write a ROS service that subscribes to the odom message (or the tf tree) and expects a goal, e.g., x, y, theta, as parameters, and publishes velocity twists to drive the robot there. You will need the inverse kinematics of the robot to do this.

7. Generate a “path” consisting of three or more waypoints. Plot the trajectory your controller generate as well as the path. This plot is the deliverable for this exercise.


Leave a Reply

Set your Twitter account name in your settings to use the TwitterBar Section.