Components and Toolchain for Robotics
New video of SmartSoft MDSD Toolchain
New video: The butler scenario.
A new section demonstrates the creation and usage of Gateway components.
SmartSoft MDSD Toolchain 0.10.4 released. Components update released. New Videos available.
New video of our robot "Kate" cleaning up the table.
The ACE based SmartSoft version 1.8.0 is available on Sourceforge. Technical reports available.
Switch to Model Driven Software Development for all published SmartSoft components and communication objects. Many new components published. Getting-Startet-Tutorial added. Toolchain 0.10.2 released.
Description of several components and their services added.
The ACE based SmartSoft version 1.7.2 is available on Sourceforge. ACE / SmartSoft on Sourceforge
SIMPAR 2010: Tutorial on "Model-Driven Software Development in Robotics"
SmartSoft MDSD Toolchain version 0.8.0 released. SmartSoft VMWare on Sourceforge
The new VMWare Image of SmartSoft including the SmartSoft MDSD Toolchain is available for download. SmartSoft VMWare on Sourceforge
WHAT DOES THE FIRST EXAMPLE ?
This examples illustrates the organisation of the communication patterns including the file structure etc. A component provides several services which can be accessed by a client component. By looking at the component description file you get further information on which services a component requires and which one it provides. Look at the Makefile to see how libraries of communication objects needed by a component are linked.
See also Tenth example for dynamic wiring of components and for an active query handler.
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent1 &
# xterm -e bin/smartExampleComponent2 &
WHAT DOES THE SECOND EXAMPLE ?
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent10 &
# xterm -e bin/smartExampleComponent11 &
WHAT DOES THE THIRD EXAMPLE ?
notice the behaviour of the state pattern:
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent20 &
# xterm -e bin/smartExampleComponent21 &
# xterm -e bin/smartExampleComponent22 &
WHAT DOES THE FOURTH EXAMPLE ?
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent30 &
# xterm -e bin/smartExampleComponent31 &
WHAT DOES THE FIFTH EXAMPLE ?
One component provides a cyclic counter in the interval 0 ... 49. The first event fires as soon as the counter is greater than the parameter given by the event activation. If the event fires, it returns the current counter value. This event is used in single and continuous mode. The second event checks whether the current counter value is in the specified interval. It reports only state changes and is therefore used in continuous mode. The second event gives an example of a state based event. The parameter object contains a state which allows to report the current state with the next test of the event condition.
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent40 &
# xterm -e bin/smartExampleComponent41 &
WHAT DOES THE SIXTH EXAMPLE ?
One component simply sends several messages from several threads. The content of the messages is printed by the server component. One component contains time triggered send commands to demonstrate how to register objects at the time service.
Components
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent50 &
# xterm -e bin/smartExampleComponent51 &
# xterm -e bin/smartExampleComponent52 &
WHAT DOES THE SEVENTH EXAMPLE ?
Accept command line arguments and read the parameter file.
Component:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent60 &
WHAT DOES THE EIGHTH EXAMPLE ?
One component regularly provides (every 2 seconds) the current time based on a pushTimed-service. The other component subscribes for an update every second time so it gets an update every 4 seconds.
Components
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent70 &
# xterm -e bin/smartExampleComponent71 &
WHAT DOES THE NINTH EXAMPLE ?
Two components provide exactly the same services which are dynamically connected by a client. When to connect which server is configured from another component. Rewiring is done without taking into account the internal state of the client component. This example is a modified version of the first example.
Components
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent101 &
# xterm -e bin/smartExampleComponent102 &
# xterm -e bin/smartExampleComponent103 &
# xterm -e bin/smartExampleComponent104 &
WHAT DOES THE TENTH EXAMPLE ?
This example illustrates how a component can change its connections by itself using the dynamic wiring capabilities.
Components:
run:
# cd $SMART_ROOT
# xterm -e bin/smartExampleComponent80 &
# xterm -e bin/smartExampleComponent81 &
# xterm -e bin/smartExampleComponent82 &