Changes

Bonsai v1 to v2 Changes

Modules

Bonsai uses a new module layout

  • Bonsai Core
    • Core Implementation: object configuration, skill configuration, runner
  • Bonsai Interfaces
    • Object Interfaces: Actuators,Sensors Old core
    • Data Definitions: Old BTL-Core
  • Bonsai Skills
    • Core Skills: Old bonsaiBehavior skills
  • Bonsai SCXML
    • SCXML statemachine Implementation : old bonsaiBehavior engine
    • SCXML guis/server
  • Bonsai Adapter
    • Interface Implementations: Objects and Data
    • Old btl-mw and core-mw-actuator/sensor

This results in the Dependency Graph:

Core -> Interfaces -> Skills
Core -> SCXML-common
Interfaces -> Adapter-mw

(SCXML-mw implementations depends on the corresponding adapter)

  • SCXML has a Server+Gui implementation that runs without any middleware (single binary)
  • To use different adapter or skill packages you have to add them to the classpath of your scxml-binaries - the easiest way to do this is creating a ‘dist’ project that uses appassembler and depends on the needed packages

SCXML

Sourcing

sourcing can now utilize defined mappings instead of relative paths

<state id="consume" src="${TEST}/memorySlots.xml"/>

the mappings can be set with the -m option example:

-m TEST=/tmp/statemachines -m BEHAVIORS=/tmp/statemachines/behaviors

Core

Skills

  • Skills no longer have variables (getVariables/MapReader)
    • instead you can request parameter during configuration
    • this results in better verification: missing/obsolete parameter, optional parameter with the defaults and parameter types

Sensors

  • Wire type is now a required attribute for Sensors
<Sensor key="SpeechSensor"
    dataTypeClass="de.unibi.citec.clf.btl.data.speechrec.Utterance"
    factoryClass="de.unibi.citec.clf.bonsai.ros.RosFactory"
    sensorClass="de.unibi.citec.clf.bonsai.ros.sensors.RosBtlMsgSensor"
    wireTypeClass="std_msgs.String">