James threw this together in between programming and tutorial sessions. I think it turned out pretty well. We are considering making some modifications to the 209 chassis, to create a new chassis based on this design. Like maybe adding a turret servo. We may put this into kit form. Need to come up with a catchy name for it.
Looks Great.
James seems to have all of the fun
Kurt
brings me back to some of my old biped designs using the 209 reverse knee look.
the 209 chassis looks great on the brat.
airsoft guns maybe?
great work. 8)
I like the (what I think is) long head! reminds me of the ALIEN movie (first impressions).
Maybe it needs a long tail? That could help in balance.
Alan KM6VV
That MICRO9 looks fantastic! It seems to be very stable and walks great.
I agree with mike. much better walking gate then the BRAT. are you using standard servos?
Brandon C.
Yes the extra DOF in the hip makes for a better gait. It’s using standard HS-645 servos. Hehe 8)
Why not combine work and play? It only makes sense
Besides, the MICRO9 was a joint effort between us! Well, sort of. He at least told me to build something up. That counts, right?
The conversation went something like this:
RD: “James. Build an ALIEN.”
Me: “Alright. BRAT+1 coming up.”
RD: “We should call it the TEENAGER.”
Me: “No… Just no…”
I may be paraphrasing. A bit. Also, this conversation may or may not have actually happened.
I’d like to see a video of the Micro9 turning using the hip rotate. I really really like the design. 8)
Working on it. Video possibly tomorrow? 8)
Here’s an unimaginative name for it:
SCRAT
Just got my BB2 in yesterday and totally new to BasicStamp programming. Mind sharing your code?
-
I have 8 in the legs and 2 in the head and 4 more for the right arm, as well as 1 relay for gun in place of the left arm. That’s 15 total. What is the limit on servos with a BB2 alone?
-
I would like to control it all from the PS2 gamepad, which takes up another what, 4 channels?
-
I’m thinking the only way is to store the sequences in the SSC-32 EEPROM and use the BB2 to trigger a player for each sequence.
-
If I use the PS2, is there any way to communicate between my BB2 and SSC-32?
Thanx in advance. -Manny
This question should be posted in the Bot Board & BASIC Atom / Pro
topic.
The PS2 has no effect on the BB2 to SSC-32 communications. The
PS2 when controlled will output number values that can be stored in a variable. If for example, moveLeft = 121, the program on the BAP can be instructed to execute any section of code you desire. You could write a simple loop that flashes a LED, and any time the PS2 stick is moved to the left, it will run the flashing LED routine.
The BAP is the computer, the controller and SSC-32 are peripherals.
This is using the Atom Pro not a basic stamp at all. It’s also not using the SSC-32. The Atom is running a limited SSC-32 emulation in the background. I’m sure James will post the code when it’s a little further along. Right now it’s not turning, just walking forward.
If you want to use the SSC-32 it is also a very good solution. Just his code will not help you.
With a Bot Board II and Atom Pro 28 you will have 20 I/O pins. 14 for servos, 1 for a relay 4 for the PS2 leaves only 1 I/O pin left over.
PS2 should work for the event, Tiberius reported the Phoenix would work at the event, however it’s a PS2 game controller so it only has 4 channels. In other words you and three other people could use them at the event. We are looking into 2.4ghz spread spectrum technology radios for control. Hitec is releasing their 6 channel version very soon. There will be a little mod involved to add a 16 key keypad to get the control a biped would require. I’m not a big fan of using a PC to control a bot. Anyway there are many new things coming that will make this easier. For now PS2 control will allow you to develop the gaits and control code.
More Hitec teaser
Thank you all for your prompt replies. Ok, no problem I’ll forge ahead learning to code the BAP as I go. 8) Sorry if I got the terminology wrong. I thought different chip, same language. Oops!
That’s great news I won’t need my SSC-32. I have other plans for it anyway!
Jim, glad to see you’re looking at spread spectrum. I had concerns about 2.4 GHz control under high RF conditions, such as Robogames. And Mike, I will post future questions under the correct topic. Thanks everyone! BTW, here is my SSC32 SEQ export prog. I can’t read it, but if it helps…
1=home position (stand upright)
2=walk forward
3=walk backward
4=turn left (shuffle feet)
5=turn right (use hip rotation–faster and looks better!)
6=squat
; ------------------------------------------------------
; Lynxmotion Visual Sequencer SSC-32 'Export' Program
; Sequencer SSC-32 project : CLYDE4
; Date : 8/17/2009 10:23:58 PM
; ------------------------------------------------------
; Format : Basic Atom 24Pro/28Pro ONLY (NO SSC-32 Card)
; *****************************************************
; ** Basic Atom 24Pro/28Pro Version **
; *****************************************************
; **DONT USE THIS PROGRAM ON A BA24 or BA28 (not Pro)**
; ** THE PULSOUT COMMAND IS NOT WORKING THE SAME WAY **
; ** AND YOU MAY DAMAGE YOUR SERVOS/ROBOT **
; *****************************************************
; Original filename : CLYDE4.bas
; ------------------------------------------------------
Steps Wordtable $03E8, $0C70, $13DC, $1B48, $83ED, $8B44, $9C32, $A3E8, $A01F, $A01F, |
$04F8, $0C70, $13DC, $1A33, $85BC, $8B44, $9C32, $A3E8, $A01F, $A01F, |
$03A2, $0B69, $1385, $83BE, $89FB, $9B15, $A1DF, $A01F, $A01F, |
$0217, $0C70, $13DC, $1B48, $82DC, $8B44, $9C67, $A3E8, $A01F, $A01F, |
$0417, $0DC4, $15EB, $1BF6, $8433, $8C51, $9C89, $A440, $A01F, $A01F, |
$0217, $0C70, $13DC, $1B48, $82DC, $8B44, $9C67, $A3E8, $A01F, $A01F, |
$03A2, $0B69, $1385, $1AF9, $83BE, $89FB, $9BBE, $A1DF, $A01F, $A01F, |
$04F8, $0C70, $13DC, $1B48, $85BC, $8B44, $9C32, $A3E8, $A01F, $A01F, |
$0417, $0DC4, $15EB, $1BC5, $8433, $8C51, $9C89, $A440, $A01F, $A01F, |
$03E8, $0C70, $13DC, $1B48, $83ED, $8B44, $9C32, $A3E8, $A00F, $A00F, |
$0217, $82DC, $9C67, $981F, $981F, |
$0417, $0DD5, $15EB, $1ADC, $8433, $8C51, $9C12, $A440, $A01F, $A01F, |
$03A2, $0B69, $1385, $1BBE, $83BE, $89FB, $9C9F, $A1DF, $A01F, $A01F, |
$03E8, $0C70, $13DC, $1B48, $83ED, $8B44, $9C32, $A3E8, $A01F, $A01F, |
$03E8, $0BA2, $13DC, $18A9, $85F1, $8B44, $9C32, $A3E8, $A01F, $A01F, |
$04EB, $1B48, $842E, $8C4B, $881F, $881F, |
$03E8, $0C70, $83ED, $8B44, $881F, $881F, |
$03E8, $0B4D, $1293, $1B48, $83ED, $8CBB, $9C32, $A535, $A01F, $A01F
SeqPos Wordtable $0000, |
$000A, |
$0031, |
$0059, |
$0086, |
$009C, |
$00A6
PinToVar bytetable $00, $01, $02, $03, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, |
$04, $05, $FF, $06, $07, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
MainPause var Word
PulseTotal var Word
ServoTime var Word(8)
ServoPos var Word(8)
ServoDest var Word(8)
ServosTmp var Nib(8)
ServosTmpIdx var Nib
Idx var Nib
Init var bit
LastPulseTotal var byte
;Original SSC-32 Project Pins : 00, 01, 02, 03, 16, 17, 19, 20
BotBoardPins bytetable 00, 01, 02, 03, 04, 05, 06, 07
SeqIndex var Word
Index var Word
LastServo var Byte
TmpServo var Byte
TmpValue var Word
DejaVu var bit
LastServo = 99
DejaVu = 0
ServosTmpIdx = 0
Init = 1
pause 500
for Idx = 0 to 7
low BotBoardPins(Idx)
next
Main
For SeqIndex = 0 to 5
For Index = SeqPos(SeqIndex) to SeqPos(SeqIndex + 1) - 1
TmpServo = Steps(Index) >> 11
TmpValue = Steps(Index) & 2047
if LastServo = TmpServo then
TmpValue = TmpValue << 5
if DejaVu then
Init = 0
MainPause = TmpValue
LastServo = 99
LastPulseTotal = 32
Again
PulseTotal = 0
for Idx = 0 to 7
if ServoTime(Idx) >= LastPulseTotal then
ServoPos(Idx) = ServoPos(Idx) + ((ServoDest(Idx) - ServoPos(Idx)) / (ServoTime(Idx) / LastPulseTotal))
endif
Pulsout BotBoardPins(Idx), ServoPos(Idx) * 2
PulseTotal = PulseTotal + ServoPos(Idx)
next
Pause 20
LastPulseTotal = (PulseTotal / 1000) + 20
for Idx = 0 to 7
if ServoTime(Idx) >= LastPulseTotal then
ServoTime(Idx) = ServoTime(Idx) - LastPulseTotal
endif
next
if MainPause >= LastPulseTotal then
MainPause = MainPause - LastPulseTotal
goto Again
endif
else
for Idx = 0 to ServosTmpIdx - 1
ServoTime(ServosTmp(Idx)) = TmpValue
next
ServosTmpIdx = 0
DejaVu = DejaVu ^ 1
endif
else
if Init then
ServoPos(PinToVar(TmpServo)) = TmpValue + 500
else
ServoPos(PinToVar(TmpServo)) = ServoDest(PinToVar(TmpServo))
endif
ServoDest(PinToVar(TmpServo)) = TmpValue + 500
ServosTmp(ServosTmpIdx) = PinToVar(TmpServo)
ServosTmpIdx = ServosTmpIdx + 1
DejaVu = 0
LastServo = TmpServo
endif
next
next
goto Main
This would also work really well with the Scout chassis, as opposed to the Lynx one in the pictures. It would give more room for prototyping and such.