Building Your First WOW!!

Symbian Application

Piotr Madej, Comarch


Comarch was established in 1993 and is the largest indepentent SW House and IT product vendor in Poland today, with market capitalization of 250M€ and 3500+ employees, quated on the Warsaw Stock Exchange since 1999, with very strong links to technical universities around Western Europe, developing products and rendering services for  Telecommunications  Banking & Finance  Industry & Utilities  Trade  Public Sector  Small & Medium Enterprises Comarch sells proprietary products, solutions and services on the global market, including Europe, Americas and APAC, having customers on 4 continents in more than 20 countries.

Comarch Group Employment


• Develop team’s competences • Present the embedded know-how of the Department • Create a nice demo set


Project Goal

To create a mobile, wireless robot capable of drawing an input vector graphic with color markers on a paper sheet, controlled by a Symbian OS-based mobile phone and Bluetooth for data interchange

Project Setup
Comarch Summer Internships 2010  Scrum in use  3 months timeframe (01.07 – 30.09.2010)  Symbian-based smartphone

Base material to be used:

Project Team

3% 30% 100%

Scrum of 3 (including 1 SM) + 1 (PO)  4 pigs + 1 chicken (me = sponsor)  Effort: 10 man-months total

Project Resources
Lego Mindstorms NXT 2.0 (8547-1, 619p)

Lego Technic Crane Truck (8258-1, 1877p)

Lego City Tractor (7634-1, 78p)


Project Budget
    

Lego brick sets Markers Flipchart paper Charger and batteries Nokia 5800 XpressMusic Bluetooth Dongle

408.00 ~ 5.00 ~ 3.00 18.00 230.00 8.00



672.00 EUR

What can one afford with:  10 man-months of work

 3 genius engineers
 672 EUR



Frida in numbers

1126 bricks

     

38 gears 4 worm gears 3 servo motors 2 micro switches 2 wheels 1 ultrasound sensor 1 color sensor 1 LEGO NXT brick

6330 lines of Symbian code (508kB)  1360 lines of NXC code (37kB)  6 AA batteries  2 marker colors


Making Frida


It may turn out to be challenging to develop a feasible mechanical design to be mechanically stable, minimizing unwanted friction and providing maximum control over motored wheels  The robot might be mechanically unstable, it may perform unexpected motor movements or micro-movements. This includes leeways, shakes of the mechanism and inaccuracy of the mathematical physics model related to the shape of wheels and friction  The NXT direct commands, which can be sent to the microcontroller to control the motors, are architecturally inaccurate, eg. have only 100 possible ratios between motor speeds. Similar limitations exist for the angle for which to turn the motor, etc. It creates a systematic uncertainty, which has to be taken into account when calculating movements  Basic version of the Qt framework does not support the Bluetooth interface. Communications code will likely have to be written in lowlevel platform-specific code. It is likely that Bluetooth code written for Symbian won't work in the simulated PC environment, and vice versa

Frida capabilities
 

Manual drive (O) Automatic drive (SVG based) (M)
load file (M)  hand-drafting (O)  photo tracing (O)


Basic sequence diagram

Basic sequence diagram


Instruction? Of course!
Rendered with

Lego Digital Designer v3.1.3 ( Brick Library v114.5

Pen changer schematic

Meshing gears  Rack and pinion  Clutch  Worm drives


3 movement orders
moveForward  moveArc  rotate

Standard movement frame includes only number of motors' ticks

Servo regulator

Goal: to control both servo motor hubs' position fast, precisely, synchronously and without over-regulation Solution: Quasilinear regulator instead of built-in PID regulator

Theory: both motors are going with constant speed, but... phasing introduced
Accelerating with preset minimal speed (not enough power to start, when stopped) and taking battery level into account

Servo regulator

Breaking strategies:
linear  quadratic  instant  hardware (no sync)

Goal of braking: not just to stop, but stop precisely in target Fully configurable

Curve manipulation framework


The route is represented by a series of lines and circular arcs
lines  elipses  elliptical arcs  Bézier curves

Transformation formulas

Other issues
Drawing path optimisation  Leeway of the servos  Wheels  Auto calibration




Bitmap filtering and vectorizing
Modified Canny edge detection algorithm

not to many segments  not to take to much time to process

Gaussian filtering

remove fluctuations

Bitmap filtering and vectorizing

Gradients computing

edge detection by gradient mask
[ 1 2 1] [ 0 0 0] [-1 -2 -1] and [1 0 -1] [2 0 -2] [1 0 -1]

Non-maximum suppression
clearing all pixels that are not extremal in their local neighbourhood  edges are thinner and more clear rather than but thick and blurred

Bitmap filtering and vectorizing

merging both sides of a line to be one  further removal of deviations

Double threshold binarization
determine which pixels are finally the edge ones  double values (upper and lower thresholds) are used

Bitmap filtering and vectorizing

Final touch-up
modified erosion (to make lines thinner)  inverting

Bitmap filtering is fully configurable

Bitmap filtering and vectorizing

labelling  tracing  merging (closing, merging torn lines, joining)  erasing



The First Symbian Application

Thank you


Sign up to vote on this title
UsefulNot useful