diff --git a/scenarios/MovePlatformTest/WidgetMovePlatformApp.armarxgui b/scenarios/MovePlatformTest/WidgetMovePlatformApp.armarxgui
new file mode 100644
index 0000000000000000000000000000000000000000..34fb44531c56df2daf3f744a0c119624927933a0
--- /dev/null
+++ b/scenarios/MovePlatformTest/WidgetMovePlatformApp.armarxgui
@@ -0,0 +1,38 @@
+[General]
+loadedLibs=Gui/build/lib/libConditionViewerGuiPlugin.so, Gui/build/lib/libHandUnitGuiPlugin.so, Gui/build/lib/libHardwareGuiPlugin.so, Gui/build/lib/libKinematicUnitGuiPlugin.so, Gui/build/lib/libLoggingGuiPlugin.so, Gui/build/lib/libObjectExaminerGuiPlugin.so, Gui/build/lib/libObserverPropertiesGuiPlugin.so, Gui/build/lib/libPlatformUnitGuiPlugin.so, Gui/build/lib/libSensorActorWidgetsGuiPlugin.so, Gui/build/lib/libStateChartGuiPlugin.so, Gui/build/lib/libSystemStateMonitorGuiPlugin.so, SimulationX/build/lib/libSimulatorControlGuiPlugin.so
+MainWindowGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x2\x10\0\0\0\x46\0\0\a%\0\0\x4\x1a\0\0\x2\x18\0\0\0\x62\0\0\a\x1d\0\0\x4\x12\0\0\0\0\0\0)
+DockWidgetsState="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x1\0\0\x5\x6\0\0\x3\x82\xfc\x2\0\0\0\x2\xfc\0\0\0\x19\0\0\x2\xd2\0\0\0\xdc\0\xff\xff\xff\xfc\x1\0\0\0\x2\xfb\0\0\0\x1a\0\x44\0o\0\x63\0k\0L\0o\0g\0V\0i\0\x65\0w\0\x65\0r\x1\0\0\0\0\0\0\x3\xec\0\0\0\xc8\0\xff\xff\xff\xfb\0\0\0,\0\x44\0o\0\x63\0k\0S\0y\0s\0t\0\x65\0m\0S\0t\0\x61\0t\0\x65\0M\0o\0n\0i\0t\0o\0r\x1\0\0\x3\xf2\0\0\x1\x14\0\0\0\xd3\0\xff\xff\xff\xfb\0\0\0\x1e\0\x44\0o\0\x63\0k\0\x45\0v\0\x65\0n\0t\0S\0\x65\0n\0\x64\0\x65\0r\x1\0\0\x2\xf1\0\0\0\xaa\0\0\0\xaa\0\xff\xff\xff\0\0\0\0\0\0\x3\x82\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)"
+WidgetCustomNames=EventSender, LogViewer, SystemStateMonitor
+
+[EventSender]
+WidgetBaseName=EventSender
+widgetWidth=1286
+widgetHeight=150
+EventSender\1\eventSenderName=startMovePlatformTest
+EventSender\1\description=
+EventSender\1\componentName=RobotControlStateOfferer
+EventSender\1\globalStateIdentifier=RobotStatechart->RobotControl->Functional
+EventSender\1\eventName=EvLoadScenario
+EventSender\1\eventReceiverName=toAll
+EventSender\1\parameters\1\key=proxyName
+EventSender\1\parameters\1\VariantTypeId=-2125418521
+EventSender\1\parameters\1\value=MovePlatformStateChartStateOfferer
+EventSender\1\parameters\2\key=stateName
+EventSender\1\parameters\2\VariantTypeId=-2125418521
+EventSender\1\parameters\2\value=MovePlatformStateChart
+EventSender\1\parameters\size=2
+EventSender\size=1
+
+[LogViewer]
+WidgetBaseName=LogViewer
+widgetWidth=1004
+widgetHeight=702
+verbosityLevel=1
+autoFilterAdding=true
+
+[SystemStateMonitor]
+WidgetBaseName=SystemStateMonitor
+widgetWidth=276
+widgetHeight=702
+ManagerRepository=@Invalid()
+MonitoredManagers=ArmarXGuiManager, ArmarXSimulatorManager, CommonStorageManager, ConditionHandlerManager, KinematicUnitDynamicSimulationManager, KinematicUnitObserverManager, KinematicUnitSimulationManager, LongtermMemoryManager, MovePlatformAppManager, PlatformUnitDynamicSimulationManager, PlatformUnitObserverManager, PriorKnowledgeManager, RobotControlManager, RobotStateComponentManager, SystemObserverManager, WavingManager
diff --git a/scenarios/MovePlatformTest/configs/ArmarXGui.cfg b/scenarios/MovePlatformTest/configs/ArmarXGui.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..72e2e2ed2fb8fed63738266f09fe8ab9994bc0a3
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/ArmarXGui.cfg
@@ -0,0 +1,7 @@
+ArmarX.LoadPlugins=${ArmarXHome_DIR}/Gui/build/lib/libKinematicUnitGuiPlugin.so
+ArmarX.Show3DViewer=yes
+# model XML file path containing a VirtualRobot RobotNodeSet that defines the joints
+ArmarX.KinematicUnitGuiPlugin.RobotFileName=Armar4/data/robotmodel/ArmarIV.xml
+# node set name
+ArmarX.KinematicUnitGuiPlugin.RobotNodeSetName=Robot
+ArmarX.KinematicUnitGuiPlugin.KinematicUnitName=Armar4KinematicUnit
diff --git a/scenarios/MovePlatformTest/configs/ConditionHandler.cfg b/scenarios/MovePlatformTest/configs/ConditionHandler.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3bb2beb8145f198ecfbdd70005c24fe002562c4f
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/ConditionHandler.cfg
@@ -0,0 +1,92 @@
+# ==================================================================
+# ArmarX properties
+# ==================================================================
+
+# ArmarX.CachePath:  Path for cache files
+#  Attributes:
+#  - Default:            .cache
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.CachePath = .cache
+
+
+# ArmarX.DataPath:  Semicolon-separated search list for data files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.DataPath = ""
+
+
+# ArmarX.Verbosity:  Global logging level for whole application
+#  Attributes:
+#  - Default:            Verbose
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
+# ArmarX.Verbosity = Verbose
+
+
+# ArmarX.DisableLogging:  Turn logging off in whole application
+#  Attributes:
+#  - Default:            0
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {0, 1, false, no, true, yes}
+# ArmarX.DisableLogging = 0
+
+
+# ArmarX.ApplicationName:  Application name
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ApplicationName = ""
+
+
+# ArmarX.Config:  Comma-separated list of configuration files 
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.Config = ""
+
+
+# ==================================================================
+# ArmarX.ConditionHandler properties
+# ==================================================================
+
+# ArmarX.ConditionHandler.HistoryLength:  Length of condition history kept by the conditionhandler
+#  Attributes:
+#  - Default:            1000
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ConditionHandler.HistoryLength = 1000
+
+
+# ArmarX.ConditionHandler.Observers:  Comma seperated observer list
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ConditionHandler.Observers = ""
+
+
+# ArmarX.ConditionHandler.MinimumLoggingLevel:  Local logging level only for this component
+#  Attributes:
+#  - Default:            Undefined
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Error, Fatal, Info, Undefined, Verbose, Warning}
+# ArmarX.ConditionHandler.MinimumLoggingLevel = Undefined
+
+
+# ArmarX.ConditionHandler.ObjectName:  Name of IceGrid well-known object
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ConditionHandler.ObjectName = ""
+
+
+
diff --git a/scenarios/MovePlatformTest/configs/Global.cfg b/scenarios/MovePlatformTest/configs/Global.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..77927624693f052359958908ce6d8a1bb0e6bc4f
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/Global.cfg
@@ -0,0 +1,5 @@
+ArmarX.DisableLogging = no
+VisionX.DisableLogging = no
+
+ArmarX.GlobalMinimumLoggingLevel = Verbose
+VisionX.GlobalMinimumLoggingLevel = Verbose
diff --git a/scenarios/MovePlatformTest/configs/MovePlatformExample.xml b/scenarios/MovePlatformTest/configs/MovePlatformExample.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3cc6e32ffc0257a9b33d627f6afe3a3d128c56fd
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/MovePlatformExample.xml
@@ -0,0 +1,48 @@
+<MovePlatformStateChart>
+  <StateParameters>
+    <!--
+    x/y are in mm
+    for now z=rotation around z axis in radian
+    -->
+    <targetPositions>
+        <Item0>
+            <x>0</x>
+            <y>0</y>
+            <z>0</z>
+        </Item0>
+        <Item1>
+            <x>0</x>
+            <y>10000</y>
+            <z>0</z>
+        </Item1>
+        <Item2>
+            <x>0</x>
+            <y>10000</y>
+            <z>1</z>
+        </Item2>
+        <Item3>
+            <x>-3000</x>
+            <y>5000</y>
+            <z>1</z>
+        </Item3>
+        <Item4>
+            <x>0</x>
+            <y>0</y>
+            <z>0</z>
+        </Item4>
+    </targetPositions>
+
+    <!--unreachable-->
+    <!--targetPositions>
+        <Item0>
+            <x>5000</x>
+            <y>5000</y>
+            <z>0</z>
+        </Item0>
+    </targetPositions-->
+    <positionalAccuracy>10</positionAccuracy> <!--mm-->
+    <orientationalAccuracy>0.1</orientationAccuracy> <!--rad-->
+    <timeoutMoveTo>30000</timeoutMoveTO>
+  </StateParameters>
+</MovePlatformStateChart>
+
diff --git a/scenarios/MovePlatformTest/configs/PlatformUnitObserver.cfg b/scenarios/MovePlatformTest/configs/PlatformUnitObserver.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5fafd2950db0ef2b16a91dcb0c7996564af6e4c8
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/PlatformUnitObserver.cfg
@@ -0,0 +1,62 @@
+# ==================================================================
+# ArmarX properties
+# ==================================================================
+
+# ArmarX.CachePath:  Path for cache files
+#  Attributes:
+#  - Default:            .cache
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.CachePath = .cache
+
+
+# ArmarX.DataPath:  Semicolon-separated search list for data files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.DataPath = ""
+
+
+# ArmarX.Verbosity:  Global logging level for whole application
+#  Attributes:
+#  - Default:            Verbose
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
+# ArmarX.Verbosity = Verbose
+
+
+# ArmarX.DisableLogging:  Turn logging off in whole application
+#  Attributes:
+#  - Default:            0
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {0, 1, false, no, true, yes}
+# ArmarX.DisableLogging = 0
+
+
+# ArmarX.ApplicationName:  Application name
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ApplicationName = ""
+
+
+# ArmarX.Config:  Comma-separated list of configuration files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.Config = ""
+
+
+# ==================================================================
+# ArmarX.PlatformUnitObserver properties
+# ==================================================================
+
+ArmarX.PlatformUnitObserver.PlatformName=Platform
+
+
+
diff --git a/scenarios/MovePlatformTest/configs/RobotControl.cfg b/scenarios/MovePlatformTest/configs/RobotControl.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a5a0610eddf235a4011b5fdb0eb4370ed621ae0a
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/RobotControl.cfg
@@ -0,0 +1,76 @@
+# ==================================================================
+# ArmarX properties
+# ==================================================================
+
+# ArmarX.CachePath:  Path for cache files
+#  Attributes:
+#  - Default:            .cache
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.CachePath = .cache
+
+
+# ArmarX.DataPath:  Semicolon-separated search list for data files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.DataPath = ""
+
+
+# ArmarX.Verbosity:  Global logging level for whole application
+#  Attributes:
+#  - Default:            Verbose
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
+# ArmarX.Verbosity = Verbose
+
+
+# ArmarX.DisableLogging:  Turn logging off in whole application
+#  Attributes:
+#  - Default:            0
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {0, 1, false, no, true, yes}
+# ArmarX.DisableLogging = 0
+
+
+# ArmarX.ApplicationName:  Application name
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ApplicationName = ""
+
+
+# ArmarX.Config:  Comma-separated list of configuration files 
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.Config = ""
+
+
+# ==================================================================
+# ArmarX.RobotControlStateOfferer properties
+# ==================================================================
+
+# ArmarX.RobotControlStateOfferer.MinimumLoggingLevel:  Local logging level only for this component
+#  Attributes:
+#  - Default:            Undefined
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Error, Fatal, Info, Undefined, Verbose, Warning}
+# ArmarX.RobotControlStateOfferer.MinimumLoggingLevel = Undefined
+
+
+# ArmarX.RobotControlStateOfferer.ObjectName:  Name of IceGrid well-known object
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.RobotControlStateOfferer.ObjectName = ""
+
+
+
diff --git a/scenarios/MovePlatformTest/configs/RobotStateComponent.cfg b/scenarios/MovePlatformTest/configs/RobotStateComponent.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a8bebf523bce918dc1322f5955994f3cf93eb95b
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/RobotStateComponent.cfg
@@ -0,0 +1,91 @@
+setting colored console to deactivated
+# ==================================================================
+# ArmarX properties
+# ==================================================================
+
+# ArmarX.CachePath:  Path for cache files
+#  Attributes:
+#  - Default:            .cache
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.CachePath = .cache
+
+
+# ArmarX.DataPath:  Semicolon-separated search list for data files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.DataPath = ""
+
+
+# ArmarX.Verbosity:  Global logging level for whole application
+#  Attributes:
+#  - Default:            Verbose
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
+# ArmarX.Verbosity = Verbose
+
+
+# ArmarX.DisableLogging:  Turn logging off in whole application
+#  Attributes:
+#  - Default:            0
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {0, 1, false, no, true, yes}
+# ArmarX.DisableLogging = 0
+
+
+# ArmarX.ApplicationName:  Application name
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ApplicationName = ""
+
+
+# ArmarX.Config:  Comma-separated list of configuration files 
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.Config = ""
+
+
+# ==================================================================
+# ArmarX.RobotStateComponent properties
+# ==================================================================
+
+# ArmarX.RobotStateComponent.RobotFileName:  Filename of VirtualRobot robot model (e.g. robot_model.xml)
+#  Attributes:
+#  - Case sensitivity:   no
+#  - Required:           yes
+ArmarX.RobotStateComponent.RobotFileName =Armar3/data/robotmodel/ArmarIII.xml
+
+
+# ArmarX.RobotStateComponent.RobotNodeSetName:  Set of nodes that is controlled by the KinematicUnit
+#  Attributes:
+#  - Case sensitivity:   no
+#  - Required:           yes
+ArmarX.RobotStateComponent.RobotNodeSetName =Robot
+
+
+# ArmarX.RobotStateComponent.MinimumLoggingLevel:  Local logging level only for this component
+#  Attributes:
+#  - Default:            Undefined
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Error, Fatal, Info, Undefined, Verbose, Warning}
+# ArmarX.RobotStateComponent.MinimumLoggingLevel = Undefined
+
+
+# ArmarX.RobotStateComponent.ObjectName:  Name of IceGrid well-known object
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.RobotStateComponent.ObjectName = ""
+
+
+
diff --git a/scenarios/MovePlatformTest/configs/SystemObserver.cfg b/scenarios/MovePlatformTest/configs/SystemObserver.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1347203c6bbb6d49bef0b13e1031aee2ca1e0155
--- /dev/null
+++ b/scenarios/MovePlatformTest/configs/SystemObserver.cfg
@@ -0,0 +1,76 @@
+# ==================================================================
+# ArmarX properties
+# ==================================================================
+
+# ArmarX.CachePath:  Path for cache files
+#  Attributes:
+#  - Default:            .cache
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.CachePath = .cache
+
+
+# ArmarX.DataPath:  Semicolon-separated search list for data files
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.DataPath = ""
+
+
+# ArmarX.Verbosity:  Global logging level for whole application
+#  Attributes:
+#  - Default:            Verbose
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Debug, Error, Fatal, Important, Info, Undefined, Verbose, Warning}
+# ArmarX.Verbosity = Verbose
+
+
+# ArmarX.DisableLogging:  Turn logging off in whole application
+#  Attributes:
+#  - Default:            0
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {0, 1, false, no, true, yes}
+# ArmarX.DisableLogging = 0
+
+
+# ArmarX.ApplicationName:  Application name
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.ApplicationName = ""
+
+
+# ArmarX.Config:  Comma-separated list of configuration files 
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.Config = ""
+
+
+# ==================================================================
+# ArmarX.SystemObserver properties
+# ==================================================================
+
+# ArmarX.SystemObserver.MinimumLoggingLevel:  Local logging level only for this component
+#  Attributes:
+#  - Default:            Undefined
+#  - Case sensitivity:   no
+#  - Required:           no
+#  - Possible values: {Error, Fatal, Info, Undefined, Verbose, Warning}
+# ArmarX.SystemObserver.MinimumLoggingLevel = Undefined
+
+
+# ArmarX.SystemObserver.ObjectName:  Name of IceGrid well-known object
+#  Attributes:
+#  - Default:            ""
+#  - Case sensitivity:   no
+#  - Required:           no
+# ArmarX.SystemObserver.ObjectName = ""
+
+
+
diff --git a/scenarios/MovePlatformTest/startCompleteScenario.sh b/scenarios/MovePlatformTest/startCompleteScenario.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1db6ae44d9d5a535ba1f35880f882cd9370a0e42
--- /dev/null
+++ b/scenarios/MovePlatformTest/startCompleteScenario.sh
@@ -0,0 +1,25 @@
+
+export CORE_PATH=../../../Core
+export GUI_PATH=../../../Gui
+export VISIONX_PATH=../..././VisionX
+export ARMAR4_PATH=../../../Armar4
+export HUMANOIDROBOTAPI_PATH=../../../RobotAPI
+export SCRIPT_PATH=$CORE_PATH/build/bin
+export SIMULATION_PATH=../../../SimulationX
+
+export CORE_BIN_PATH=$CORE_PATH/build/bin
+export GUI_BIN_PATH=$GUI_PATH/build/bin
+export VISIONX_BIN_PATH=$VISIONX_PATH/build/bin
+export ARMAR4_BIN_PATH=$ARMAR4_PATH/build/bin
+export HUMANOIDROBOTAPI_BIN_PATH=$HUMANOIDROBOTAPI_PATH/build/bin
+
+export GLOBAL_CONFIG=./configs/Global.cfg
+
+# armarx components
+$SIMULATION_PATH/scenarios/startScenario.sh
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/PlatformUnitObserverRun --Ice.Config=$GLOBAL_CONFIG,./configs/PlatformUnitObserver.cfg &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/SystemObserverRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/RobotStateComponentRun --Ice.Config=$SIMULATION_PATH/scenarios/SimulatorGui/configs/Armar3KinematicUnit.cfg,./configs/RobotStateComponent.cfg &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/RobotControlRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/ConditionHandlerRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $HUMANOIDROBOTAPI_BIN_PATH/MovePlatformAppRun --Ice.Config=$GLOBAL_CONFIG &
diff --git a/scenarios/MovePlatformTest/startScenario.sh b/scenarios/MovePlatformTest/startScenario.sh
new file mode 100755
index 0000000000000000000000000000000000000000..692d33539515cc31b7d07eff47102d9205058f78
--- /dev/null
+++ b/scenarios/MovePlatformTest/startScenario.sh
@@ -0,0 +1,24 @@
+
+export CORE_PATH=../../../Core
+export GUI_PATH=../../../Gui
+export VISIONX_PATH=../..././VisionX
+export ARMAR4_PATH=../../../Armar4
+export HUMANOIDROBOTAPI_PATH=../../../RobotAPI
+export SCRIPT_PATH=$CORE_PATH/build/bin
+export SIMULATION_PATH=../../../SimulationX
+
+export CORE_BIN_PATH=$CORE_PATH/build/bin
+export GUI_BIN_PATH=$GUI_PATH/build/bin
+export VISIONX_BIN_PATH=$VISIONX_PATH/build/bin
+export ARMAR4_BIN_PATH=$ARMAR4_PATH/build/bin
+export HUMANOIDROBOTAPI_BIN_PATH=$HUMANOIDROBOTAPI_PATH/build/bin
+
+export GLOBAL_CONFIG=./configs/Global.cfg
+
+# armarx components
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/PlatformUnitObserverRun --Ice.Config=$GLOBAL_CONFIG,./configs/PlatformUnitObserver.cfg &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/SystemObserverRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/RobotStateComponentRun --Ice.Config=$SIMULATION_PATH/scenarios/SimulatorGui/configs/Armar3KinematicUnit.cfg,./configs/RobotStateComponent.cfg &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/RobotControlRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/ConditionHandlerRun --Ice.Config=$GLOBAL_CONFIG &
+$SCRIPT_PATH/startApplication.sh $HUMANOIDROBOTAPI_BIN_PATH/MovePlatformAppRun --Ice.Config=$GLOBAL_CONFIG &
diff --git a/scenarios/MovePlatformTest/stopCompleteScenario.sh b/scenarios/MovePlatformTest/stopCompleteScenario.sh
new file mode 100755
index 0000000000000000000000000000000000000000..724fb3e6881ab9a7738a054f07ceb348eed54593
--- /dev/null
+++ b/scenarios/MovePlatformTest/stopCompleteScenario.sh
@@ -0,0 +1,33 @@
+
+skill ()
+{
+	STR=`ps aux | grep -re "$1 --Ice.Default" | grep -v grep | awk '{print $2}'`
+	if [ ${#STR} == 0 ]
+		then
+			echo skipping $1
+		else
+			echo killing $1
+			kill -s $2 `ps aux | grep -re "$1 --Ice.Default" | grep -v grep | awk '{print $2}'`
+	fi
+}
+
+echo SENDING SIGINT TO ALL PROCESSES
+../../../SimulationX/scenarios/stopScenario.sh
+skill PlatformUnitObserverRun 2
+skill SystemObserverRun 2
+skill ConditionHandlerRun 2
+skill RobotStateComponentRun 2
+skill RobotControlRun 2
+
+skill MovePlatformAppRun 2
+
+sleep 1
+
+echo SENDING SIGKILL TO ALL PROCESSES
+skill PlatformUnitObserverRun 9
+skill SystemObserverRun 9
+skill ConditionHandlerRun 9
+skill RobotStateComponentRun 9
+skill RobotControlRun 9
+
+skill MovePlatformAppRun 9
diff --git a/scenarios/MovePlatformTest/stopScenario.sh b/scenarios/MovePlatformTest/stopScenario.sh
new file mode 100755
index 0000000000000000000000000000000000000000..dd06a410998e787e6c1a81a07d7305642043572d
--- /dev/null
+++ b/scenarios/MovePlatformTest/stopScenario.sh
@@ -0,0 +1,32 @@
+
+skill ()
+{
+	STR=`ps aux | grep -re "$1 --Ice.Default" | grep -v grep | awk '{print $2}'`
+	if [ ${#STR} == 0 ]
+		then
+			echo skipping $1
+		else
+			echo killing $1
+			kill -s $2 `ps aux | grep -re "$1 --Ice.Default" | grep -v grep | awk '{print $2}'`
+	fi
+}
+
+echo SENDING SIGINT TO ALL PROCESSES
+skill PlatformUnitObserverRun 2
+skill SystemObserverRun 2
+skill ConditionHandlerRun 2
+skill RobotStateComponentRun 2
+skill RobotControlRun 2
+
+skill MovePlatformAppRun 2
+
+sleep 1
+
+echo SENDING SIGKILL TO ALL PROCESSES
+skill PlatformUnitObserverRun 9
+skill SystemObserverRun 9
+skill ConditionHandlerRun 9
+skill RobotStateComponentRun 9
+skill RobotControlRun 9
+
+skill MovePlatformAppRun 9
diff --git a/source/RobotAPI/CMakeLists.txt b/source/RobotAPI/CMakeLists.txt
index 59796017c05137bcf7667a83e6cd36006671660c..9df5d8923e062c172471d5b0ce70462009c92e71 100644
--- a/source/RobotAPI/CMakeLists.txt
+++ b/source/RobotAPI/CMakeLists.txt
@@ -4,4 +4,5 @@ add_subdirectory(applications)
 add_subdirectory(units)
 #add_subdirectory(armarx-objects)
 add_subdirectory(statecharts)
+add_subdirectory(MovePlatform)
 
diff --git a/source/RobotAPI/MovePlatform/CMakeLists.txt b/source/RobotAPI/MovePlatform/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4934e7fa089906cf3ae41eb6c2cac1d07af1972d
--- /dev/null
+++ b/source/RobotAPI/MovePlatform/CMakeLists.txt
@@ -0,0 +1,29 @@
+armarx_set_target("RobotAPI Library: MovePlatform")
+
+
+find_package(Eigen3 QUIET)
+find_package(Simox QUIET)
+
+armarx_build_if(Eigen3_FOUND "Eigen3 not available")
+armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available")
+
+if (Eigen3_FOUND AND Simox_FOUND)
+    include_directories(
+        ${Eigen3_INCLUDE_DIR}
+        ${Simox_INCLUDE_DIRS})
+endif()
+
+set(LIB_NAME       MovePlatform)
+set(LIB_VERSION    0.1.0)
+set(LIB_SOVERSION  0)
+
+set(LIBS RobotAPICore RobotAPIInterfaces ArmarXInterfaces ArmarXCore ArmarXCoreObservers)
+
+set(LIB_FILES MovePlatform.cpp
+     )
+set(LIB_HEADERS 
+	MovePlatform.h
+	PlatformContext.h
+)
+
+armarx_add_library("${LIB_NAME}" "${LIB_VERSION}" "${LIB_SOVERSION}" "${LIB_FILES}" "${LIB_HEADERS}" "${LIBS}")
diff --git a/source/RobotAPI/MovePlatform/MovePlatform.cpp b/source/RobotAPI/MovePlatform/MovePlatform.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..208bc51e5673d0da97c408aac3e3f68c83368238
--- /dev/null
+++ b/source/RobotAPI/MovePlatform/MovePlatform.cpp
@@ -0,0 +1,144 @@
+/**
+* This file is part of ArmarX.
+*
+* ArmarX is free software; you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License, or (at your option) any later version.
+*
+* ArmarX is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* @package    RobotAPI::MovePlatform
+* @author     Valerij Wittenbeck
+* @date       2014
+
+* @copyright  http://www.gnu.org/licenses/gpl.txt
+*             GNU General Public License
+*/
+
+#include "MovePlatform.h"
+//#include "../core/RobotStatechartContext.h"
+
+#include <Core/observers/variant/ChannelRef.h>
+#include <Core/observers/variant/SingleTypeVariantList.h>
+#include <Core/robotstate/remote/ArmarPose.h>
+#include <VirtualRobot/IK/DifferentialIK.h>
+
+#include <Core/interface/units/PlatformUnitInterface.h>
+
+namespace armarx
+{
+
+
+    void MovePlatformStateChart::onInitRemoteStateOfferer()
+    {
+        addState<StatechartMovePlatform>("MovePlatformStateChart");
+    }
+
+    void MovePlatformStateChart::onConnectRemoteStateOfferer()
+    {
+
+    }
+
+    // ****************************************************************
+    // Implementation of StatechartMovePlatform
+    // ****************************************************************
+    void StatechartMovePlatform::defineParameters()
+    {
+        setConfigFile("RobotAPI/scenarios/MovePlatformTest/configs/MovePlatformExample.xml");
+
+        addToInput("targetPositions", VariantType::List(VariantType::Vector3), false);
+        addToInput("positionalAccuracy", VariantType::Float, false);
+        addToInput("orientationalAccuracy", VariantType::Float, false);
+        addToInput("timeoutMoveTo", VariantType::Int, false);
+        addToLocal("positionCounter", VariantType::ChannelRef);
+    }
+
+    void StatechartMovePlatform::defineSubstates()
+    {
+        StatePtr stateMoveToNext = addState<StateMoveToNext>("stateMoveToNext");
+        StatePtr stateSuccess = addState<SuccessState>("stateSuccess");
+        StatePtr stateFailure = addState<FailureState>("stateFailure");
+
+        ParameterMappingPtr mapMoveToNextInfo = ParameterMapping::createMapping()
+                ->mapFromParent("*", "*");
+        setInitState(stateMoveToNext, mapMoveToNextInfo);
+
+        //transitions
+        addTransition<EvTargetReached>(stateMoveToNext, stateMoveToNext, mapMoveToNextInfo);
+        addTransition<EvNoTargets>(stateMoveToNext, stateSuccess);
+        addTransition<EvTimeoutTargetUnreachable>(stateMoveToNext, stateFailure);
+    }
+
+    void StatechartMovePlatform::onEnter()
+    {
+        ARMARX_LOG << eVERBOSE << "Entering StatechartMovePlatform";
+
+        PlatformContext* context = getContext<PlatformContext>();
+        ChannelRefPtr counter = ChannelRefPtr::dynamicCast(context->systemObserverPrx->startCounter(0, "positionCounter"));
+
+        setLocal("positionCounter", counter);
+    }
+
+    void StatechartMovePlatform::onExit()
+    {
+        ChannelRefPtr r = getLocal<ChannelRef>("positionCounter");
+        getContext()->systemObserverPrx->removeCounter(r);
+        ARMARX_LOG << eVERBOSE << "Exiting StatechartMovePlatform...";
+    }
+
+    // ****************************************************************
+    // Implementation of StateMoveToNext
+    // ****************************************************************
+
+    void StateMoveToNext::defineParameters()
+    {
+        addToInput("targetPositions", VariantType::List(VariantType::Vector3), false);
+        addToInput("positionalAccuracy", VariantType::Float, false);
+        addToInput("orientationalAccuracy", VariantType::Float, false);
+        addToInput("timeoutMoveTo", VariantType::Int, false);
+        addToInput("positionCounter", VariantType::ChannelRef, false);
+    }
+
+    void StateMoveToNext::onEnter()
+    {
+        ARMARX_LOG << eVERBOSE << "Entering StateMoveToNext::onEnter";
+        PlatformContext* context = getContext<PlatformContext>();
+        ChannelRefPtr counter = getInput<ChannelRef>("positionCounter");
+        int positionIndex = counter->getDataField("value")->getInt();
+
+        SingleTypeVariantListPtr points = getInput<SingleTypeVariantList>("targetPositions");
+        if (positionIndex < points->getSize()) {
+            Vector3Ptr currentTarget = getInput<SingleTypeVariantList>("targetPositions")->getVariant(positionIndex)->get<Vector3>();
+            float positionalAccuracy = getInput<float>("positionalAccuracy");
+            float orientationalAccuracy = getInput<float>("orientationalAccuracy");
+            context->platformUnitPrx->moveTo(currentTarget->x, currentTarget->y, currentTarget->z, positionalAccuracy, orientationalAccuracy);
+
+            Literal checkX("PlatformUnitObserver.platformPose.positionX", "inrange", Literal::createParameterList(currentTarget->x-positionalAccuracy,currentTarget->x+positionalAccuracy));
+            Literal checkY("PlatformUnitObserver.platformPose.positionY", "inrange", Literal::createParameterList(currentTarget->y-positionalAccuracy,currentTarget->y+positionalAccuracy));
+            Literal checkAngle("PlatformUnitObserver.platformPose.rotation", "inrange", Literal::createParameterList(currentTarget->z-orientationalAccuracy,currentTarget->z+orientationalAccuracy));
+
+            condTargetReached = installCondition<EvTargetReached>(checkX && checkY && checkAngle);
+            timeoutMoveToNext = setTimeoutEvent(getInput<int>("timeoutMoveTo"), createEvent<EvTimeoutTargetUnreachable>());
+        } else {
+            sendEvent<EvNoTargets>();
+        }
+
+        context->systemObserverPrx->incrementCounter(counter);
+        ARMARX_LOG << eVERBOSE << "Done MoveToNext::onEnter()";
+    }
+
+    void StateMoveToNext::onExit()
+    {
+        removeCondition(condTargetReached);
+        removeTimeoutEvent(timeoutMoveToNext);
+        ARMARX_LOG << eVERBOSE << "StateMoveToNext: Done onExit()";
+    }
+}
+
diff --git a/source/RobotAPI/MovePlatform/MovePlatform.h b/source/RobotAPI/MovePlatform/MovePlatform.h
new file mode 100644
index 0000000000000000000000000000000000000000..e2bb6aed55aa318897d835447d1b61e49b37de52
--- /dev/null
+++ b/source/RobotAPI/MovePlatform/MovePlatform.h
@@ -0,0 +1,82 @@
+/**
+* This file is part of ArmarX.
+*
+* ArmarX is free software; you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License, or (at your option) any later version.
+*
+* ArmarX is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* @package    RobotAPI::GraspingWithTorques
+* @author     Markus Przybylski
+* @date       2014 Markus Przybylski
+* @copyright  http://www.gnu.org/licenses/gpl.txt
+*             GNU General Public License
+*/
+
+#ifndef ARMARX_COMPONENT_MOVE_PLATFORM_H
+#define ARMARX_COMPONENT_MOVE_PLATFORM_H
+
+#include <Core/statechart/Statechart.h>
+#include <RobotAPI/MovePlatform/PlatformContext.h>
+
+namespace armarx
+{
+    class MovePlatformStateChart : public RemoteStateOfferer<PlatformContext>
+    {
+    public:
+        void onInitRemoteStateOfferer();
+        void onConnectRemoteStateOfferer();
+        std::string getStateOffererName() const { return "MovePlatformStateChart"; }
+    };
+
+    // ****************************************************************
+    // Events
+    // ****************************************************************
+
+//    DEFINEEVENT(EvSuccess)
+    DEFINEEVENT(EvTimeoutTargetUnreachable)
+    DEFINEEVENT(EvNoTargets)
+    DEFINEEVENT(EvTargetReached)
+
+    // ****************************************************************
+    // Definition of StatechartMovePlatform
+    // ****************************************************************
+    struct StatechartMovePlatform :
+        StateTemplate<StatechartMovePlatform>
+    {
+        void defineParameters();
+        void defineSubstates();
+        void onEnter();
+        void onExit();
+
+    };
+
+    // ****************************************************************
+    // Definition of StateMoveToNext
+    // ****************************************************************
+    /**
+     * StateMoveToNext: Move to next target in list
+     */
+
+    struct StateMoveToNext :
+        StateTemplate<StateMoveToNext>
+    {
+        void defineParameters();
+        void onEnter();
+        void onExit();
+
+        ConditionIdentifier condTargetReached;
+        StateUtility::ActionEventIdentifier timeoutMoveToNext;
+    };
+
+}
+
+#endif
diff --git a/source/RobotAPI/MovePlatform/PlatformContext.h b/source/RobotAPI/MovePlatform/PlatformContext.h
new file mode 100644
index 0000000000000000000000000000000000000000..f30d54ce523d7a1dd0d07fa39db9d96eb5373483
--- /dev/null
+++ b/source/RobotAPI/MovePlatform/PlatformContext.h
@@ -0,0 +1,111 @@
+/**
+* This file is part of ArmarX.
+*
+* ArmarX is free software; you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License, or (at your option) any later version.
+*
+* ArmarX is distributed in the hope that it will be useful, but
+* WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* @package    RobotAPI::MovePlatform
+* @author     Valerij Wittenbeck
+* @date       2014
+* @copyright  http://www.gnu.org/licenses/gpl.txt
+*             GNU General Public License
+*/
+
+
+#ifndef ARMARX_COMPONENT_PlatformContext_H
+#define ARMARX_COMPONENT_PlatformContext_H
+
+#include <Core/core/Component.h>
+#include <Core/core/system/ImportExportComponent.h>
+#include <Core/statechart/StatechartContext.h>
+#include <Core/robotstate/remote/RemoteRobot.h>
+#include <Core/interface/units/PlatformUnitInterface.h>
+
+#include <Core/units/PlatformUnitObserver.h>
+//#include <VirtualRobot/VirtualRobot.h>
+#include <IceUtil/Time.h>
+
+namespace armarx
+{
+
+    // ****************************************************************
+    // Component and context
+    // ****************************************************************
+
+    struct PlatformContextProperties : StatechartContextPropertyDefinitions
+    {
+        PlatformContextProperties(std::string prefix):
+            StatechartContextPropertyDefinitions(prefix)
+        {
+            defineOptionalProperty<std::string>("PlatformUnitName", "PlatformUnitDynamicSimulation", "Name of the PlatformUnit to use");
+            defineOptionalProperty<std::string>("PlatformUnitObserverName", "PlatformUnitObserver", "Name of the PlatformUnitObserver to use");
+        }
+    };
+    class ARMARXCOMPONENT_IMPORT_EXPORT PlatformContext :
+        virtual public StatechartContext
+    {
+    public:
+        // inherited from Component
+        virtual std::string getDefaultName() { return "PlatformContext"; }
+        virtual void onInitStatechartContext()
+        {
+            ARMARX_LOG << eINFO << "Init PlatformContext" << flush;
+
+            platformUnitObserverName = getProperty<std::string>("PlatformUnitObserverName").getValue();
+            platformUnitDynamicSimulationName = getProperty<std::string>("PlatformUnitName").getValue();
+
+            // usingProxy(getProperty<std::string>("PlatformUnitName").getValue());
+            usingProxy(platformUnitDynamicSimulationName);
+            usingProxy("RobotStateComponent");
+            usingProxy(platformUnitObserverName);
+        }
+
+        virtual void onConnectStatechartContext()
+        {
+            ARMARX_LOG << eINFO << "Starting PlatformContext" << flush;
+
+            // retrieve proxies
+            robotStateComponent = getProxy<RobotStateComponentInterfacePrx>("RobotStateComponent");
+            platformUnitPrx = getProxy<PlatformUnitInterfacePrx>(platformUnitDynamicSimulationName);
+            platformUnitObserverPrx = getProxy<PlatformUnitObserverInterfacePrx>(platformUnitObserverName);
+            ARMARX_LOG << eINFO << "Fetched proxies" <<  platformUnitPrx << " " << platformUnitObserverPrx << " " << robotStateComponent << flush;
+
+            // initialize remote robot
+            remoteRobot.reset(new RemoteRobot(robotStateComponent->getSynchronizedRobot()));
+            ARMARX_LOG << eINFO << "Created remote robot" << flush;
+        }
+
+
+        /**
+         * @see PropertyUser::createPropertyDefinitions()
+         */
+        virtual PropertyDefinitionsPtr createPropertyDefinitions()
+        {
+            return PropertyDefinitionsPtr(new PlatformContextProperties(
+                                                   getConfigIdentifier()));
+        }
+        std::string getPlatformUnitObserverName() { return platformUnitObserverName; }
+
+        //! Prx for the RobotState
+        RobotStateComponentInterfacePrx robotStateComponent;
+        PlatformUnitInterfacePrx platformUnitPrx;
+        PlatformUnitObserverInterfacePrx platformUnitObserverPrx;
+        //SystemObserverInterfacePrx	systemObserver; // already defined in StatechartContext
+        VirtualRobot::RobotPtr remoteRobot;
+    private:
+        std::string platformUnitObserverName;
+        std::string platformUnitDynamicSimulationName;
+    };
+}
+
+#endif
diff --git a/source/RobotAPI/applications/CMakeLists.txt b/source/RobotAPI/applications/CMakeLists.txt
index 578f1ace321c1843e987fc1151db6e1362cf3c7e..b0e4dc610e6a98332b4ae91b0c0bdfb8ced7d0d3 100644
--- a/source/RobotAPI/applications/CMakeLists.txt
+++ b/source/RobotAPI/applications/CMakeLists.txt
@@ -2,4 +2,4 @@
 add_subdirectory(ForceTorqueObserver)
 add_subdirectory(MotionControlTest)
 add_subdirectory(TCPControlUnit)
-
+add_subdirectory(MovePlatform)
diff --git a/source/RobotAPI/applications/MovePlatform/CMakeLists.txt b/source/RobotAPI/applications/MovePlatform/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1f767fbf93c4ecabd098a863fdd4582b62356c1e
--- /dev/null
+++ b/source/RobotAPI/applications/MovePlatform/CMakeLists.txt
@@ -0,0 +1,30 @@
+#test case to move platform to prespecified positions
+
+armarx_component_set_name(MovePlatformApp)
+
+find_package(Eigen3 QUIET)
+find_package(Simox QUIET)
+
+armarx_build_if(Eigen3_FOUND "Eigen3 not available")
+armarx_build_if(Simox_FOUND "Simox not available")
+#armarx_build_if(MemoryX_FOUND "VisionX not available")
+
+include_directories(${Eigen3_INCLUDE_DIR} ${Simox_INCLUDE_DIRS})
+
+set(COMPONENT_LIBS
+                   MovePlatform
+                   ArmarXInterfaces
+                   ArmarXCore
+                   ArmarXCoreStatechart
+                   ArmarXCoreObservers
+                   ArmarXCoreOperations
+                   ArmarXCoreRemoteRobot
+                   #MemoryXInterfaces
+                   #MemoryXCore
+                   #MemoryXMemoryTypes
+                   ${Simox_LIBRARIES})
+
+set(SOURCES main.cpp
+    MovePlatformApp.h)
+
+armarx_add_component_executable("${SOURCES}")
diff --git a/source/RobotAPI/applications/MovePlatform/MovePlatformApp.h b/source/RobotAPI/applications/MovePlatform/MovePlatformApp.h
new file mode 100644
index 0000000000000000000000000000000000000000..4fc8b6b74c17dd17c85841e7ae33b3b99167dbf4
--- /dev/null
+++ b/source/RobotAPI/applications/MovePlatform/MovePlatformApp.h
@@ -0,0 +1,48 @@
+/**
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::applications::MovePlatform
+ * @author     Valerij Wittenbeck
+ * @date       2014
+ * @copyright  http://www.gnu.org/licenses/gpl.txt
+ *             GNU General Public License
+ */
+
+#ifndef _ARMARX_APPLICATION_MovePlatform_H
+#define _ARMARX_APPLICATION_MovePlatform_H
+
+
+#include <RobotAPI/MovePlatform/MovePlatform.h>
+
+#include <Core/core/application/Application.h>
+
+namespace armarx
+{
+    class MovePlatformApp :
+        virtual public armarx::Application
+    {
+        /**
+         * @see armarx::Application::setup()
+         */
+        void setup(const ManagedIceObjectRegistryInterfacePtr& registry,
+                   Ice::PropertiesPtr properties)
+        {
+            registry->addObject( Component::create<MovePlatformStateChart>(properties) );
+        }
+    };
+}
+
+#endif
diff --git a/source/RobotAPI/applications/MovePlatform/main.cpp b/source/RobotAPI/applications/MovePlatform/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..435aeb57b48acaf36c6d8aa8362348f7aaa36fe8
--- /dev/null
+++ b/source/RobotAPI/applications/MovePlatform/main.cpp
@@ -0,0 +1,33 @@
+/**
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::application::MovePlatform
+ * @author     Valerij Wittenbeck
+ * @date       2014
+ * @copyright  http://www.gnu.org/licenses/gpl.txt
+ *             GNU General Public License
+ */
+
+#include "MovePlatformApp.h"
+#include <Core/core/logging/Logging.h>
+
+int main(int argc, char* argv[])
+{
+    armarx::ApplicationPtr app = armarx::Application::createInstance<armarx::MovePlatformApp>();
+    app->setName("MovePlatformApp");
+
+    return app->main(argc, argv);
+}
diff --git a/source/RobotAPI/core/CMakeLists.txt b/source/RobotAPI/core/CMakeLists.txt
index fbd863514af886be08e9d78a68cc0430ceae759d..6f5e670c2bdfe09f914c6e25232b4fb4bd756e16 100644
--- a/source/RobotAPI/core/CMakeLists.txt
+++ b/source/RobotAPI/core/CMakeLists.txt
@@ -19,9 +19,11 @@ set(LIB_SOVERSION  0)
 
 set(LIBS RobotAPIInterfaces ArmarXInterfaces ArmarXCore ArmarXCoreObservers ArmarXCoreStatechart ArmarXCoreRobotStateComponent ${Simox_LIBRARIES})
 
-set(LIB_FILES RobotStatechartContext.cpp
+set(LIB_FILES
+    RobotStatechartContext.cpp
 )
-set(LIB_HEADERS RobotStatechartContext.h
+set(LIB_HEADERS
+    RobotStatechartContext.h
 )
 
 armarx_add_library("${LIB_NAME}" "${LIB_VERSION}" "${LIB_SOVERSION}" "${LIB_FILES}" "${LIB_HEADERS}" "${LIBS}")