Project SlyBot Introduction | Progress | Robots | Control Software (RaSCL) | Robotics Resources
| Project Status |
Welcome to my new project! So far, SlyBot I is my latest robot. |
| Robot Hobbyist? |
Know of any useful sites/IRC channels? Drop me a mail and I'll add them to my resources section. |
![]() |
Project SlyBot is my venture into the world of robotics. I'm interested in the challenges involved in developing
software systems to control movement and behaviour; so what better way to
put them to the test than to build a robot! (also an excuse to play with Lego again ;)
This page will follow my adventures as I work to develop both the hardware and software for various generations of a robot; namely SlyBot. Hopefully by the end of it, SlyBot will be fairly autonomous! The picture to the left shows SlyBot I - Phase I, still pretty early in the development cycle as you can see! Click it to see an enlarged version. |
I will post here pictures and videos of the robots, and details of what has been learnt along the way. In due time I will make the control software available to aid others in their own robotics adventures!
The overall aim is:
Hardware wise, initially the robot will be built from technic Lego, use SuperTek/GWS servos and a 12 channel servo driver. As things develop it will use a Sharp Zaurus (running Linux) to host the control software, and use an I2C servo controller and sensors for input.
Goto Top| Phase I |
The first phase will end with a basic six-legged robot, able to walk forward and backwards. I've got a lot to learn; there's a lot of work behind just getting the software for wave gait working! However, as anybody who works with robots could tell you, when it first crawls by itself it's a tad cool! |
| Phase II |
The second phase will concentrate on making something that doesn't fall apart ;-) The RaSCL control software will be released during this phase for you all to play with! |
The following outlines roughly where I want this project to go. I've split the development into a number of phases, each providing a significant advance in functionality over the previous.
|
Phase: SlyBot I - Phase I Mission: Six legged robot with servos mounted - basic wave gait motion. Status: Complete
Software Development: |
|
Phase: SlyBot I - Phase II Mission: Body/leg strengthen - reliable tripod gait motion - software enhancement Status: In progress
Software Development: |
Further phases will follow!
Goto Top| No Rude Comments! |
SlyBot isn't much of a looker, but I'm going for functionality first! Never underestimate the power of Lego (or how much you need!). See my resources section for some good replacement Lego suppliers! |
![]() |
RaSCL: Hum, somewhat fitting logo don't you think ;-)
| Erm, ya wah? |
It may look insane initially, but I'm trying to make it developer friendly; especially to those without past programming experience. If you've got ideas on what would be useful, drop me a mail at simon@slyware.com. Check out my RaSCL project page for more! |
| RaSCL: Side Note |
Think of RaSCL as a merging of Scheme, C++, me and a fair bit of coffee. With any luck it will be useful! |
One of the main drivers I have for this SlyBot project is to experiment with control software. My background is in software, but whilst I have been developing SlyBot one hurdle I've had is the hardware and electronics side. For other robotics hobbyists and enthusiasts, the barrier may be automation; they have a robot, but no idea how to get it to do something useful!
This is where RaSCL comes in; Robotics and Sensorial Control Language. RaSCL is a high level yet powerful language to aid interaction between a PC/PDA and servos/sensors. It is by no means meant to be embedded; it aims to provide a generic platform to develop algorithms such as walking gait and collision avoidance, and present them in a markup that users can swap and customise.
For SlyBot I will be running this software on a Linux based Zaurus PDA. However, the major advantage this has is that an interpreter will also be available for Windows, so you can prototype your own control software on the desktop. My goal here is so that users with a servo controlled robot can download the interpreter, configure their controller encodings (or use a pre-defined one), plug in the serial cable, and call the in-built routines to get their bot to move! They are then free to customise the routines to their needs.
Learn more from my RaSCL project page!
The following gives a flavour for the language: this function sets all configured servos to a given position at a given speed, and waits for all servos to complete their move before returning.
To make sense of the following you may need to know:
Learn more from my RaSCL project page!
(::*complex_function set_all_servos) # Split out params - icar extracts an item from a given list index position (::= .lPos (icar func_args 0)) (::= .lSpeed (icar func_args 1)) # Following defines a variable to be the empty list (::= .lTimes {}) # For each servo (::foreach gBotServos) # Each servo pointer will be in iItem - split it out (::= .lEntry iItem) (::= .lServo (dynamic_cast (car lEntry))) # This instructs the servo to move. The setpos method on a Servo object returns the # time it will take to move that servo, given its last position and the specified speed. # The resulting times are appended to the end of the lTimes list. (::= .lTimes (carpush (*lServo::setpos (list lPos lSpeed)) lTimes)) (::endforeach) # Sleep until the servo with the longest distance to move has completed. (::sleep (max lTimes)) (::endfunc)Goto Top
| Exchange Links? |
Know of any useful links that could be included? Mail them to simon@slyware.com and I'll add them. |