by DanAlbert » Sat Jun 02, 2007 6:45 am
by DanAlbert
Sat Jun 02, 2007 6:45 am
Hi guys,
Sorry for the late entry on this thread. I've been off-line for a few months working for a living.
With robogames coming up I have been working on my replacement OS for the RN. Here's what I have so far:
I've named it MOOSE (My Own Operating System Executive)
I have fixed the FreeLoader.exe program..It can now upload MOOSE or any ATmega128 hex file to RN and it works!..Duh.. Why didn't I check my messages from i-bot about the botched XOR code 4 months ago.
MOOSE has I2C support. It can read and write to the external EEPROM chip.
It can play sounds in the background. (An ISR routine, not a blocked call)
The servo generating ISR is very very fast. Also ISR based. Lots of time to do other stuff.
Freeloader can load Positions and Sequences of Positions into the EEPROM.
The Positions are read by FreeLoader from a text file. They are in the same format as RoboBasic Moves except they are preceded with an up to 10 character name for the move and a speed byte from 0 to 0xF. 0xF being the fastest. There are a lot of great moves out there and I wanted to stay compatible.
IE.
PlCDcd,0,85,71,152,91,112,16,100,40,80,0,254,254,100,40,80,254,254,254,112,76,145,93,92,60
Sequences are lists of positions, variable in length, and can be looped (as in walking) and crossed into other sequences when a mutual move exists in both sequences. IE if WALK and TURNRIGHT both use Position 4 then you can transition from one sequence to the other dynamically without having to finish the WALK sequence.
I have been putting in some RoboBasic command emulation. I currently only support F0, F2 and AF. These are used by RoboBasic to download the RoboBasic OS if you don't like MOOSE.
Both USART ports actual work so strings of commands can be sent.
I have loaded two different RoboNovas and had them walk. I then converted them back to RoboBasic. No harm, no foul.
What's left to do;
LOTS
There is no trim function for the servos.
There is no servo position read.
PTP moves are by default but I may allow non-PTP moves at some point.
A larger RoboBasic command set would be nice to be able to use the existing programs to generate moves.
An I2C API would be nice for those that want to add external devices.
Analog/Digital converters and Gyro/Accelerometer/IMU support is important.
AND OF COURSE THE REASON FOR BEING IN THIS THREAD!
Some sort of AI for autonomous operations.
Here's the nice part..There is plenty of space left for code and tons of EEPROM available.
My push right now is to get the RN soccerbots ready for RobOlympics in two weeks. (Nothing like a deadline!)
Then I am taking requests for features and I will be releasing MOOSE to the public.
Please think about how YOU would like to see things done.
I am always open to suggestions.
Thankx,,,,
Dan
Hi guys,
Sorry for the late entry on this thread. I've been off-line for a few months working for a living.
With robogames coming up I have been working on my replacement OS for the RN. Here's what I have so far:
I've named it MOOSE (My Own Operating System Executive)
I have fixed the FreeLoader.exe program..It can now upload MOOSE or any ATmega128 hex file to RN and it works!..Duh.. Why didn't I check my messages from i-bot about the botched XOR code 4 months ago.
MOOSE has I2C support. It can read and write to the external EEPROM chip.
It can play sounds in the background. (An ISR routine, not a blocked call)
The servo generating ISR is very very fast. Also ISR based. Lots of time to do other stuff.
Freeloader can load Positions and Sequences of Positions into the EEPROM.
The Positions are read by FreeLoader from a text file. They are in the same format as RoboBasic Moves except they are preceded with an up to 10 character name for the move and a speed byte from 0 to 0xF. 0xF being the fastest. There are a lot of great moves out there and I wanted to stay compatible.
IE.
PlCDcd,0,85,71,152,91,112,16,100,40,80,0,254,254,100,40,80,254,254,254,112,76,145,93,92,60
Sequences are lists of positions, variable in length, and can be looped (as in walking) and crossed into other sequences when a mutual move exists in both sequences. IE if WALK and TURNRIGHT both use Position 4 then you can transition from one sequence to the other dynamically without having to finish the WALK sequence.
I have been putting in some RoboBasic command emulation. I currently only support F0, F2 and AF. These are used by RoboBasic to download the RoboBasic OS if you don't like MOOSE.
Both USART ports actual work so strings of commands can be sent.
I have loaded two different RoboNovas and had them walk. I then converted them back to RoboBasic. No harm, no foul.
What's left to do;
LOTS
There is no trim function for the servos.
There is no servo position read.
PTP moves are by default but I may allow non-PTP moves at some point.
A larger RoboBasic command set would be nice to be able to use the existing programs to generate moves.
An I2C API would be nice for those that want to add external devices.
Analog/Digital converters and Gyro/Accelerometer/IMU support is important.
AND OF COURSE THE REASON FOR BEING IN THIS THREAD!
Some sort of AI for autonomous operations.
Here's the nice part..There is plenty of space left for code and tons of EEPROM available.
My push right now is to get the RN soccerbots ready for RobOlympics in two weeks. (Nothing like a deadline!)
Then I am taking requests for features and I will be releasing MOOSE to the public.
Please think about how YOU would like to see things done.
I am always open to suggestions.
Thankx,,,,
Dan