Walking seems to be much harder to do than the standstill balancing. I’m using self made controller board that’s using PIC16F690.
I’m already starting to feel that it’s not powerful enough for what I’m trying to achieve.
I’ve used the CCS compiler in the past. I believe they have an 18F compiler now. So many compilers!
I have a piece of code in CCS C that I need to “port” over to the Hi-tech compilers, my favorite. The CCS compilers have a convenient set of set_ and setup_ routines built-in. Makes it a little more difficult to port! I’m especially interested in timer, counter, PWM and Compare routines. No easy way to see exactly what bits they set and what else they do.
Without the Visual Sequencer, it would be hard to develop a walking gait. If you use the Visual sequencer, you can create sequence steps like still frames of a movie, and develop your walking gait using the software sliders. One feature I like is you can swap movements of the legs and save that as a new step (frame). Since you are going all out custom it would be hard to port over the exported word tables that Visual Sequencer creates and convert that data to the C language. I use the Basic Atom Pro MCU so all I have to do is take the exported word table and paste it in my code to call the movements as needed.
I’m looking forward to the new ARC-32 Board to use on my new biped project and I plan to use the Sequencer to create a library of all my servo movements.
I love that balancing software you developed. Did you use an accelerometer?
Mike is quite true on the desirability of using SEQ to develop gaits and poses. Although it might be difficult to export the gaits and directly use them in C, I think it’s possible. OK, I know it’s possible. In fact, I’ve done something similar for Loki’s gaits. I captured the move commands (RS-232) output by SEQ, and simply copy/pasted them into my C program as an array.
As SEQ can generate a gait export for the SSC-32’s EEPROM and a short program in AtomBasic to “run it”, I see no reason why the generated basic couldn’t be translated, the EEPROM code loaded into the EEPROM and a C program use to call up the gait from the EEPROM. That assumes, of course that you are using the SSC32.
Cool Alan, I was not sure what would be involved with translating the exported word tables. If you can used the data as is and then a copy paste, stitched with C, I guess it could make it happen. I am not the best with programming so don’t listen to me.
I’ve not used the sequencer before so I don’t really know how it works. I believe I can do the walking without the seq, although it might be challenging. I want it to be so, that even the walking itself is preprogrammed the positions of the servos will constantly be corrected in relation to the information that comes from the tilt sensor. I am pretty sure that I will have to make some FSR:s for the feet so it can feel the ground. I am trying to think how humans balance. It’s pretty clear that it is hard to walk if you don’t know when your foot is touching the ground and when it isn’t. Try putting socks on dogs feet and see how it starts to walk
Here’s a bit of code that I captured from SEQ’s output after a little editing:
char *WalkCycle1] =
{st0, st1, st2, st3, st4, st5, st6, NULL};
char st0] = "#0P1500 #1P1500 #2P1500 #3P1500 T1000"; /* both feet on ground */
char st1] = "#0P1616 #1P1472 #2P1722 #3P1531 T1000"; /* Left leg up */
char st2] = "#0P1646 #1P1669 #2P1702 #3P1676 T1000"; /* Left leg to new position */
char st3] = "#0P1425 #1P1669 #2P1500 #3P1676 T1000"; /* Left leg down */
char st4] = "#0P1308 #1P1668 #2P1336 #3P1690 T1000"; /* Right leg up */
char st5] = "#0P1308 #1P1444 #2P1336 #3P1408 T1000"; /* Right leg to new position */
char st6] = "#0P1500 #1P1500 #2P1500 #3P1500 T1000"; /* Right leg down */
Look familiar? It’s an array of character strings. Not compact, but easy for initial tests.
One could also write a 'bot editor (I did) to allow the joints to be moved one at a time on the 'bot, and when a new step in the gait was achieved, one “saves” that step.
All depends on how you want to do it!
I think it would have been far easier if I’d been set up (SSC-32 rev) and use the SEQ tools to generate the EEPROM (EEP file) and then C code to do the following (BAS):
[code]SSC32 con p8
cr con 13
serout S_OUT,i38400,“EE test”, cr]
pause 500
; Run PLayer 0 on SeQuence 0 with Speed Multiplyer = 100%
; at IndeX 0 (step 0) with a PAuse between index/step = 0 ms
serout SSC32,i38400,“PL0 SQ0 SM100 IX0 PA0”, 13]
[/code]