VisualStorms Tools - PowerPoint PPT Presentation

About This Presentation
Title:

VisualStorms Tools

Description:

VisualStorms Tools Another Brick in the Robot . . . Universit degli Studi di Pisa Introduction Lego MindStorms allow building small robots based on the popular Lego ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 15
Provided by: Kirira4
Category:

less

Transcript and Presenter's Notes

Title: VisualStorms Tools


1
VisualStorms Tools
  • Another Brick in the Robot . . .

2
Introduction
  • Lego MindStorms allow building small robots based
    on the popular Lego bricks
  • A programmable brick allows controlling up to
    three devices (motors) and test up to three input
    sensors
  • Programs are expressed in a bytecode interpreted
    by an interpreter in the bricks ROM
  • The execution model is concurrent (up to ten
    threads) and there is a (very) small amount of
    memory representing the state of the execution

3
Programming the Brick
  • Lego provides a visual programming system to
    program the brick
  • Other tools have been developed to program
    MindStorms a tiny JVM is being written (to
    replace the Lego VM), NQC is a C-Like language
    for programming the Brick
  • We have written a library to program MindStorms
    with .NET and Visual Studio
  • The library compiles Intermediate Language (IL)
    into Lego bytecode, in this way (almost) any .NET
    compiler can be used to program the Brick.

4
Compilation Scheme
C
bcI File
VB
VisualStorms
IL
SML
Brick Downloader
. . .
5
Memory Organization
  • The compilation process should map a stack based
    machine into a register based machine
  • Class fields are mapped to global variables
  • Stack of a method is mapped to local variables
    starting from index 47 towards 32
  • Local variables are mapped starting from 32
  • Thus maxstack locals lt 32

Global variables (0-31)
Task 0 (Main) 32-47
Task 1 (32-47)
Task 9 (32-47)
V1 V2 .. . .
sp
. . .
Stack
46
47
6
Compilation an Example
  • using System
  • namespace StormTestAdvanced
  • public class AracnoBrickTop
    VisualStormsTypes.RCX2
  • public int x
  • public int y
  • FunctionType(Function.Task, 0)
  • public void main()
  • int i Sensor2()
  • while(Sensor1() 0)
  • if (i ! 0)
  • SetMotorsPower(VisualStormsTypes.Motor.A,
    Sensor3())
  • else
  • SetMotorsPower(VisualStormsTypes.Motor.C,
    Sensor3())

7
Compilation Example IL
SetVar 20 32 9 1 0
  • IL_0000 ldarg.0
  • IL_0001 call instance int32
    VisualStormsTypes.LegoBrickSensor2()
  • IL_0006 stloc.0
  • IL_0007 br.s IL_0028
  • IL_0009 ldloc.0
  • IL_000a brfalse.s IL_001b
  • IL_000c ldarg.0
  • IL_000d ldc.i4.1
  • IL_000e ldarg.0
  • IL_000f call instance int32
    VisualStormsTypes.LegoBrickSensor3()
  • IL_0014 call instance void
    LegoBrickSetMotorsPower(Motor, int32)
  • IL_0019 br.s IL_0028
  • IL_001b ldarg.0
  • IL_001c ldc.i4.4
  • IL_001d ldarg.0
  • IL_001e call instance int32
    VisualStormsTypes.LegoBrickSensor3()
  • IL_0023 call instance void
    LegoBrickSetMotorsPower(Motor, int32)
  • IL_0028 ldarg.0
  • IL_0029 call instance int32
    VisualStormsTypes.LegoBrickSensor1()

LJump 114 26 0 (26 f)
SetVar 20 47 0 32 0
LCheckDo 149 192 2 47 0 0 9 0 (9 f)
SetPower 19 1 9 2
LJump 114 6 0 (6 f)
SetPower 19 4 9 2
SetVar 20 47 9 0 0
LCheckDo 149 192 2 47 0 0 221 255 (35 b)
8
Compilation Example Output
  • SetVar 20 32 9 1 0
  • LJump 114 26 0 (26 f)
  • SetVar 20 47 0 32 0
  • LCheckDo 149 192 2 47 0 0 9 0 (9 f)
  • SetPower 19 1 9 2
  • LJump 114 6 0 (6 f)
  • SetPower 19 4 9 2
  • SetVar 20 47 9 0 0
  • LCheckDo 149 192 2 47 0 0 221 255 (35 b)

9
Compilation Example NQC
  • int x
  • int y
  • task main ()
  • int i SENSOR_2
  • while(SENSOR_1 0)
  • if (i ! 0)
  • SetPower (OUT_A,SENSOR_3)
  • else
  • SetPower (OUT_C,SENSOR_3)

10
Compilation Example NQCs output
SetVar 20 32 9 1 0 LJump 114 26 0 (26
f) SetVar 20 47 0 32 0 LCheckDo 149 192 2 47
0 0 9 0 (9 f) SetPower 19 1 9 2 LJump 114 6
0 (6 f) SetPower 19 4 9 2 SetVar 20 47 9 0
0 LCheckDo 149 192 2 47 0 0 221 255 (35 b)
  • Var 0 x
  • Var 1 y
  • Var 47 i
  • Task 0 main
  • pwr ABC, 7
  • dir ABC, Fwd
  • setv var47, Input(1)
  • jmpl 33
  • chkl 0 var47, 29
  • pwr A, Input(2)
  • jmpl 33
  • pwr C, Input(2)
  • chkl 0 Input(0), 14

11
Structure of the System
VisualStudio
User
VisualStorms AddIn
AssemblyLoader
VisualStormsCompiler
SharpStormsLib
CliFileReader
Reflection
SharpSerial
12
Demo
13
Applications
  • Teaching the ability of programming simple
    robots with real world languages allow a gentle
    introduction to programming
  • Use of Lego to prototype robots controlled by
    remote programs running on a full fledged PC and
    radio controlled
  • Application of extensible reflection provided by
    .NET
  • It is Possibile to implement emulators and debug
    programs in Visual Studio (or guidbg) for .NET

14
Conclusions and Future Work
  • IL is a rich binary format that can be exploited
    for purposes different than execution
  • The ability of compiling a subset of C programs
    to the robot allows a neat environment for
    experimenting with easy-to-build robots
  • In the future the compiler will recognize call to
    external methods generating RPC code and
    distributing a computation between the robot and
    the PC automatically
Write a Comment
User Comments (0)
About PowerShow.com