General Misc > Misc

beginner robot

<< < (4/4)

NERDsoldier:
What about the RB2000 from V-stone? Its a pretty nifty looking robot for a decent price.
I looked into the dongbu stuff and even though I lived in Korea for so long and love that place, there is just something about a robot that is basically plastic that sort of turns me off.

The nano looks like a cool choice as well, I think that might be what I end up with.

jwatte:
The V2000 uses hobby-type servos with plastic gears and single bearings, according to the specs.
You would probably be better off with some Lynxmotion brackets and HobbyKing servos, assuming you found HK servos that fit the Lynxmotion brackets, if you wan to go with hobby servos.
Hobby servos are limited because you can't read back any feedback from them (load, speed, overheat, etc) so it's going to be a limitation if you get deeper into the system.

NERDsoldier:
Good to know thank you jwatte.

How much would it cost to build a Lynxmotion humanoid then?

idee17:

--- Quote from: jwatte on March 14, 2013, 08:10:01 PM ---There's also the Arbotix which is a replacement controller that works a lot like an Arduino board, yet can control the Bioloid.

--- End quote ---

You can control the servos with an Arduino directly using this chip:
http://www.alldatasheet.net/datasheet-pdf/pdf/28031/TI/74LS241.html
and this Arduino library:
http://savageelectronics.blogspot.com/2011/08/actualizacion-biblioteca-dynamixel.html

jwatte:
You can actually control them directly using an Arduino without an external chip. Doing all servos on a particular port (port B, C and D) at a time will require disabling interrupts for up to 2 milliseconds, but other than that, it will work fine, and have very high accuracy. The way it works is:

0) Set timer 1 to tick four times per microsecond.
1) Calculate the "on time" for each of the pins. Note that pins on/off map to a particular byte value of masked bits you can write to the port register.
2) Build a table from "on time" to "port output value."
3) Sort the table based on "on time."
4) Disable interrupts, check timer 1 baseline, write all port bits to 1
5) while timer 1 minus basline less than next table value time, do nothing
6) set the port to the table value, increment the table pointer
7) if not at the end of the table (port value is not 0 yet) goto 5
8) enable interrupts

This will give you approximately 1/4 microsecond resolution, which maps to 4000 steps between the 1000 and 2000 microsecond approximate end points of a typical hobby servo.

The main challenge is not losing input control data while interrupts are disabled, as the UART in the Atmega CPU only has a single byte of buffering.
One protocol might be to send a "go ahead" byte when coming out of all the disabled interrupt intervals, and immediately receive all the data for the next packet (if any.) Another may be to echo back each byte received, and on the sending side, only send the next byte after seeing the previous byte.

Navigation

[0] Message Index

[*] Previous page

Go to full version