10 min read

(For more resources related to this topic, see here.)

The following is an image of a finished project:

Even though you’ve made your robot mobile by adding wheels or tracks, this mobile platform will only work well on smooth, flat surfaces. Often, you’ll want your robot to work in environments where the path is not smooth or flat; perhaps you’ll even want your robot to go up stairs or around curbs. In this article, you’ll learn how to attach your board, both mechanically and electrically, to a platform with legs so that your projects can be mobile in many more environments. Robots that can walk! What could be more amazing than that?

In this article, we will cover the following topics:

  • Connecting Raspberry Pi to a two-legged mobile platform using a servo motor controller
  • Creating a program in Linux so that you can control the movement of the two-legged mobile platform
  • Making your robot truly mobile by adding voice control

Gathering the hardware

In this article, you’ll need to add a legged platform to make your project mobile.

For a legged robot, there are a lot of choices for hardware. Some are completely assembled, others require some assembly, and you may even choose to buy the components and construct your own custom mobile platform. Also I’m going to assume that you don’t want to do any soldering or mechanical machining yourself, so let’s look at several choices of hardware that are available completely assembled or can be assembled using simple tools (a screwdriver and/or pliers).

One of the simplest legged mobile platforms is one that has two legs and four servo motors. The following is an image of this type of platform:

We’ll use this legged mobile platform in this article because it is the simplest to program and the least expensive, requiring only four servos. To construct this platform, you must purchase the parts and then assemble them yourself. Find the instructions and parts list at http://www.lynxmotion.com/images/html/build112.htm. Another easy way to get all the mechanical parts (except servos) is by purchasing a biped robot kit with six DOF (degrees of freedom). This will contain the parts needed to construct your four-servo biped. These six DOF bipeds can be purchased on eBay or at http://www.robotshop.com/2-wheeled-development-platforms-1.html.

You’ll also need to purchase the servo motors. Servo motors are designed to move at specific angles based on the control signals that you send. For this type of robot, you can use standard-sized servos. I like the Hitec HS-311 or HS-322 for this robot. They are inexpensive but powerful enough in operations. You can get them on Amazon or eBay. The following is an image of an HS-311 servo:

You’ll need a mobile power supply for Raspberry Pi. I personally like the 5V cell phone rechargeable batteries that are available at almost any place that supplies cell phones. Choose one that comes with two USB connectors; you can use the second port to power your servo controller. The mobile power supply shown in the following image mounts well on the biped hardware platform:

You’ll also need a USB cable to connect your battery to Raspberry Pi. You should already have one of those.

Now that you have the mechanical parts for your legged mobile platform, you’ll need some hardware that will turn the control signals from your Raspberry Pi into voltage levels that can control the servo motors. Servo motors are controlled using a signal called PWM. For a good overview of this type of control, see http://pcbheaven.com/wikipages/How_RC_Servos_Works/ or https://www.ghielectronics.com/docs/18/pwm. You can find tutorials that show you how to control servos directly using Raspberry Pi’s GPIO (General Purpose Input/Output) pins, for example, those at http://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi/ and http://www.youtube.com/watch?v=ddlDgUymbxc. For ease of use, I’ve chosen to purchase a servo controller that can talk over a USB and control the servo motor. These controllers protect my board and make controlling many servos easy. My personal favorite for this application is a simple servo motor controller utilizing a USB from Pololu that can control six servo motors—the Micro Maestro 6-Channel USB Servo Controller (Assembled). The following is an image of the unit:

Make sure you order the assembled version. This piece of hardware will turn USB commands into voltage levels that control your servo motors. Pololu makes a number of different versions of this controller, each able to control a certain number of servos. Once you’ve chosen your legged platform, simply count the number of servos you need to control and choose a controller that can control that many servos. In this article, we will use a two-legged, four-servo robot, so I will illustrate the robot using the six-servo version. Since you are going to connect this controller to Raspberry Pi via USB, you’ll also need a USB A to mini-B cable.

You’ll also need a power cable running from the battery to your servo controller. You’ll want to purchase a USB to FTDI cable adapter that has female connectors, for example, the PL2303HX USB to TTL to UART RS232 COM cable available on amazon.com. The TTL to UART RS232 cable isn’t particularly important, other than that the cable itself provides individual connectors to each of the four wires in a  USB cable. The following is an image of the cable:

Now that you have all the hardware, let’s walk through a quick tutorial of how a two-legged system with servos works and then some step-by-step instructions to make your project walk.

Connecting Raspberry Pi to the mobile platform using a servo controller

Now that you have a legged platform and a servo motor controller, you are ready to make your project walk! Before you begin, you’ll need some background on servo motors. Servo motors are somewhat similar to DC motors. However, there is an important difference: while DC motors are generally designed to move in a continuous way, rotating 360 degrees at a given speed, servo motors are generally designed to move at angles within a limited set. In other words, in the DC motor world, you generally want your motors to spin at a continuous rotation speed that you control. In the servo world, you want to control the movement of your motor to a specific position. For more information on how servos work, visit http://www.seattlerobotics.org/guide/servos.html or http://www.societyofrobots.com/actuators_servos.shtml.

Connecting the hardware

To make your project walk, you first need to connect the servo motor controller to the servos. There are two connections you need to make: the first is to the servo motors and the second is to the battery holder. In this section, you’ll connect your servo controller to your PC or Linux machine to check to see whether or not everything is working. The steps for that are as follows:

  1. Connect the servos to the controller. The following is an image of your two-legged robot and the four different servo connections:

  2. In order to be consistent, let’s connect your four servos to the connections marked 0 through 3 on the controller using the following configurations:
    • 0: Left foot
    • 1: Left hip
    • 2: Right foot
    • 3: Right hip

    The following is an image of the back of the controller; it will show you where to connect your servos:

  3. Connect these servos to the servo motor controller as follows:
    • The left foot to the 0 to the top connector, the black cable to the outside (-)
    • The left hip to the 1 connector, the black cable out
    • The right foot to the 2 connector, the black cable out
    • The right hip to the 3 connector, the black cable out

    See the following image indicating how to connect servos to the controller:

  4. Now you need to connect the servo motor controller to your battery. You’ll use the USB to FTDI UART cable; plug the red and black cables into the power connector on the servo controller, as shown in the following image:

Configuring the software

Now you can connect the motor controller to your PC or Linux machine to see whether or not you can talk to it. Once the hardware is connected, you can use some of the software provided by Polulu to control the servos. It is easiest to do this using your personal computer or Linux machine. The steps to do so are as follows:

  1. Download the Polulu software from http://www.pololu.com/docs/0J40/3.a and install it based on the instructions on the website. Once it is installed, run the software; you should see the window shown in the following screenshot:

  2. You will first need to change the Serial mode configuration in Serial Settings, so select the Serial Settings tab; you should see the window shown in the following screenshot:

  3. Make sure that USB Chained is selected; this will allow you to connect to and control the motor controller over the USB. Now go back to the main screen by selecting the Status tab; now you can turn on the four servos. The screen should look as shown in the following screenshot:

  4. Now you can use the sliders to control the servos. Enable the four servos and make sure that the servo 0 moves the left foot, 1 the left hip, 2 the right foot, and 3 the right hip.
  5. You’ve checked the motor controllers and the servos and you’ll now connect the motor controller to Raspberry Pi to control the servos from there. Remove the USB cable from the PC and connect it to Raspberry Pi. The entire system will look as shown in the following image:

Let’s now talk to the motor controller by downloading the Linux code from Pololu at http://www.pololu.com/docs/0J40/3.b. Perhaps the best way to do this is by logging on to Raspberry Pi using vncserver and opening a VNC Viewer window on your PC. To do this, log in to your Raspberry Pi using PuTTY and then type vncserver at the prompt to make sure vncserver is running. Then, perform the following steps:

  1. On your PC, open the VNC Viewer application, enter your IP address, and then click on Connect. Then, enter the password that you created for the vncserver; you should see the Raspberry Pi viewer screen, which should look as shown in the following screenshot:

  2. Open a Firefox browser window and go to http://www.pololu.com/docs/0J40/3.b. Click on the Maestro Servo Controller Linux Software link. You will need to download the file maestro_linux_100507.tar.gz to the Download directory. You can also use wget to get this software by typing wget http://www.pololu.com/file/download/maestro-linux-100507.tar.gz?file_id=0J315 in a terminal window.
  3. Go to your Download directory, move it to your home directory by typing mv maestro_linux_100507.tar.gz .. and then you can go back to your home directory.
  4. Unpack the file by typing tar –xzfv maestro_linux_011507.tar.gz. This will create a directory called maestro_linux. Go to that directory by typing cd maestro_linux and then type ls. You should see the output as shown in the following screenshot:

The document README.txt will give you explicit instructions on how to install the software. Unfortunately, you can’t run MaestroControlCenter on your Raspberry Pi. Our version of windowing doesn’t support the graphics, but you can control your servos using the UscCmd command-line application. First, type ./UscCmd –list and you should see the following screenshot:

The unit sees your servo controller. If you just type ./UscCmd, you can see all the commands you could send to your controller. When you run this command, you can see the result as shown in the following screenshot:

Notice that you can send a servo a specific target angle, although if the target angle is not within range, it makes it a bit difficult to know where you are sending your servo. Try typing ./UscCmd –servo 0, 10. The servo will most likely move to its full angle position. Type ./UscCmd – servo 0, 0 and it will stop the servo from trying to move. If you haven’t run the Maestro Controller tool and set the Serial Settings setting to USB Chained, your motor controller may not respond.

LEAVE A REPLY

Please enter your comment!
Please enter your name here