Jon's Place

Friday, November 29, 2013

Roz - Ready To Go

Roz from the bottom
From a hardware perspective, Roz is now complete (for this revision, anyways). I soldered together a new auxiliary power board (since the old one didn't work), and made a new board I call the power distribution board, shown in the picture to the left. It has four terminal blocks, and a 5 volt 10 amp voltage regulator. Ten amps is a little overkill to power a Beaglebone black and a USB hub, but it was cheap, so I went for it.

Also visible in the picture is the 3-cell 11.1 volt Lithium Polymer battery (2000 mAh). Power goes from the battery, through the on/off main switch, and then up to the aux. power board. It then comes back down to the distribution board, where it is shunted (still at 12 volts) back up to the bioloid bus, and run through the 5 volt regulator for the BBB and the USB hub.

Next up, I need to write some python code, both on the desktop and on the BBB. The desktop code will be mainly utilities, that allow me to talk to the bioloid devices and set parameters and so on. On the BBB, it will be copying an implementation of NUKE (a nice inverse kinematics engine) and setting up a really simple finite state machine to make it walk around and not run into things.

Sunday, November 24, 2013

Roz & RobotsConf

So I've been getting Roz ready to go to RobotsConf, a cool conference in Florida in two weeks. Mozilla is one of the sponsors for the conference, so I managed to snag a free ticket.

Roz all wired up
In the picture to the left, Roz has the Beaglebone Black mounted on the back at the top. Under it, you can see (on the right side of the robot) a bioloid bus board on the left, and a bioloid power board on the right. The bus board allows a computer (like the BBB) to talk directly to the bioloid bus (and thus the AX-12 servos) over a high speed serial bus.

The power board does automatic switching between battery power and wall power. This allows you to hot-plug wall power so you don't kill the battery while you're debugging on the bench. This is particularly useful when you have a Linux single board computer, since you don't want to be constantly powering it up and down. Note that this board does not charge the battery - it simply chooses to provide power from a wall source if one is present, or from the battery if not. The battery is a 3-cell Lithium Polymer battery pack, with 2000 mAh of capacity.

This picture shows the other side, so you can see the 4-port USB hub on the left, and a new board I just made, which I call the bioloid mini-io. It is a bus device (like the servos), and it has 6 analog inputs (at 5 volts), and 8 digital I/O pins. I use this to feed the analog signals from the three Sharp IR sensors mounted on the head.

The head has the aforementioned analog Sharp IR range sensors, as well as a cheap two-camera web cam. This will hopefully allow me to do very simple stereo vision (at a very low frame rate) using some of the stuff in openCV.

At the back I plan to add a tail, which will help keep the robot balanced while walking. I also have a vertical pole mount, and I plan to mount my Razor 9-axis IMU up there. Since it is 3.3 volts and uses a TTL serial interface, I can hook it directly to one of the unused UARTs on the BBB. The 9-axis IMU will be used mainly as a compass, although I might eventually use it to help smooth the walking gait.

Underneath, in front of the battery, is another new board I made, which I call the power distribution board. It will take 12 volts from the power board mentioned above, and provides a 12 volt output to the bus board. It also has a 10 amp 5 volt regulator which will provide 5 volts for both the USB hub and the BBB. Ten amps is probably overkill, but the regulator is cheap, so it doesn't matter to me.

The main power switch is on the right side (first picture), at the bottom of the middle body segment, and it switches the battery directly, and controls power to the entire robot. The bus board also has its own power switch, so I can shut off power to the servos independently.