w4orocos is external WrmOS project that contains OROCOS framework and demonstration application. w4orocos allows to run demo-application on WrmOS and on local host (GNU Linux). This article describe how to build and run w4orocos project.
Contents 1. Running on WrmOS 2. Running on local host (GNU Linux)
1. Running on WrmOS [up]
Step 1.1. Get cross-platform toolchain
See the article How to get toolchain for detail.
Step 1.2. Get WrmOS sources
Clone repository from github:
git clone https://github.com/wrmlab/wrmos.git
or download zip archive.
Step 1.3. Get w4orocos sources
Clone repository from github:
git clone https://github.com/wrmlab/w4orocos.git
or download zip archive.
Step 1.4. Build w4orocos project
Run building of w4orocos project for architecture SPARC and platform LEON3 (it may take a few minutes):
cd w4orocos make build P=cfg/prj/orocos-qemu-leon3.prj W=../wrmos B=../build/orocos-qemu-leon3 -j
As result we will get bootloader image with RAMFS containing orocos.elf:
ls ../build/orocos-qemu-leon3/ldr/bootloader.elf
Step 1.5. Run w4orocos on QEMU virtual machine
qemu-system-sparc -M leon3_generic -display none -serial stdio \ -kernel ../build/orocos-qemu-leon3/ldr/bootloader.elf
As result we will see output:
[ldr] _ _ ___ __ __ ___ ___ [ldr] | | | | _ \ \/ | / _ \/ __| [ldr] | |/\| | / |\/| || (_) \__ \ [ldr] |__/\__|_|_\_| |_(_)___/|___/ [ldr] From Russia with love! [ldr] [ldr] cpu #0/1 ready, sp=0x406299c0. [ldr] [ldr] hello: 14:40:24 Sep 23 2018. [ldr] gccver: 7.3.0. [ldr] hware: sparc, leon3, qemu, qemu_leon3. [ldr] ram: [0x40000000 - 0x48000000) 128 MB. [ldr] ramfs: [0x40259000 - 0x4061b000) 3848 KB. [ldr] ## name data size content [ldr] 1 kernel.elf 0x4025a000 377100 'ELF ...' [ldr] 2 sigma0.elf 0x402b610c 53076 'ELF ...' [ldr] 3 roottask.elf 0x402c3060 164864 'ELF ...' [ldr] 4 config.alph 0x402eb460 1477 '# config ...' [ldr] 5 uart.elf 0x402ec000 87468 'ELF ...' [ldr] 6 console.elf 0x40302000 116020 'ELF ...' [ldr] 7 orocos.elf 0x4031f000 3121928 'ELF ...' [ldr] [ldr] elf: foreach: elf=0x4025a000, sz=0x5c10c. [ldr] app=kernel, va=0x40000000, pa=0x40000000, sz=0x00001000, load=1. [ldr] app=kernel, va=0xf0020000, pa=0x40020000, sz=0x00201000, load=1. [ldr] app=kernel, va=0x00000000, pa=0x00000000, sz=0x00000000, load=0. [ldr] elf: foreach: elf=0x402b610c, sz=0xcf54. [ldr] app=sigma0, addr=0x00000000, sz=0x00000000, acc=0, progbits=0, name=. [ldr] app=sigma0, addr=0x40221000, sz=0x00008000, acc=5, progbits=1, name=.text. [ldr] app=sigma0, addr=0x40229000, sz=0x00001000, acc=4, progbits=1, name=.rodata. [ldr] app=sigma0, addr=0x4022a000, sz=0x00001000, acc=6, progbits=1, name=.data. [ldr] app=sigma0, addr=0x4022b000, sz=0x00004000, acc=6, progbits=1, name=.bss. [ldr] app=sigma0, addr=0x00000000, sz=0x00000010, acc=0, progbits=0, name=.gnu.attributes. [ldr] app=sigma0, addr=0x00000000, sz=0x00000f10, acc=0, progbits=0, name=.symtab. [ldr] app=sigma0, addr=0x00000000, sz=0x00000e86, acc=0, progbits=0, name=.strtab. [ldr] app=sigma0, addr=0x00000000, sz=0x00000044, acc=0, progbits=0, name=.shstrtab. [ldr] app=sigma0, va=0x40221000, pa=0x40221000, sz=0x0000e000, load=1. [ldr] elf: foreach: elf=0x402c3060, sz=0x28400. [ldr] app=roottask, addr=0x00000000, sz=0x00000000, acc=0, progbits=0, name=. [ldr] app=roottask, addr=0x4022f000, sz=0x0001c000, acc=5, progbits=1, name=.text. [ldr] app=roottask, addr=0x4024b000, sz=0x00005000, acc=4, progbits=1, name=.rodata. [ldr] app=roottask, addr=0x40250000, sz=0x00001000, acc=6, progbits=1, name=.data. [ldr] app=roottask, addr=0x40251000, sz=0x00007000, acc=6, progbits=1, name=.bss. [ldr] app=roottask, addr=0x40258000, sz=0x00001000, acc=6, progbits=1, name=.stack. [ldr] app=roottask, addr=0x00000000, sz=0x00000010, acc=0, progbits=0, name=.gnu.attributes. [ldr] app=roottask, addr=0x00000000, sz=0x00001e30, acc=0, progbits=0, name=.symtab. [ldr] app=roottask, addr=0x00000000, sz=0x000033e3, acc=0, progbits=0, name=.strtab. [ldr] app=roottask, addr=0x00000000, sz=0x0000004b, acc=0, progbits=0, name=.shstrtab. [ldr] app=roottask, va=0x4022f000, pa=0x4022f000, sz=0x0002a000, load=1. [ldr] memory regions: [ldr] [40000000 - 40001000) sz=0x00001000, kernel. [ldr] [40020000 - 40221000) sz=0x00201000, kernel. [ldr] [40221000 - 4022f000) sz=0x0000e000, sigma0. [ldr] [4022f000 - 40259000) sz=0x0002a000, roottask. [ldr] [4061b000 - 4062a000) sz=0x0000f000, bootloader. [ldr] [4062a000 - 48000000) sz=0x079d6000, free. [ldr] elf: foreach: elf=0x4025a000, sz=0x5c10c. [ldr] load: loc=0x4025b000, pa=0x40000000, sz=0x00001000, load=1. [ldr] load: loc=0x4025c000, pa=0x40020000, sz=0x00201000, load=1. [ldr] load: loc=0x4025a000, pa=0x00000000, sz=0x00000000, load=0. [ldr] elf: foreach: elf=0x402b610c, sz=0xcf54. [ldr] load: loc=0x402b710c, pa=0x40221000, sz=0x0000e000, load=1. [ldr] elf: foreach: elf=0x402c3060, sz=0x28400. [ldr] load: loc=0x402c4060, pa=0x4022f000, sz=0x0002a000, load=1. [ldr] KIP found at 0x40020000. [ldr] Go to kernel. [----:0.000000] kernel: cpu #0 hello, sp=0xf006cef8. [sgm0:0.006143] inf: hello. [sgm0:0.008882] inf: free memory = 0x79e5000. [alph:0.026613] inf: hello. [alph:0.033401] inf: get memory from sigma0. [alph:0.213193] inf: got memory: 0x79e5000 bytes. [alph:0.216282] inf: Project config: [alph:0.216645] inf: Board config: [alph:0.217010] inf: ## device paddr size irq [alph:0.217526] inf: 0 uart 0x80000100 0x00000100 3 [alph:0.218004] inf: Memory config: [alph:0.218279] inf: ## name size cached contig [alph:0.218659] inf: Apps config: [alph:0.219021] inf: [0] [alph:0.219264] inf: name: uart [alph:0.219572] inf: short_name: uart [alph:0.219876] inf: file: ramfs:/uart.elf [alph:0.220263] inf: stack_sz: 0x1000 [alph:0.220576] inf: heap_sz: 0x4000 [alph:0.220890] inf: max_aspaces: 1 [alph:0.221198] inf: max_threads: 3 [alph:0.221503] inf: max_prio: 120 [alph:0.221808] inf: fpu: 0 [alph:0.222111] inf: malloc_strategy: on_startup [alph:0.222434] inf: devices: 0 [alph:0.222731] inf: memory: [alph:0.223022] inf: args: uart [alph:0.223341] inf: [1] [alph:0.223578] inf: name: console [alph:0.223876] inf: short_name: cons [alph:0.224170] inf: file: ramfs:/console.elf [alph:0.224497] inf: stack_sz: 0x1000 [alph:0.224798] inf: heap_sz: 0x4000 [alph:0.225096] inf: max_aspaces: 1 [alph:0.225378] inf: max_threads: 3 [alph:0.225660] inf: max_prio: 110 [alph:0.225949] inf: fpu: 0 [alph:0.226233] inf: malloc_strategy: on_startup [alph:0.226539] inf: devices: [alph:0.226818] inf: memory: [alph:0.227095] inf: args: [alph:0.227376] inf: [2] [alph:0.227613] inf: name: orocos [alph:0.227908] inf: short_name: oro [alph:0.228202] inf: file: ramfs:/orocos.elf [alph:0.228524] inf: stack_sz: 0x2000 [alph:0.228821] inf: heap_sz: 0x40000 [alph:0.229139] inf: max_aspaces: 9 [alph:0.229447] inf: max_threads: 22 [alph:0.229733] inf: max_prio: 100 [alph:0.230050] inf: fpu: 1 [alph:0.230381] inf: malloc_strategy: on_startup [alph:0.230690] inf: devices: [alph:0.230969] inf: memory: [alph:0.231249] inf: args: [alph:0.231565] inf: get iospace from sigma0. [alph:0.232935] inf: got iospace from sigma0. [alph:0.233625] inf: prepare named memory regions for apps. [alph:0.233984] inf: prepared named memory regions for apps. [alph:0.234348] inf: create app=uart. [alph:0.243077] inf: create app=console. [alph:0.247461] inf: create app=orocos. [uart:0.273194] inf: hello. [uart:0.276318] inf: argc=2, argv=0xff2000. [uart:0.277078] inf: arg[0] = uart. [uart:0.277379] inf: arg[1] = uart. [uart:0.277676] inf: myid=131. [uart:0.278758] inf: map_io: addr=0x70000100, sz=0x100. [uart:0.283008] inf: create_thread: rc=0, id=132. [uart:0.284925] inf: create_thread: rc=0, id=133. [u-tx:0.285872] inf: tx: hello: tx_thread. [u-tx:0.286211] inf: tx: myid=132. [u-rx:0.287677] inf: rx: hello: rx_thread. [u-rx:0.288025] inf: rx: myid=133. [u-hw:0.288810] inf: attach_int: dev=uart, irq=3. [u-tx:0.289464] inf: attach: thread 'uart-tx-stream' is registered, key: 46189/461a4. [u-tx:0.289900] inf: attach: wait attach msg. [u-rx:0.290432] inf: attach: thread 'uart-rx-stream' is registered, key: 466c6/466de. [u-rx:0.290859] inf: attach: wait attach msg. [cons:0.311914] inf: hello: myid=134. [cons:0.320122] inf: create_thread: rc=0, id=135. [cons:0.322185] inf: create_thread: rc=0, id=136. [c-dr:0.323251] inf: drv: myid=135. [c-dr:0.324895] inf: attach: got id=132, for thread 'uart-tx-stream', key: 46189/461a4. [u-tx:0.325794] inf: attach: attached to 135. [u-tx:0.326239] inf: tx: attached to client=135 [c-cl:0.328386] inf: cli: myid=136. [c-dr:0.329152] inf: attach: got id=133, for thread 'uart-rx-stream', key: 466c6/466de. [u-rx:0.329768] inf: attach: attached to 135. [u-rx:0.330148] inf: rx: attached to client=135 [c-cl:0.330675] inf: cli: thread 'console-server' is registered, key: 50493/504aa. Hello Oro! getenv: name=ORO_LOGFILE! fopen64: filename=orocos.log! getenv: name=ORO_LOGLEVEL! getenv: name=RTT_IGNORE_EXCEPTION! cntrl: construct. servo: construct. shaft: construct. encdr: construct. cntrl: configure. servo: configure. encdr: configure. shaft: configure. cntrl: start. servo: start. shaft: start. encdr: start. shaft: updateHook. encdr: updateHook: get: val=0.000000 (old). cntrl: updateHook: wr: val=0.100000. servo: updateHook: rd: val=0.100000. shaft: setPosition: set: val=0.100000. encdr: updateHook: get: val=0.100000 (new). cntrl: posChanged: new: val=0.100000. encdr: updateHook: get: val=0.100000 (old). cntrl: updateHook: wr: val=0.200000. servo: updateHook: rd: val=0.200000. shaft: setPosition: set: val=0.200000. encdr: updateHook: get: val=0.200000 (new). cntrl: posChanged: new: val=0.200000. encdr: updateHook: get: val=0.200000 (old). cntrl: updateHook: wr: val=0.300000. servo: updateHook: rd: val=0.300000. shaft: setPosition: set: val=0.300000. encdr: updateHook: get: val=0.300000 (new). cntrl: posChanged: new: val=0.300000. cntrl: stop. servo: stop. shaft: stop. encdr: stop. Bye-bye! [alph:3.624377] inf: app=137 terminated.
2. Running on local host (GNU Linux) [up]
Step 1.1. Get w4orocos sources
Clone repository from github:
git clone https://github.com/wrmlab/w4orocos.git
or download zip archive.
Step 1.2. Build w4orocos project for local host
Run full building of w4orocos project for local host with GNU Linux OS (it may take a few minutes):
cd w4orocos make localhost-build-full B=../build/orocos.loc -j
As result we will get executable static linked file orocos.elf:
ls ../build/orocos.loc/demo.oro/build/demo.elf
Step 1.3. Run executable demo.elf
../build/orocos.loc/demo.oro/build/demo.elf
As result we will see output:
Hello Oro! cntrl: construct. servo: construct. shaft: construct. encdr: construct. 0.002 [ Warning][Thread] Lowering scheduler type to SCHED_OTHER for non-privileged users.. 0.002 [ Warning][Activity] Lowering scheduler type to SCHED_OTHER for non-privileged users.. 0.002 [ Warning][Thread] Lowering scheduler type to SCHED_OTHER for non-privileged users.. cntrl: configure. servo: configure. encdr: configure. shaft: configure. cntrl: start. servo: start. shaft: start. encdr: start. shaft: updateHook. encdr: updateHook: get: val=0.000000 (old). cntrl: updateHook: wr: val=0.100000. servo: updateHook: rd: val=0.100000. shaft: setPosition: set: val=0.100000. encdr: updateHook: get: val=0.100000 (new). cntrl: posChanged: new: val=0.100000. encdr: updateHook: get: val=0.100000 (old). cntrl: updateHook: wr: val=0.200000. servo: updateHook: rd: val=0.200000. shaft: setPosition: set: val=0.200000. encdr: updateHook: get: val=0.200000 (new). cntrl: posChanged: new: val=0.200000. encdr: updateHook: get: val=0.200000 (old). cntrl: updateHook: wr: val=0.300000. servo: updateHook: rd: val=0.300000. shaft: setPosition: set: val=0.300000. encdr: updateHook: get: val=0.300000 (new). cntrl: posChanged: new: val=0.300000. encdr: updateHook: get: val=0.300000 (old). cntrl: stop. servo: stop. shaft: stop. encdr: stop. Bye-bye!
Step 1.4. Run demo-components by deployer
make localhost-run-deployer B=../build/orocos.loc
As result we will see output:
Real-time memory: 517904 bytes free of 524288 allocated. 0.000 [ Info ][Logger] No RTT_COMPONENT_PATH set. Using default: /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos 0.000 [ Info ][Logger] plugin 'rtt' not loaded before. 0.000 [ Info ][Logger] Loading plugin libraries from directory /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/./plugins ... 0.001 [ Info ][Logger] Loaded RTT Service 'scripting' from 'rtt-scripting' 0.001 [ Info ][Logger] Loaded RTT Service 'marshalling' from 'rtt-marshalling' 0.001 [ Info ][Logger] typekit 'rtt' not loaded before. 0.001 [ Info ][Logger] Loading typekit libraries from directory /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/./types ... 0.017 [ Info ][TypekitRepository::Import] Loading Typekit rtt-types. 0.017 [ Info ][Logger] Loaded RTT TypeKit/Transport 'rtt-types' from 'rtt-typekit' 0.019 [ Info ][TypekitRepository::Import] Loading Transport mqueue://rtt-types. 0.019 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for array 0.019 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for bool 0.019 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for char 0.019 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for double 0.020 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for float 0.020 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for int 0.020 [ Info ][TypekitRepository::Import] Registered new 'mqueue' transport for uint 0.020 [ Info ][Logger] Loaded RTT TypeKit/Transport 'rtt-mqueue-transport' from 'rtt-transport-mqueue' 0.020 [ Info ][Logger] No RTT_COMPONENT_PATH set. Using default: /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos 0.020 [ Info ][Logger] OCL factory set for real-time logging 0.020 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='Deployer' 0.020 [ Info ][Deployer] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26421 ). 0.021 [ Info ][Logger] No site file was found. Importing 'ocl' by default. 0.021 [ Info ][ComponentLoader::import(path_list)] Importing directory /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl ... 0.023 [ Info ][ComponentLoader::import(path_list)] Loaded multi component library '/home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/liborocos-ocl-reporting-gnulinux.so' 0.028 [ Info ][ComponentLoader::import(path_list)] Loaded component type 'OCL::logging::Log4cxxAppender' 0.030 [ Info ][ComponentLoader::import(path_list)] Loaded multi component library '/home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/liborocos-ocl-timer-gnulinux.so' 0.031 [ Info ][ComponentLoader::import(path_list)] Loaded component type 'OCL::HelloWorld' 0.032 [ Info ][ComponentLoader::import(path_list)] Loaded multi component library '/home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/liborocos-ocl-common-gnulinux.so' 0.033 [ Info ][ComponentLoader::import(path_list)] Loaded multi component library '/home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/liborocos-ocl-logging-gnulinux.so' 0.051 [ Info ][ComponentLoader::import(path_list)] Loaded multi component library '/home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/liborocos-ocl-reporting-netcdf-gnulinux.so' 0.051 [ Info ][ComponentLoader::import(path_list)] Loaded component type 'OCL::NetcdfReporting' 0.051 [ Info ][ComponentLoader::import(path_list)] Loading typekit libraries from directory /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/types ... 0.054 [ Info ][TypekitRepository::Import] Loading Typekit OCLTypekit. 0.055 [ Info ][ComponentLoader::import(path_list)] Loaded RTT TypeKit/Transport 'OCLTypekit' from 'ocl' 0.055 [ Info ][ComponentLoader::import(path_list)] Loading plugin libraries from directory /home/worm/Dev/Wrm/build/orocos.loc/orocos/install_isolated/lib/orocos/gnulinux/ocl/plugins ... 0.056 [ Info ][ComponentLoader::import(path_list)] Loaded RTT Service 'print' from 'print' 0.057 [ Info ][ComponentLoader::import(path_list)] Loaded RTT Service 'os' from 'os' 0.057 [ Info ][Logger] Loading Service or Plugin scripting in TaskContext Deployer 0.058 [ Info ][Logger] Found complete interface of requested service 'scripting' 0.059 [ Info ][Logger] Running Script ../src/start.ops ... 0.059 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='GlobalEngine' 0.059 [ Info ][GlobalEngine] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26422 ). 0.067 [ Info ][ComponentLoader::import(package, path_list)] Loaded multi component library 'orocos/gnulinux/demo.oro/libdemocomponents-gnulinux.so' 0.068 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='cntrl' 0.068 [ Info ][cntrl] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26423 ). cntrl: construct. 0.068 [ Info ][loadComponent] Adding cntrl as new peer: OK. 0.069 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='servo' 0.069 [ Info ][servo] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26424 ). servo: construct. 0.069 [ Info ][loadComponent] Adding servo as new peer: OK. 0.069 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='encdr' 0.070 [ Info ][encdr] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26425 ). encdr: construct. 0.070 [ Info ][loadComponent] Adding encdr as new peer: OK. 0.070 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='shaft' 0.070 [ Info ][shaft] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26426 ). shaft: construct. 0.070 [ Info ][loadComponent] Adding shaft as new peer: OK. 0.071 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='timer' 0.071 [ Info ][timer] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26427 ). 0.071 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_RT, priority=99, CPU affinity=0, with name='Timer' 0.071 [ Warning][Thread] Lowering scheduler type to SCHED_OTHER for non-privileged users.. 0.071 [ Warning][Thread] Forcing priority (99) of thread with SCHED_OTHER policy to 0. 0.071 [ Info ][Timer] Lowering scheduler type to SCHED_OTHER for non-privileged users..Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26428 ). 0.072 [ Info ][loadComponent] Adding timer as new peer: OK. 0.073 [ Info ][connect] Connected Port cntrl.tx-servo to servo.rx-cntrl. 0.075 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=4294967295, with name='cntrl' 0.075 [ Info ][cntrl] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 1 (PID= 26429 ). 0.076 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=4294967295, with name='encdr' 0.076 [ Info ][encdr] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0.5 (PID= 26430 ). cntrl: configure. servo: configure. encdr: configure. shaft: configure. cntrl: start. servo: start. encdr: start. shaft: start. shaft: updateHook. encdr: updateHook: get: val=0.000000 (old). cntrl: updateHook: wr: val=0.100000. servo: updateHook: rd: val=0.100000. shaft: setPosition: set: val=0.100000. encdr: updateHook: get: val=0.100000 (new). cntrl: posChanged: new: val=0.100000. encdr: updateHook: get: val=0.100000 (old). cntrl: updateHook: wr: val=0.200000. servo: updateHook: rd: val=0.200000. shaft: setPosition: set: val=0.200000. encdr: updateHook: get: val=0.200000 (new). cntrl: posChanged: new: val=0.200000. encdr: updateHook: get: val=0.200000 (old). cntrl: updateHook: wr: val=0.300000. servo: updateHook: rd: val=0.300000. shaft: setPosition: set: val=0.300000. encdr: updateHook: get: val=0.300000 (new). cntrl: posChanged: new: val=0.300000. encdr: updateHook: get: val=0.300000 (old). cntrl: stop. encdr: updateHook: get: val=0.300000 (old). servo: stop. encdr: stop. shaft: stop. 4.578 [ Info ][Thread] Creating Thread for scheduler=ORO_SCHED_OTHER, priority=1, CPU affinity=0, with name='TaskBrowser' 4.578 [ Info ][TaskBrowser] Thread created with scheduler type 'ORO_SCHED_OTHER', priority 0, cpu affinity 255 and period 0 (PID= 26451 ). Switched to : Deployer 4.578 [ Info ][Logger] Entering Task Deployer This console reader allows you to browse and manipulate TaskContexts. You can type in an operation, expression, create or change variables. (type 'help' for instructions and 'ls' for context info) TAB completion and HISTORY is available ('bash' like) Use 'Ctrl-D' or type 'quit' to exit this program.