1 Introduction
1.1 Urbi and UObjects
1.2 Urbi and urbiscript
1.3 Genesis
1.4 Outline
2 Getting Started
I Urbi and UObjects User Manual
3 The UObject API
3.1 Compiling UObjects
3.1.1 Compiling by hand
3.1.2 The umake-* family of tools
3.1.3 Using the Visual C ++ Wizard
3.2 Creating a class, binding variables and functions
3.3 Creating new instances
3.4 Binding functions
3.4.1 Simple binding
3.4.2 Asynchronous binding
3.5 Notification of a variable change or access
3.6 Data-flow based programming: exchanging UVars
3.7 Timers
3.8 The special case of sensor/effector variables
3.9 Using Urbi variables
3.10 Emitting events
3.11 UObject and Threads
3.12 Using binary types
3.12.1 UVar conversion and memory management
3.12.2 0-copy mode
3.13 Using hubs to group objects
3.14 Sending Urbi code
4 Use Cases
4.1 Writing a Servomotor Device
4.1.1 Caching
4.1.2 Using Timers
4.2 Using Hubs to Group Objects
4.2.1 Alternate Implementation
4.3 Writing a Camera Device
4.3.1 Optimization in Plugin Mode
4.4 Writing a Speaker or Microphone Device
4.5 Writing a Softdevice: Ball Detection
II urbiscript User Manual
5 First Steps
5.1 Comments
5.2 Literal values
5.3 Function calls
5.4 Variables
5.5 Scopes
5.6 Method calls
5.7 Function definition
5.8 Conclusion
6 Basic Objects, Value Model
6.1 Objects in urbiscript
6.2 Methods
6.3 Everything is an object
6.4 The urbiscript values model
6.5 Conclusion
7 Flow Control Constructs
7.1 if
7.2 while
7.3 for
7.4 switch
7.5 do
8 Advanced Functions and Scoping
8.1 Scopes as expressions
8.2 Advanced scoping
8.3 Local functions
8.4 Lexical closures
9 Objective Programming, urbiscript Object Model
9.1 Prototype-based programing in urbiscript
9.2 Prototypes and slot lookup
9.3 Copy on write
9.4 Defining pseudo-classes
9.5 Constructors
9.6 Operators
10 Functional Programming
10.1 First class functions
10.2 Lambda functions
10.3 Lazy arguments
11 Parallelism, Concurrent Flow Control
11.1 Parallelism operators
11.2 Detach
11.3 Tags for parallel control flows
11.4 Advanced example with parallelism and tags
12 Event-based Programming
12.1 Event related constructs
12.2 Events
III Guidelines and Cook Books
13 Installation
13.1 Download
13.2 Install & Check
13.2.1 GNU/Linux and Mac OS X
13.2.2 Windows
14 Frequently Asked Questions
14.1 Build Issues
14.1.1 Complaints about ‘+=’
14.1.2 error: ‘¡anonymous¿’ is used uninitialized in this function
14.1.3 AM_LANGINFO_CODESET
14.1.4 git: fatal: Needed a single revision
14.2 Troubleshooting
14.2.1 Error 1723: ”A DLL required for this install to complete
could not be run.”
14.2.2 When executing a program, the message “The system cannot
execute the specified program.” is raised.
14.2.3 When executing a program, the message “This application
has failed to start” is raised.
14.2.4 The server dies with “stack exhaustion”
14.2.5 ’myuobject: file not found’. What can I do?
14.3 urbiscript
14.3.1 Objects lifetime
14.3.2 Slots and variables
14.3.3 Tags
14.3.4 Events
14.3.5 Standard Library
14.4 UObjects
14.4.1 Is the UObject API Thread-Safe?
14.5 Miscellaneous
14.5.1 What has changed since the latest release?
14.5.2 How do I report a bug?
15 Migration from urbiscript 1 to urbiscript 2
15.1 One to one translation
15.1.1 $(Foo)
15.1.2 delete Foo
15.1.3 emit Foo
15.1.4 eval(Foo)
15.1.5 foreach
15.1.6 group
15.1.7 loopn
15.1.8 new Foo
15.1.9 self
15.1.10 stop Foo
15.1.11 # line
15.1.12 tag+end
16 Building Urbi SDK
16.1 Requirements
16.2 Check out
16.3 Bootstrap
16.4 Configure
16.4.1 configuration options
16.4.2 Windows: Cygwin
16.4.3 building For Windows
16.4.4 Building for Windows using Cygwin
16.5 Compile
16.6 Run
16.7 Check
16.7.1 Lazy test suites
16.7.2 Partial test suite runs
IV Urbi SDK Reference Manual
17 Programs
17.1 Environment Variables
17.1.1 Search Path Variables
17.1.2 Environment Variables
17.2 Special Files
17.3 urbi — Running an Urbi Server
17.3.1 Options
17.4 urbi-image — Querying Images from a Server
17.4.1 Options
17.5 urbi-launch — Running a UObject
17.5.1 Invoking urbi-launch
17.5.2 Examples
17.6 urbi-send — Sending urbiscript Commands to a Server
17.7 umake — Compiling UObject Components
17.7.1 Invoking umake
17.7.2 umake Wrappers
18 urbiscript Language Reference Manual
18.1 Syntax
18.1.1 Characters, encoding
18.1.2 Comments
18.1.3 Synclines
18.1.4 Identifiers
18.1.5 Keywords
18.1.6 Literals
18.1.6.1 Angles
18.1.6.2 Dictionaries
18.1.6.3 Durations
18.1.6.4 Floats
18.1.6.5 Lists
18.1.6.6 Strings
18.1.6.7 Tuples
18.1.7 Statement Separators
18.1.7.1 ‘;’
18.1.7.2 ‘,’
18.1.7.3 ‘|’
18.1.7.4 ‘&’
18.1.8 Operators
18.1.8.1 Arithmetic operators
18.1.8.2 Assignment operators
18.1.8.3 Bitwise operators
18.1.8.4 Logical operators
18.1.8.5 Comparison operators
18.1.8.6 Container operators
18.1.8.7 Object operators
18.1.8.8 All operators summary
18.2 Scopes and local variables
18.2.1 Scopes
18.2.2 Local variables
18.3 Functions
18.3.1 Function Definition
18.3.2 Arguments
18.3.3 Return value
18.3.4 Call messages
18.3.5 Strictness
18.3.6 Lexical closures
18.4 Objects
18.4.1 Slots
18.4.1.1 Manipulation
18.4.1.2 Syntactic Sugar
18.4.2 Prototypes
18.4.2.1 Manipulation
18.4.2.2 Inheritance
18.4.2.3 Copy on write
18.4.3 Sending messages
18.5 Imperative flow control
18.5.1 break
18.5.2 continue
18.5.3 do
18.5.4 if
18.5.5 for
18.5.5.1 C-like for
18.5.5.2 Range-for
18.5.5.3 for n-times
18.5.6 if
18.5.7 loop
18.5.8 switch
18.5.9 while
18.5.9.1 while;
18.5.9.2 while—
18.6 Exceptions
18.6.1 Throwing exceptions
18.6.2 Catching exceptions
18.6.3 Inspecting exceptions
18.7 Assertions
18.8 Parallel and event-based flow control
18.8.1 at
18.8.1.1 at on Events
18.8.1.2 at on Boolean Expressions
18.8.1.3 Scoping at at
18.8.2 every
18.8.2.1 every|
18.8.2.2 every,
18.8.3 for
18.8.3.1 C-for,
18.8.3.2 range-for& (:)
18.8.3.3 for& (n)
18.8.4 loop,
18.8.5 waituntil
18.8.5.1 waituntil on Events
18.8.5.2 waituntil on Boolean Expressions
18.8.6 whenever
18.8.6.1 whenever on Events
18.8.6.2 whenever on Boolean Expressions
18.8.7 While
18.8.7.1 while,
18.9 Trajectories
19 urbiscript Standard Library
19.1 Barrier
19.1.1 Prototypes
19.1.2 Construction
19.1.3 Slots
19.2 Binary
19.2.1 Prototypes
19.2.2 Construction
19.2.3 Slots
19.3 Boolean
19.3.1 Prototypes
19.3.2 Construction
19.3.3 Truth Values
19.3.4 Slots
19.4 CallMessage
19.4.1 Examples
19.4.1.1 Evaluating an argument several times
19.4.1.2 Strict Functions
19.4.2 Slots
19.5 Channel
19.5.1 Prototypes
19.5.2 Construction
19.5.3 Slots
19.6 Code
19.6.1 Prototypes
19.6.2 Construction
19.6.3 Slots
19.7 Comparable
19.8 Control
19.8.1 Prototypes
19.8.2 Slots
19.9 Date
19.9.1 Prototypes
19.9.2 Construction
19.9.3 Slots
19.10 Dictionary
19.10.1 Example
19.10.2 Prototypes
19.10.3 Construction
19.10.4 Slots
19.11 Directory
19.11.1 Prototypes
19.11.2 Construction
19.11.3 Slots
19.12 Duration
19.12.1 Prototypes
19.12.2 Construction
19.12.3 Slots
19.13 Event
19.13.1 Prototypes
19.13.2 Examples
19.13.3 Construction
19.13.4 Slots
19.14 Exception
19.14.1 Prototypes
19.14.2 Construction
19.14.3 Slots
19.14.4 Specific Exceptions
19.15 Executable
19.15.1 Prototypes
19.15.2 Construction
19.15.3 Slots
19.16 File
19.16.1 Prototypes
19.16.2 Construction
19.16.3 Slots
19.17 Finalizable
19.17.1 Example
19.17.2 Prototypes
19.17.3 Construction
19.17.4 Slots
19.18 Float
19.18.1 Prototypes
19.18.2 Construction
19.18.3 Slots
19.19 FormatInfo
19.19.1 Prototypes
19.19.2 Construction
19.19.3 Slots
19.20 Formatter
19.20.1 Prototypes
19.20.2 Construction
19.20.3 Slots
19.21 Global
19.21.1 Prototypes
19.21.2 Slots
19.22 Group
19.22.1 Example
19.22.2 Prototypes
19.22.3 Construction
19.22.4 Slots
19.23 InputStream
19.23.1 Prototypes
19.23.2 Construction
19.23.3 Slots
19.24 Job
19.25 Kernel1
19.25.1 Prototypes
19.25.2 Construction
19.25.3 Slots
19.26 Lazy
19.26.1 Examples
19.26.1.1 Evaluating once
19.26.1.2 Evaluating several times
19.26.2 Caching
19.26.3 Prototypes
19.26.4 Construction
19.26.5 Slots
19.27 List
19.27.1 Prototypes
19.27.2 Construction
19.27.3 Slots
19.28 Loadable
19.28.1 Prototypes
19.28.2 Example
19.28.3 Construction
19.28.4 Slots
19.29 Lobby
19.29.1 Prototypes
19.29.2 Construction
19.29.3 Examples
19.29.4 Slots
19.30 Location
19.30.1 Prototypes
19.30.2 Construction
19.30.3 Slots
19.31 Math
19.31.1 Prototypes
19.31.2 Construction
19.31.3 Slots
19.32 Mutex
19.32.1 Prototypes
19.32.2 Construction
19.33 nil
19.33.1 Prototypes
19.33.2 Construction
19.33.3 Slots
19.34 Object
19.34.1 Prototypes
19.34.2 Construction
19.34.3 Slots
19.35 Orderable
19.36 OutputStream
19.36.1 Prototypes
19.36.2 Construction
19.36.3 Slots
19.37 Pair
19.37.1 Prototype
19.37.2 Construction
19.37.3 Slots
19.38 Path
19.38.1 Prototypes
19.38.2 Construction
19.38.3 Slots
19.39 Pattern
19.39.1 Prototypes
19.39.2 Construction
19.39.3 Slots
19.40 Position
19.40.1 Prototypes
19.40.2 Construction
19.40.3 Slots
19.41 Primitive
19.41.1 Prototypes
19.41.2 Construction
19.41.3 Slots
19.42 Process
19.42.1 Prototypes
19.42.2 Example
19.42.3 Construction
19.42.4 Slots
19.43 Profiling
19.43.1 Prototypes
19.43.2 Construction
19.44 PseudoLazy
19.45 PubSub.Subscriber
19.45.1 Prototypes
19.45.2 Construction
19.45.3 Slots
19.46 PubSub
19.46.1 Prototypes
19.46.2 Construction
19.46.3 Slots
19.47 RangeIterable
19.47.1 Prototypes
19.47.2 Slots
19.48 Regexp
19.48.1 Prototypes
19.48.2 Construction
19.48.3 Slots
19.49 Semaphore
19.49.1 Prototypes
19.49.2 Construction
19.49.3 Slots
19.50 Server
19.50.1 Prototypes
19.50.2 Construction
19.50.3 Slots
19.51 Singleton
19.51.1 Prototypes
19.51.2 Construction
19.51.3 Slots
19.52 Socket
19.52.1 Example
19.52.2 Prototypes
19.52.3 Construction
19.52.4 Slots
19.53 String
19.53.1 Prototypes
19.53.2 Construction
19.53.3 Slots
19.54 System.Platform
19.55 System
19.55.1 Prototypes
19.55.2 Slots
19.56 Tag
19.56.1 Examples
19.56.1.1 Stop
19.56.1.2 Block/unblock
19.56.1.3 Freeze/unfreeze
19.56.1.4 Scope tags
19.56.1.5 Enter/leave events
19.56.1.6 Begin/end
19.56.2 Construction
19.56.3 Slots
19.57 Timeout
19.57.1 Prototypes
19.57.2 Construction
19.57.3 Examples
19.57.4 Slots
19.58 TrajectoryGenerator
19.58.1 Prototypes
19.58.2 Examples
19.58.2.1 Accel
19.58.2.2 Cos
19.58.2.3 Sin
19.58.2.4 Smooth
19.58.2.5 Speed
19.58.2.6 Time
19.58.3 Construction
19.58.4 Slots
19.59 Triplet
19.59.1 Prototype
19.59.2 Construction
19.59.3 Slots
19.60 Tuple
19.60.1 Prototype
19.60.2 Construction
19.60.3 Slots
19.61 UObject
19.61.1 Prototypes
19.61.2 Slots
19.62 UValue
19.63 UVar
19.63.1 Construction
19.63.2 Prototypes
19.63.3 Slots
19.64 void
19.64.1 Prototypes
19.64.2 Construction
19.64.3 Slots
20 Gostai Standard Robotics API
20.1 The Structure Tree
20.2 Frame of Reference
20.3 Component naming
20.4 Localization
20.5 Interface
20.5.1 Identity
20.5.2 Network
20.5.3 Motor
20.5.4 LinearMotor (subclass of Motor)
20.5.5 LinearSpeedMotor (subclass of Motor)
20.5.6 RotationalMotor (subclass of Motor)
20.5.7 RotationalSpeedMotor (subclass of Motor)
20.5.8 Sensor
20.5.9 DistanceSensor (subclass of Sensor)
20.5.10 TouchSensor (subclass of Sensor)
20.5.11 AccelerationSensor (subclass of Sensor)
20.5.12 GyroSensor (subclass of Sensor)
20.5.13 TemperatureSensor (subclass of Sensor)
20.5.14 Laser (subclass of Sensor)
20.5.15 Mobile
20.5.16 Tracker
20.5.17 VideoIn
20.5.18 AudioOut
20.5.19 AudioIn
20.5.20 BlobDetector
20.5.21 TextToSpeech
20.5.22 SpeechRecognizer
20.5.23 Led
20.5.24 RGBLed (subclass of Led)
20.5.25 Battery
20.6 Standard Components
20.6.1 Yaw/Pitch/Roll orientation
20.6.2 Standard Component List
20.7 Compact notation
20.8 Support classes
20.8.1 Interface
20.8.2 Component
20.8.3 Localizer
V Urbi Platforms
21 Nao
21.1 Introduction
21.2 Starting up
21.3 Accessing joints
21.3.1 Advanced parameters
21.3.1.1 Trajectory generator period
21.3.1.2 Motor back-end method
21.3.1.3 Motor command debugging
21.4 Leds
21.5 Camera
21.5.1 Slots
21.6 Other sensors
21.7 Interfacing with NaoQi
21.7.1 Accessing the NaoQi shared memory region
21.7.2 Accessing standard NaoQi modules
21.7.3 Binding new NaoQi modules in Urbi
21.7.4 Writing NaoQi modules in Urbi
22 Spykee
22.1 Introduction
22.2 Installing Urbi on the Spykee
22.3 Device list
22.4 Dynamically loaded modules
22.4.1 Clapper
23 Webots
23.1 Setup
23.1.1 Installation
23.1.1.1 Linux
23.1.1.2 Mac OS X
23.1.1.3 Windows
23.1.2 License
23.1.2.1 Evaluation mode
23.1.2.2 Setting up a license
23.2 Using Urbi as a controller in your Webots worlds
23.2.1 Using the default urbi-2.0 controller
23.2.2 Defining custom Urbi controllers
23.3 Binding your own robots with Urbi for Webots
23.4 Built-in robots and worlds
23.5 Webots UObjects
23.5.1 Robot devices UObjects
23.5.1.1 Accelerometer
23.5.1.2 Camera
23.5.1.3 Differential Wheels
23.5.1.4 Distance Sensor
23.5.1.5 Led
23.5.1.6 Servo
23.5.1.7 Touch Sensor
23.5.2 Supervisor API UObjects
23.5.2.1 Label
23.5.2.2 Manipulate Node
23.5.2.3 Simulation Controller
VI Tables and Indexes
24 Notations
24.1 Words
24.2 Frames
24.2.1 Shell Sessions
24.2.2 urbiscript Sessions
24.2.3 urbiscript Assertions
24.2.4 C ++ Code
25 Release Notes
25.1 Urbi SDK 2.0.1
25.1.1 urbiscript
25.1.2 Documentation
25.2 Urbi SDK 2.0
25.2.1 urbiscript
25.2.1.1 Changes
25.2.1.2 New features
25.2.2 UObjects
25.2.3 Documentation
25.3 Urbi SDK 2.0 RC 4
25.3.1 urbiscript
25.3.1.1 Changes
25.3.1.2 New objects
25.3.1.3 New features
25.3.2 UObjects
25.4 Urbi SDK 2.0 RC 3
25.4.1 urbiscript
25.4.1.1 Fixes
25.4.1.2 Changes
25.4.2 Documentation
25.5 Urbi SDK 2.0 RC 2
25.5.1 Optimization
25.5.2 urbiscript
25.5.2.1 New constructs
25.5.2.2 New objects
25.5.2.3 New features
25.5.2.4 Fixes
25.5.2.5 Deprecations
25.5.2.6 Changes
25.5.3 UObjects
25.5.4 Documentation
25.5.5 Various
25.6 Urbi SDK 2.0 RC 1
25.6.1 Auxiliary programs
25.6.2 urbiscript
25.6.2.1 Syntax of events
25.6.2.2 Changes
25.6.2.3 Fixes
25.6.3 URBI Remote SDK
25.6.4 Documentation
25.7 Urbi SDK 2.0 beta 4
25.7.1 Documentation
25.7.2 urbiscript
25.7.2.1 Bug fixes
25.7.2.2 Changes
25.7.3 Programs
25.7.3.1 Environment variables
25.7.3.2 Scripting
25.7.3.3 urbi-console
25.7.3.4 Auxiliary programs
25.8 Urbi SDK 2.0 beta 3
25.8.1 Documentation
25.8.2 urbiscript
25.8.2.1 Fixes
25.8.2.2 Changes
25.8.3 UObjects
25.8.4 Auxiliary programs
25.9 Urbi SDK 2.0 beta 2
25.9.1 urbiscript
25.9.2 Standard library
25.9.3 UObjects
25.9.4 Run-time
25.9.5 Bug fixes
25.9.6 Auxiliary programs
26 Licenses
26.1 JPEG License
26.2 OpenSSL License
27 Glossary