[Robotics] Middlewares

Stefaan michielsen stefaan.michielsen at gmail.com
Mon Aug 31 12:11:58 CEST 2009


Hi

I've been looking at some middleware for blender robotics  the past few days
and i'm wondering whether there is a middleware without having to write
parsers for every junction in the system.

On first hand, Verse seems like a good middleware. It brings out the
structures of blender. So no need for parsing. But  on the other hand, it's
an deserted project, and not every data structure of blender has the support
needed by us (for instance armatures are non-existent)

At LAAS, yarp is used. I've been exploring the way yarp can help. But it
seems as though you have to write your own parser, for everything you want
to be able to do. As well I don't understand why yarp has robotic in the
name. Is there some bones data structure, or any other robotic related data
set? Or are bottles used as data containers.

Are there middleware for blender that don't need parsing and are alive?
If not we should definitly start proposals for what data is to be
represented towards the middleware.

Since i'm focusing on the *game engine*,  channels are the point of
interest.  These contain the information about the pose of a robot. So this
one should be accessible. This is my proposal for data structure/management:
- Each joint has it's channel.
- Since location/size are not to be altered in a robot model while running,
these values are not to be transported.
- Quaternion should be transported,as 4 floats

Since the setChannel() of the BX_actionactuator doesn't seem to have a read
ability, I suggest using the channelEditor as wrapper. This permits to
retrieve info about a pose, while in game.


The list of channels are initialized the 1st iteration of the Game Engine in
a setup routine.
Putting them in a dictionary in the GameLogic seems the proper way of making
them universally available. Example:

def setup(self):
    # Define your channelEditors here. This function will be called only
once
    #   "key" : Value
    # The channels should be changed through this variables.
    # The changes come into effect only after a channel run() is executed

    GameLogic.channels = {"act1.axis1":ChannelEditor("act1","axis1"),
                          "act1.axis2":ChannelEditor("act1","axis2"),
                          "act1.axis3":ChannelEditor("act1","axis3"),
                          "act1.axis4":ChannelEditor("act1","axis4"),
                          "act1.axis5":ChannelEditor("act1","axis5")
                         }

Now you can access the pose rather easily. Each Middleware, can have access
to each channel simultaneously.
I've already made an example for yarp integration.

When it's documented properly I'll put it on the blender/robotics wiki.

Stefaan Michielsen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/robotics/attachments/20090831/5304c5c4/attachment.htm 


More information about the Robotics mailing list