So, for the past month or so, I've been putting together a new chassis for Brainbot so I can do some advanced outdoor navigation research. The guys at the lab want me to produce an awesome navigation demo this summer using my ideas from MicroRaptor, so I'm pretty excited about having the chance to really implement some of my ideas on how navigation should be done.
Here's what the chassis looks like right now:
The chassis is an off-the-shelf 1/5 scale R/C rock crawler chassis. I've added the brains from Brainbot (the Core 2 Quad mini-itx), plus the laser scanner and the camera.
I'm currently registered to compete in the RoboMagellan competition being held in Chicago by Chibots this summer - should be an interesting contest...
One I get some reasonable autonomous behavior running, I'll post some video here.
So, I've done some optimization of the gait, and Roz now walks a whole lot smoother than before. I'm working on a new sensor head, which contains three Sharp GP2D12 IR range finder sensors, and a Maxbotix sonar. You can see it mounted in the image to the right - I've only got one GP2D12 mounted, but I'll be adding two more, one to each side.
Here's a short video showing the improved gait:
I'm planning on swapping out the Arbotix board for a gumstix Overo Earth, which I happen to have sitting on my desk thanks to my brother Dave. That board will run Squeak, and I've already got the IK and gait code from my friend Mike Ferguson ported into Squeak.
Once that is done, I'm going to consider adding a simple webcam, so I can start doing some very basic visual processing.
I've also got a new leg design prototyped, with a compliant spring. Once I add a sensor to this leg, I will be able to start looking at handling terrain compliance, which will allow Roz to handle uneven terrain (like what you find outdoors).
So, we had a good time at CNRG last weekend. Roz, my new quad walker, came in second place in the walking competition. First place went to Mike Ferguson's Issy. You can see both of them, plus the third place finisher, in this video:
Roz was the first walker in that video, followed by Jeff, and then Issy. There's still lots of optimization to do with Roz...
I've also printed a new test leg that will have compliance - should be interesting to see how that affects things, and of course I'll have to figure out how to use this new-found capability once all the legs are done that way. To the right you can see the two parts, fresh out of the printer, with the support material still attached. As I type this, they are in the support bath removal tank.
On the mini-sumo front, Seeker 2x squeaked out with second place. First place honours went to Seeker 2, which was run by my son Nick. He won an Arduino experimenter's kit as his prize, which is pretty awesome. We also came away with a couple ArbotiX control boards, one of which is controlling Roz, and the other will be Nick's to allow him to play with Bioloids.
So, after a lot of thinking, and some time spent watching some Bioloid quads in action, I decided that even though MicroRaptor didn't work properly (AX-12 servos are good, but not powerful enough for a biped robot that heavy), I still wanted a limbed robot to continue my AI research with.
Enter Roz, my take on a Bioloid Quadropod.
It has 14 servos in total, 3 in each leg, and two for a pan/tilt head. Right now I just have a place-holder head attached, with a couple AX-S1's and a serial Jpeg camera. Eventually I will build a much more purposed head.
This body is designed to take an ArbotiX microcontroller board directly. I'll be getting one of those this weekend from the guy who makes them (hi Mike!), who is coming up to the CNRG.
Eventually, I'm going to replace that with a similar board, based on an ARM7 with a wifi interface.
Here's a video of Mike's quad, Issy, set up as a fire-fighter:
He's using a nice little IK (inverse kinematics) engine running on his ArbotiX. We're going to try and get that running on Roz this weekend - we'll see how that goes...
So, as many of you are aware (at least, if you've read this blog since the beginning), I have a new mini-sumo (Seeker 2x) that I started working on almost two years ago, but have yet to finish. The 2009 robot games (Canadian National Robot Games) is coming up in about three weeks, and I decided that I'm definitely going to compete with it.
There are only a few things left to do:
print a lid and the front lid mount (the front ProxDot sensor will be attached to this also), and attach it to the front bar
mold the tires
machine and mount the front scoop
finish the software
I've got the first tire in the mold now - hopefully it will come out nicely. The picture here shows the mold, with the tire (2-part polyurethane) freshly poured. I'll take it apart tomorrow, and see how it turned out.
So, things are back to normal here, and I can post about NanoSeeker again. To the right is what it looks like right now, with the shell opened. At the very front (right side of the picture), is the compass - its a Honeywell HMC6343, a 3-axis, solid state compass, with an integrated 3-axis accelerometer (tilt compensation), and a nice I2C interface.
Immediately behind that is the thruster h-bridge - a Sanyo LB1836. Nice little chip - two channel one amp per channel surface mount h-bridge, that can handle low voltage signals and motors.
Beside the h-bridge is the thruster motor connector, and behind it is the processor, an ATmega328. I was originally using an ATmega168, but I ran out of RAM with my extensive debug menu, so I swapped in the 328, which is pin and source code compatible.
Under the AVR, on the top-side of the bottom board, is a Roving Networks Bluetooth module. This module is great - just plug it in, and I have an instant wireless serial port. No muss, no fuss.
Behind the processor is the 6-pin programming header, an oscillator for the SPI depth sensor, and the second h-bridge, which controls the dive plane and rudder linear actuators. Moving back again we see the plug for those two motors, and then the motors themselves. The motors are Solarbotics GM15 pager gearmotors. Glued onto the end of the motor shaft is a brass lead screw for the linear actuator, threaded to #2-56. The lead nuts are printed on my Dimension uPrint, and they slide the actuator arm, a piece of 1/32" brass rod. Those rods slide inside a brass tube, and are "sealed" with grease. The seal is good enough for a couple feet of depth, with is all I need at this stage, to test things.
Each actuator lead nut has embedded in it a 1/16" diameter, 1/4" long rare earth magnet. Under each lead nut, on the PCB, is an analog hall effect sensor, which can measure with nice accuracy the absolute position of the actuator.
Finally, the thruster motor is tucked in at the back. It is also a GM-15, and drives the custom-printed 7-blade propeller. The propeller shaft is sealed with a small o-ring.
The rudder and dive plane are at the very back, and are pivoted with the actuator arms.
At the bottom, underneath the bottom board, are a pair of 200 mAh Lithium Polymer batteries. They are connected in series, to provide 7.4 volts nominal voltage. The electronics are all running at 3.3 volts.
Here's a video showing the dive plane actuator working. Be sure to choose "HQ" for greater detail:
Here's a second video, showing the whole thing put together, testing both actuators and the thruster:
And here's the first wet/pool test:
The black bands around the sub are electrical tape, which I find is handy for doing temporary buoyancy adjustments without having to open the sub up to add weights.
So, I got my Dimension uPrint last week, and got it set up and running. I'm still waiting to get the dissolve tank, but it is supposed to arrive tomorrow.
Here's the first thing I printed on it - all the parts required to build one NanoSeeker prototype. The main shell is in 3 pieces - the nose cone, the main shell, and the tail cone. I'm really curious to see how this new propeller design works - one of the great things about having a 3D printer is the ability to try new designs in very little time, for very little cost.
Right now (as I type this), I'm printing the first set of parts for one of the new BrainBots I'm building. There are five sets of parts for each robot (because the build envelope is limited), and each robot will take a total of about 35 hours to print.
Well, its been a pretty crazy summer. July was insane, getting the three production BrainBots done and delivered to Dartmouth. To the right is what they looked like a couple weeks before delivery.
To the left is what one of them looked like once it was done, on the day I delivered them. The second camera (the left one from the robot's perspective) is a fake, mainly put there to balance the look. The lens is real, but the camera box is plastic.
So, next up - I'm building three more of them, for another Dartmouth researcher. This set is going to be especially exciting, because the "profits" from the robots are going to buy me (well, HUV) a Dimension uPrint 3D printer. I'm especially excited about that because (a) its a cool new tool to play with, and (b) it will allow me to start working on NanoSeeker again. Not to mention the time savings on not having to wait for printed parts to be shipped up here from Dartmouth.
Things are more or less together, voodoo is working (in a fairly basic way), and the mechanicals are more or less sorted out. I've started building three "production" robots for one of the researchers at Dartmouth College.
The production bots will have the printed parts done in white, instead of this pukey-semi-transparent yellow.
So, I'm posting this blog message using BrainBot. Currently, BrainBot has a Mini-ITX onboard, with a 2.83 GHz Core 2 Quad processor, and a 32 GB Solid State Hard Drive (SATA).
I'm really impressed by how all this has come together...
In the picture to the right, the mini-itx is mounted to the bottom plate, along with the solid state hard drive. The top part of the chassis is sitting upright, as if the bottom plate had been hinged down. I've been pretty careful with wire management on this robot, to try and make everything as robust as possible.
I've got my 23" LCD monitor plugged in (DVI), and a USB keyboard and wireless mouse, along with an 802.11n wifi dongle to get network/internet access.
In order to fit the RX-64 shoulders into BrainBot, we needed to design a new chest. Given the cost of printing the chest in one piece like we were doing before, we decided to make this new chest modular, with six sides (like a cube), and have everything screw together.
The new chest looks neat - we have a different 3D printer now, and it prints semi-transparent material. The tolerances are actually better than what the ABS printers do, although the material is not nearly as nice to machine or to tap. All in all, I'm pretty happy with how it turned out.
We also printed a gripper with this new printer. The structural parts of the gripper (specifically, the shaft and offset crank arm) are machined from aluminum and Delrin respectively. We use the foot pressure sensor board to provide feedback from four sensors on the grip.
So, I've been working full time on BrainBot for six weeks now. Things have changed somewhat - the researcher who wants us to build a bunch of these wanted a Core 2 Duo class onboard cpu, so we had to redesign to allow for a mini-itx. As it happens, we can now put a Core 2 Quad onboard, since the board is the same size...
In order to handle that, we needed to add more batteries, so the chassis has gotten quite a bit wider - we can now fit four 12 volt 4.2 amp-hour NiMh battery packs inside the chassis, two on each side of the motherboard.
We upgraded the chassis panels to be 1/4" Delrin, and the standoffs between them are 49mm long, in aluminum.
The motors are 12 volt 200 RPM gearmotors, with 100-tick encoders, which feed into a pair of LSI LS7366R 32-bit SPI quadrature encoder counter chips.
Its pretty funny when your robot has more onboard processing power than your development laptop...
Well, a lot has changed over the last six months... For the past two years, I've been working at IBM on a large telecommunications monitoring system (PROVISO). A few weeks ago, IBM decided it needed to downsize significantly, and I was laid off, along with about half the people working on the project.
However, it turns out that this has been a blessing in disguise. The same day I found out about it, I was on the phone with my contact (hi Andrew!) in the Brain Engineering Lab at Dartmouth College, and within a couple weeks we had come to an agreement where I would work full time under contract (as I have, strictly spare time, for the past couple years) doing some major enhancements to BrainBot.
So, now I find myself in the position I've wanted for the past twelve years - working full time on robotics work. Its pretty amazing to be in the right place at the right time for something like this to fall into place.
A lot of the work I'm doing over the next six months will involve making BrainBot more robust, reliable, and usable, from both a hardware and software perspective. This includes:
switching from gumstix to pico-itx
replace all battery packs with a single 12 volt battery
replace motors with 12 volt versions
add encoders to the motors
add sonar and a laser pointer
replace cameras with USB webcams
replace shoulder AX-12 servos with RX-64 servos
redesign printed chest to be more modular
redo all PCB's to use better cables & connectors
This is all pretty exciting, and I'm going to start posting here a little more often now with status updates and such.
Right now, my plans for Mech Wars are on hold, since I'm too busy in my spare time working on my house and doing gardening and stuff like that.
So, my friend Andrew is organizing a new biped competition for next year's Robot Games in San Francisco, called Mech Wars. I'm helping him with a few things, and also building my own mech for this. Well, to be more specific, I'm converting MicroRaptor to be a mech.
On the right you can see MicroRaptor, with an airsoft cannon taped to his head. Of course, I'm going to be building a new mount for this, and may even end up machining a new cannon, using some of the parts from inside this one.
This competition will give me a chance to play around with a lot of autonomous behaviour (like balancing and walking), while still maintaining direct overall control of the robot. Eventually, although probably not for the first year, I want to make MicroRaptor be fully autonomous in this competition...
I haven't had much time lately to do any work on MicroRaptor, but I finally got it put together using my servos, from the Bioloid kit I bought. I've got the PCB mounted, with all the electronics hooked up (except the JPEG camera), and the 3-cell Lithium Polymer battery mounted underneath.
Right now its being supported by the tool chest, because the tail is too light compared to the head. I need to add some weight to the tail to balance it all out.
Next up, I need to get my development image running again, and get it running on the Hammer, so I can have it start walking again.
So, I finally ordered some more FT-232's, and I was able to reflow the PCB, and get the rest of the components mounted. To the right you can see the board, fully populated, with the Hammer actually running. I've got a BlueSMiRF connected to the console serial port, and I've got a console running on my PC over a bluetooth serial port. The board got a little roasted in the oven, but it doesn't affect the functionality at all.
So, over the past few days I've been designing a new PCB to use for MicroRaptor. It will use my Hammer single-board Linux computer to talk to the Bioloid bus over an FT232 USB chip. I really like working with the Hammer - its basically like designing with a 40-pin DIP microcontroller, except its a whole lot more powerful, and you only need to provide it with power and ground.
To the right is the current PCB design, done in Rimu PCB. It has the Hammer, the FT-232 plus support chips & components, one of my six-axis IMUs, two power switches, a Dimension Engineering 5 volt switching regulator, and a couple serial ports. One will be used with my serial Jpeg camera, and the other is connected to the console, and will interface with my BlueSMiRF bluetooth module.