[Robotics] Middlewares

Benoit Bolsee benoit.bolsee at online.be
Mon Aug 31 14:05:07 CEST 2009


Hi Stefaan,
 
I am already working on something exactly like that. In my itasc branch,
I have created a BL_ArmatureConstraint object that is a proxy to the
armature constraints. It can be used to retrieve and alter constraint
values and solver runtime data. I'm stilll working on the API but the
principle is that you'll get a reference to these objects through a
object.getConstraint() function , and directly access internal data
through attributes. What you are proposing is similar for the pose
channels and can be handled is a very similar way. I invite you to have
a look at the itasc branch. It's due to be merged to blender 2.5 branch
in September.  It's easy to add a BL_ArmatureChannel object like I did
for BL_ArmatureConstraint. 
 
Benoit Bolsee
 

-----Original Message-----
From: robotics-bounces at blender.org [mailto:robotics-bounces at blender.org]
On Behalf Of Stefaan michielsen
Sent: lundi 31 août 2009 12:12
To: robotics at blender.org
Subject: [Robotics] Middlewares


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/26208213/attachment.htm 


More information about the Robotics mailing list