Society of Robots - Robot Forum

Software => Software => Topic started by: triddle on March 17, 2008, 10:03:49 AM

Title: New robot software platform - community discussion wanted
Post by: triddle on March 17, 2008, 10:03:49 AM
Hello all,

I'm starting on a robot software platform to solve a problem that I see with hobby robotics: the barrier to entry for more than the most basic robots is extremely high with a steep learning curve thereafter. I bet a lot of you guys are in the same boat that I am: you want a functional robot and platform you can use to develop some specific part (a new sensor design, navigation algorithms, getting your robot to do pushups) and you don't care to develop the large number of other important and difficult to implement parts. I think the solution here lays in a good object oriented robot development platform.

I admit I'm new to constructing and controlling robots but I have implemented a simple robot in simulation in PlayerStage - the simulation capabilities were really cool and it let me cut my teeth on object avoidance and let me play around with little risk of monetary loss. What I don't think it'll do is let me control my quadrapod I built as it can't model servos and the interactions between them. Not all hobby robots use wheels and it would be nice to have a library that can support both and more (snake style, robots that travel along rails, millipedes, gripper arms). A robust modeling system can bring this to the table with easy to use high level interfaces and lower-level control if desired and the same is true for things like sensors.

It's important to note that this approach will no doubt require higher computational complexity on the robot than your average microcontroller can provide but it's possible now for under $200 to have a 400 mhz computer with 128 megs of ram in a few grams and drawing only a watt or two when running full speed. Add in ethernet or 802.11 and an IP layer and you can "tether" the robot with or with out wires. The size, weight, and energy requirements are quite reasonable on modern robots and I think the increase in all of those aspects for control is worth it. Here is the kind of features I'm thinking the framework should support (note that with the proper implementation these would come for-free or with minimal implementation cost):

  * Models of servos that not only control things like angles but also linear travel and rotational/linear velocity
  * Servo correction, grouping, and synchronization in servo classes so higher level operations don't have to know about them
  * Software validation of control commands: an attempt to rotate a servo to a point that causes it to bind causes a fault
  * Models of limbs that not only provide a high level interface for control ("move foot two inches forward" would lift the leg and rotate it forward) but also hold the information required to perform kinematics
  * Motion description systems that work with arbitrary time bases so you can have a ramping up and down of speed at the head and tail of a motion profile then have that profile executed over any arbitrary time length
  * and much much much more

Here is my notes so far on a set of classes and their hierarchy: http://triddle.ath.cx/classes.pdf (http://triddle.ath.cx/classes.pdf)

I also think the appropriate way to organize the framework is via an event-driven model and state machines; this technique has been used to write GUI programs for a very long time and it has proven itself to be quite good for a lot of the same problems that need to be solved here: code reuse and interconnect-ability. Events are anything from bump sensors triggering to arriving at a way point and each event updates some portion of the robot and causes other actions to happen appropriately.

I've got my computer platform and programming language of choice for lots of reasons but I'm deliberately keeping the language out of the discussion right now. I'd like to focus on things the software should do that help us, the robot hobbyists, instead of trying to make the software conform to the restrictions in a language. I'm especially looking to drum up discussion in this area and especially from seasoned veterans. What do you guys think?

Tyler
Title: Re: New robot software platform - community discussion wanted
Post by: hgordon on March 17, 2008, 11:37:08 AM
If you are thinking about doing this for your own benefit as a learning exercise, then it's probably a worthwhile project.  However, if you are thinking about creating something that others will adopt, you need to take a close look at existing efforts which already provide the functionality you describe plus full 3D simulators, e.g. Microsoft Robotics Studio, Webots, Player/Stage/Gazebo, etc.
Title: Re: New robot software platform - community discussion wanted
Post by: triddle on March 17, 2008, 11:46:02 AM
If you are thinking about doing this for your own benefit as a learning exercise, then it's probably a worthwhile project.  However, if you are thinking about creating something that others will adopt, you need to take a close look at existing efforts which already provide the functionality you describe plus full 3D simulators, e.g. Microsoft Robotics Studio, Webots, Player/Stage/Gazebo, etc.


It is for myself but I'll share it; people will only adopt it if the stars line up just right, among other things (I've got several little used and one fairly used open-source project already under my belt already). Also I did mention that I've already simulated a robot in Player/Stage and as far as I can tell it's deficient to simulate the robot I have right now. I'm going to wind up dropping a lot of code and for 25-50% more work I can go that extra-step and hopefully make something that shines. If you've (or anyone else) got a wish-list ("I was making a bot once and had this GREAT idea but I would have had to make this design decision a long time ago") or some advice to share I'd love to hear it.
Title: Re: New robot software platform - community discussion wanted
Post by: Admin on March 23, 2008, 11:31:51 AM
Always keep easy of use and speed of implementation in mind if you want it adopted by noobs . . .

and tutorials!!! :P
Title: Re: New robot software platform - community discussion wanted
Post by: hgordon on March 23, 2008, 01:44:45 PM
If you've (or anyone else) got a wish-list ("I was making a bot once and had this GREAT idea but I would have had to make this design decision a long time ago") or some advice to share I'd love to hear it.
In your basic architecture, you might consider finding a way to enable adaptive learning.  Rather than a conventional state machine that connects inputs to outputs through logic, think about how you might create an intermediate layer for artificial neural net or fuzzy logic or something comparable.
Title: Re: New robot software platform - community discussion wanted
Post by: triddle on March 23, 2008, 05:49:10 PM
If you've (or anyone else) got a wish-list ("I was making a bot once and had this GREAT idea but I would have had to make this design decision a long time ago") or some advice to share I'd love to hear it.
In your basic architecture, you might consider finding a way to enable adaptive learning.  Rather than a conventional state machine that connects inputs to outputs through logic, think about how you might create an intermediate layer for artificial neural net or fuzzy logic or something comparable.

Good idea, I would like to do this. My solution is to have the robot controller (a distinct part of the entire control suite) receive notifications (bump stop hit, servo reached desired position) from the other parts of the code base. This controller would then deal with fairly high level things using what ever representation is desired (fuzzy logic, state machines, or a mixture of both, or others). I must admit this is an area I'm extremely week in as conceptually I can grasp servos and motion control really easy, fuzzy logic and high level robot control I have only briefly touched on. I'm going to start with a system that'll let me get my quadraped running around on a tether, then I think start on a simple but not very high performance kinematics system, and after that move on to the high level robot control stuff.

And I do write fairly good documentation and examples. :-)