Running w4orocos

Submitted by Sergey Worm on Sun, 09/23/2018 - 15:31

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.