The previous section covered fundamental concepts in ROS, provided a brief overview of subsystems common to many robots, and finished with Wander-bot, a program that drove a Turtlebot around aimlessly. In this section of the book, we will show how to build a series of robots that become more and more sophisticated in their motions, culminating with a state-of-the-art 2D navigation system. We will then conclude this section by showing how to move manipulator arms using common ROS packages.
This chapter will describe how to drive a robot around via teleoperation. Although the term “robot” often brings up images of fully autonomous robots that are able to make their own decisions in all situations, there are many domains in which close human guidance is standard practice due to a variety of factors. Since teleoperated systems are, generally speaking, simpler than autonomous systems, they make a natural starting point. In this chapter, we will construct progressively more complex teleoperation systems.
As discussed in the previous chapter, we drive a Turtlebot by publishing a stream of
Twist messages. Although the
Twist message has the ability to describe full 3D motion, when operating differential-drive planar robots, we only need to populate two members: the linear (forward/backward) velocity, and the angular velocity about the vertical axis, which can also be called yaw rate and is simply the measure of how quickly the robot is spinning. From those two fields, ...