From BlenderWiki

Jump to: navigation, search

[edit] Blender and middlewares

[edit] The interfacing route

-> Python ?

-> C ?

-> at which level? custom sensors/actuators? only accessible through Python API?


[edit] The simple Python route

An "always" sensor call a Python controller that write or read data to/from the middleware. Some initialization/finalization can be done through "runOnce"/"quit" sensors.

See a Robotics:Middleware/YARP

[edit] The "sensors/actuators" route

Implement custom sensors/actuators that read/write from the middleware.

Some background on the Robotics:Sensors, Controllers, Actuators architecture in the GameEngine by Benoit Bolsee.

For the sensors, it would requires a event loop to trigger the sensor.

[edit] Non-exhaustive list of potential targets

  • YARP (MIT/IIT Yet Another Robotic Platform)
  • ROS (Willow Garage's Robotic Operating System)
  • VRPN (Virtual Reality Peripherical Network)
  • OSC (Open Sound Control, that came out of the music world but seems to have grown far beyond that -> Nick Porcaro successfully interfaced it with Blender)
  • OpenRobots (LAAS middleware -> interfacing will occur most probably through other middlewares)
  • Verse (see below)
  • ICE General ORB with many features and bindings to most of the popular programming languages. Works cross-platform and cross-language. (For a description of an application see below.)

[edit] Verse

  • Pros:
    • + already closely integrated with blender
  • Cons:
    • - No good armature support
    • - No support in Game Mode
    • - Not been edited in a long time (like 2006)

-> Overal not a good idea.

[edit] Emulation of control devices with ICE

ICE have successfully been used to implement devices (for modeled robots, conveyors, cameras, robot tools, agvs) inside the Blender Game Engine, and provide their interfaces. Together, this gives an emulated platform for an overall distributed (holonic manufacturing) control system, that is unaware of whether it controls the real devices (in the lab) or the emulated devices in the Blender. The modeled devices in the Blender Game Engine provide the same interfaces over ICE, as do the real devices in the laboratory LAN.

Almost all controllers in the game engine are Python controllers, that mediates between the models in Blender and the external control system over ICE. Some of the game engine (Python) controllers are quite complex, and do a lot of computation like inverse Jacobian control of the robots to realise linear tool motion commands.