Electronics
Stereoscopic Vision System for the Robot
by paloskar on Jan.18, 2011, under Electronics, Head, Vision
Since the new processing unit for my robot, the Roboard RB-100, has USB ports, I can start using standard PC devices to fulfill different robot functions. This is so much easier than writing the device driver code myself. In this light I got hold of a very interesting off-the-shelf PC stereoscopic camera system: the Minoru 3D. I must thank the company, Promotion and Display Technologies, for taking this brave step and marketing such a device. This is how it comes when you buy it:

Minoru 3D consists of two web cameras in one sleek housing. For my purposes, I needed only the electronics, that would allow me to connect two webcams to a single USB port. This is why I stripped down the housing and came up with this:
Finally, here is how it looks like when the camera system is installed on the robot’s head on a pair of pan and tilt servo motors:
I found the Minoru 3D to be a great robotics component. It works very well under Windows and delivers good image quality. Very conveniently, it also contains a very well amplified microphone, which can be very useful in speech recognition applications. As a hint for anyone who might want to use this device in a similar fashion: when trying to take the plastic housing apart, there is no need for breaking it. The whole thing is held together with a concealed screw on the back of the neck of the Minoru housing. In future posts I will talk more about how I used this newly acquired vision system to add to my robot’s sensing capabilities.
Single Board Computer Intellect
by paloskar on Jan.18, 2011, under Electronics
The TI micro-controller I used for managing the robot’s walk proved to fall short in processing power. This is why I started looking for a replacement that would allow plenty of MIPS for controlling the servos and for other, higher level cognitive tasks. This is why I decided to get a small single board computer (SBC). Generic SBCs did not seem to have dedicated outputs for controlling servos. Because of this, I decided to go with a SBC designed specifically for robots: the Roboard RB-100. It runs on 1GHz and has 256Mb of RAM. It has plenty of PWM servo outputs, COM ports, I2C, USB, SPI, RS-485, A/D inputs, LAN, etc. I mounted the SBC on the back of the robot.

The Roboard has an mini PCI slot that can be fitted with a graphics card, wireless card or any other standard mini PCI device. As mass storage, a Micro SD card can be used. The device is fully PC compatible. I installed a regular version of Windows XP on it. I develop programs in Microsoft Visual Studio IDE on a remote PC and transfer the compiled output files to the device through LAN using Windows Remote Desktop. I write applications in C and use GTK for defining the user interface. The Roboard proved to be a very good choice. It worked exactly as advertised without any issues. I would recommend it to anyone looking for a robot development platform that will provide enough processing power for almost any imaginable task. I will write more about the higher level processing capabilities that I implemented in future posts.
How to Power a Small Biped
by paloskar on Aug.08, 2009, under Electronics, Power
In recent days I have had some issues with Diego’s power system. Ever since I installed four HS645 high-torque servos, the whole robot started shaking and jittering when I flipped the switch. It was obvious that there are problems with power. I searched online for solutions. I have found some very useful message threads on Lynxmotion’s Forums.
In the initial desing I wanted to control all power using 3.3V and 5V stabilizers, LM7805. The TI microcontroller needed 3.3V while the inverter (7404) worked on 5V. The servos give higher torque on higher voltage. Their nominal upper limit is 6V. This means that I was losing precious torque running the the servos at 5V. Reading up on other’s experience, I realized that there is no need for stabilizers when powering the motors. They can be directly connected to the batteries, provided that they are of appropriate voltage. I use rechargeable Energizer 1.2V AA NiMH batteries at 2450mAh. When I connect 5 of them in series, they provide a nominal voltage of 6V, but when fully charged, they can go up as high as 7V. I connected this power source directly to the servos, without any stabilizers. It seems that the motors can handle well even 7 volts. Now Diego stands still without shaking. Also the torque is noticably higher, and finally the robot can stand on one foot.
Controlling the Servo Motors
by paloskar on Aug.08, 2009, under Electronics, Servos
One of the reasons why servo motors are very popular is the ease of control. The motors are so called positional servos, which means that their angular position can be set with high accuracy.

What does ’servo’ mean at all? It means that the motors have a feedback loop that allows them to correct their performance error compared to a desired performance. In the case of positional servos, it means that when the user sets a desired angular position for the motor, it measures the difference between the actual and desired position and drives the motor until the error is minimized. The feedback of the actual motor position is provided by a potentiometer. The desired position is set using the motor’s control signal. The control method is called PWM (pulse width modulation). This means that the angular position of the motor is determined by the width of the step pulse in the signal.

The impulse train needs to have a constant frequency of 50Hz, i.e. a period of 20ms. What changes is the width of each of the pulses. For the particular servos that I use (Hitec HS422, HS475), the width should be between 600us and 2400us (microseconds). This value span corresponds to moving the motor from its minimum of 0 degrees to its maximum of 180 degrees, as the image below shows.

It should be fairly easy to use most microcontrollers to generate such signals. Some of them already have built-in PWM generating capabilities. Most of the servos have three access wires. Besides the control line (yellow wire), that expects the above described signal, there are two others. You can probably guess: Vcc (red) and Ground (black).
The Nervous System of Diego (Electronic Design)
by paloskar on Aug.08, 2009, under Electronics, Torso
As mentioned before, the electronics board is attached to Diego’s back. Since the servos themselves contain the driving electronics (whew), the circuit board is fairly simple.

The LM7805s are 5V voltage stabilizers. I needed to install a number of them, because each can handle only 1A of current, while each of the servos can draw a lot of current when in stall. I divided the servos between the available 5 regulators. I need to add heat sinks, because they tend to overheat during operation. The LM1084 is a 3.3V voltage regulator which feeds the microcontroller board. The 74HC04 are simple inverters added to decouple the controller from the servos and drive the controlling signals. Prior to this project, I already had a lot of experience with using Texas Instrument’s eZ430-RF2500 microcontroller boards for various purposes. This is why I decided to use this for controlling the robot.

These small wireless boards are powerful and easy to program. Still, they are limited in the number of accessible ports they have. Also the maximum clock rate could prove to be an issue in the future, if I add more servos (arms, head). The wireless capabilities are awesome. Two of these boards can connect to each other wirelessly and exchange information. I plan to use this ability to control the robot remotely. The controlling program is fairly simple so far. It generates and sends PWM signals to the motors at appropriate times.
Starting to Bulid Diego
by paloskar on Aug.08, 2009, under Electronics, Mechanical
Hello,
This blog is documenting the progress of my first humanoid walking biped robot project. The robot is named Diego Alejandro Luis David, or for short: Diego.
When I decided to build a robot, I looked into what kits there were already on the market for building robots. First I was pondering if I should buy a Lego MindStorms NXT robotics kit.

It proved to be less customizable than what I was looking for. Therefore I continued on the search for something that I could design my own electronics for and add custom sensors to it, since I really like working with microcontrollers and embedded computing. Also I wanted to find what kind of solutions there were for building kinematic joints using motors. I stumbled on a few all-included biped robot kits like Robonova-1 by Hitec, Kondo KHR-1HV and Robovie-X.

These robots and kits seemed to be a bit expensive at the time. Also they seemed as not too much fun, since everything is designed for you, in the best case it just has to be assembled. I was looking for some building blocks to build joints using positional servo motors, using which I could conceptualize my own biped. Then I luckily found Lynxmotion. I fell in love with their Servo Erector Set bracket/joint designs. These can be integrated with low cost servos to build robot joints. Because the initial cost of building two legs and a torso seemed not too high and because of high customizability I ordered some of their brackets together with Hitec HS422 servos. I will talk about this in my next post.