Again, it’s been a while since I’ve posted. This may be the new regular, and will go without saying from now on. A few things have happened since my last post, or that I never got around to discussing before. First, the big news is that I’ve been accepted into SIGGRAPH 2010 this year, so ADB will be shown in LA this summer. This is great news. In terms of production, it gives me a deadline to aim for with Version 2. If it looks like v.2 won’t be completed in time then I’ll have to go with v.1 in hand.
Secondly, in the redesign I’ve decided to go with a Dynamixel Robotis Bioloid AX-12 Servo, or something similar. I mentioned these before but after testing them I’m fairly convinced. They offer so many excellent features some of which are:
- Precise Control Control position and speed with fine angular resolution (1024 divisions).
- Compliance Driving Control the degree of elastic force in position control.
- Feedback Feedback for angular position, speed and load size.
- Alarm System Not only does the Dynamixel warn of a deviation from the user defined ranges (e.g. internal temperatures, torques, voltages etc), but it also automatically deals with the problems as they occur.
- Communication Daisy chain connection with support for communication speeds of up to 1MBPS.
- High Efficiency Motor Dynamixel uses the RE – MAX Series Coreless DC Motors from Swiss Maxon Motor which boasts high output torque and excellent acceleration.
- Distributed Control The main processor requires very few resources to control multiple Dynamixel’s since the movement schedule requires only a single command packet.
- High Quality Enclosure The high quality plastic body ensures structural integrity under all operational conditions
These servos have so much packed into them that it’s hard to see why not to use them. All the sensing of torque and position that I was going to have to figure out myself is done for me with these modules. I suppose that takes away some of the fun, but I am so tired of messing about making bad designs only to realize that something doesn’t work the way I had been counting on. It’s preferable to save the time, leverage other’s work in order that I can complete it on time, and make it robust. In addition, the torque is comparable to others I’ve looked at, and all these features come at a very reasonable cost, just $50 each or so. Here’s an updated pic of the module with the AX-12.
Thirdly, I’ve abandoned the Makerbot for the moment. This is the first weekend since my last post that I have spent not working on the Makerbot, trying to get it to print successfully. It doesn’t seem worth it, especially considering I’m going to get access to very good quality equipment in April much thanks to one of the Professors at York. I’m glad I asked him a few weeks ago as it seemed to be the right timing. I will return to the makerbot in the future or sell it, not sure yet. I still have a few ideas of what to do to fix it. (for my memory) I will revert to printing directly off the pc, instead of the SD card. While the latter is recommended, I recently remembered that the only print that ever worked did not make use of card. Also, I have to buy a proper, shielded CAT 5e, or CAT6 cable as everyone recommends. I’ve made my own shielding for my cable but that didn’t help. I am most optimistic about the last technique which is to use an opto-isolator and a second power source for the extruder motor. It is this motor which appears to be the source of the problems. As soon as it goes on, terrible noise appears throughout the circuit.
In the meantime though, I have things to work on which more directly impact the project. Specifically, I spent this weekend working on the circuit; testing out various parts. Because these Bioloid motors are so loaded with stuff, the number of parts required for the control circuit is greatly reduced. Each will require the following:
- a microcontroller capable of fast serial communication (1Mbps prefered)
- touch sensors, likely capacitive
- lipo battery charger
- a gate for RS-485 communication
- various headers, jumpers and so forth
- a daughter circuit which is the slip ring (back to the lever pins, not commercial parts)
In addition to these parts, each circuit will have pads for the following (though only implemented on some):
- 3 axis accelerometer
- 3 axis gyro? (need to look into more)
- transceiver, zigbee or bluetooth (whichever is faster and works with standard serial)
Essentially, the circuits will share the same bus as the motors, and be used for additional sensing. There will be a master unit which does most of the processing, or ships off key data to a pc for enhanced processing. The bus is exceptionally fast at 1M baud, so I have to investigate micros capable of this without me having to write a serial function from scratch. There are some AVR chips which can do this, but I’m unsure about the standard Arduino chips, though Sanguino can. Anyhoo, more investigation needed there. But this looks promising.
Today I tested whether the field emitted by capacitive sensor would falsely trigger each other. I need to know this because as the snake contorts sensors will likely end up very close to each other with thin plastic barriers actually touching. I found that they did trigger each other, at least the sensors that were already more sensitive were even more sensitive to other sensors than they were to my fingers. At any rate, it looks like the solution for this is to circulate through all the sensors in succession, by toggling the power pin as though it were an enable pin. This is ok’d in the datasheet at sec. 3.5, except I just peeked at the startup time and it looks like it’s 250 ms!!! That means it would take several seconds to cycle through all the sensors, even if I do batches at the same time. That’s no kind of response time. Yeeesh, I’ll have to think about that some more. It might also be possible to set up two sensors per side, one very sensitive, the other not. If they respond to other sensors more readily than to skin, then if one per side is triggered we have skin contact, two per side means sensor contact. Sounds barely feasible, which likely means it will be flakey. What’s robust in this area?? One thing to try is to reduce sensitivity of the sensors so they don’t emit such a broad field but still pick up skin, and then see how they respond to each other.
This weekend I also tested RS-485 communication with the motor using a gate of some sort. Took all day, but worked in the end, and I was pleased to see the motor come to life.
Finally, here’s a picture of the latching system I developed for connecting the modules together. I want something which allows the modules to be snapped together and then quickly released from each other. Past designs required disassembling the shell of a module in order to release its grip on a neighbor. Now the modules can be released by using a small lever like a screwdriver and rotating the part out. Similarly to attach them you screw one into another. It was inspired by pill bottles.
In summary, this is a time of testing, and working through concepts. I guess that’s why I can’t be too hard on myself for what seemed like weeks of no progress. In fact, when listed here there are a whole bunch of things I’ve been working on (except for last weekend when I was just too burnt out to touch a thing). This blog is meant to detail what I’m working on and thinking about as I go through the production process, not only so I can later see where things go wrong and where they are on track, but also so I can simply understand the rhythms better for future planning.