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
13 Urbi for ROS Users
13.1 Communication on topics
13.1.1 Starting a process from Urbi
13.1.2 Listening to Topics
13.1.3 Advertising on Topics
13.1.3.1 Simple Talker
13.1.3.2 Turtle Simulation
13.2 Using Services
III Guidelines and Cook Books
14 Installation
14.1 Download
14.2 Install & Check
14.2.1 GNU/Linux and Mac OS X
14.2.2 Windows
15 Frequently Asked Questions
15.1 Build Issues
15.1.1 Complaints about ‘+=’
15.1.2 error: ‘¡anonymous¿’ is used uninitialized in this function
15.1.3 AM_LANGINFO_CODESET
15.1.4 ‘make check’ fails
15.2 Troubleshooting
15.2.1 Error 1723: ”A DLL required for this install to complete
could not be run.”
15.2.2 When executing a program, the message “The system cannot
execute the specified program.” is raised.
15.2.3 When executing a program, the message “This application
has failed to start” is raised.
15.2.4 The server dies with “stack exhaustion”
15.2.5 ’myuobject: file not found’. What can I do?
15.3 urbiscript
15.3.1 Objects lifetime
15.3.2 Slots and variables
15.3.3 Tags
15.3.4 Events
15.3.5 Standard Library
15.4 UObjects
15.4.1 Is the UObject API Thread-Safe?
15.5 Miscellaneous
15.5.1 What has changed since the latest release?
15.5.2 How can I contribute to the code?
15.5.3 How do I report a bug?
16 Migration from urbiscript 1 to urbiscript 2
16.1 $(Foo)
16.2 delete Foo
16.3 emit Foo
16.4 eval(Foo)
16.5 foreach
16.6 group
16.7 loopn
16.8 new Foo
16.9 self
16.10 stop Foo
16.11 # line
16.12 tag+end
17 Building Urbi SDK
17.1 Requirements
17.1.1 Bootstrap
17.1.2 Build
17.2 Check out
17.3 Bootstrap
17.4 Configure
17.4.1 configuration options
17.4.2 Windows: Cygwin
17.4.3 building For Windows
17.4.4 Building for Windows using Cygwin
17.5 Compile
17.6 Install
17.7 Relocatable
17.8 Run
17.9 Check
17.9.1 Lazy test suites
17.9.2 Partial test suite runs
IV Urbi SDK Reference Manual
18 Programs
18.1 Environment Variables
18.1.1 Search Path Variables
18.1.2 Environment Variables
18.2 Special Files
18.3 urbi — Running an Urbi Server
18.3.1 Options
18.4 urbi-image — Querying Images from a Server
18.4.1 Options
18.5 urbi-launch — Running a UObject
18.5.1 Invoking urbi-launch
18.5.2 Examples
18.6 urbi-send — Sending urbiscript Commands to a Server
18.7 umake — Compiling UObject Components
18.7.1 Invoking umake
18.7.2 umake Wrappers
19 urbiscript Language Reference Manual
19.1 Syntax
19.1.1 Characters, encoding
19.1.2 Comments
19.1.3 Synclines
19.1.4 Identifiers
19.1.5 Keywords
19.1.6 Literals
19.1.6.1 Angles
19.1.6.2 Dictionaries
19.1.6.3 Durations
19.1.6.4 Floats
19.1.6.5 Lists
19.1.6.6 Strings
19.1.6.7 Tuples
19.1.7 Statement Separators
19.1.7.1 ‘;’
19.1.7.2 ‘,’
19.1.7.3 ‘|’
19.1.7.4 ‘&’
19.1.8 Operators
19.1.8.1 Arithmetic operators
19.1.8.2 Assignment operators
19.1.8.3 Bitwise operators
19.1.8.4 Logical operators
19.1.8.5 Comparison operators
19.1.8.6 Container operators
19.1.8.7 Object operators
19.1.8.8 All operators summary
19.2 Scopes and local variables
19.2.1 Scopes
19.2.2 Local variables
19.3 Functions
19.3.1 Function Definition
19.3.2 Arguments
19.3.3 Return value
19.3.4 Call messages
19.3.5 Strictness
19.3.6 Lexical closures
19.4 Objects
19.4.1 Slots
19.4.1.1 Manipulation
19.4.1.2 Syntactic Sugar
19.4.2 Prototypes
19.4.2.1 Manipulation
19.4.2.2 Inheritance
19.4.2.3 Copy on write
19.4.3 Sending messages
19.5 Structural Pattern Matching
19.5.1 Basic Pattern Matching
19.5.2 Variable
19.5.3 Guard
19.6 Imperative flow control
19.6.1 break
19.6.2 continue
19.6.3 do
19.6.4 if
19.6.5 for
19.6.5.1 C-like for
19.6.5.2 Range-for
19.6.5.3 for n-times
19.6.6 if
19.6.7 loop
19.6.8 switch
19.6.9 while
19.6.9.1 while;
19.6.9.2 while—
19.7 Exceptions
19.7.1 Throwing exceptions
19.7.2 Catching exceptions
19.7.3 Inspecting exceptions
19.8 Assertions
19.8.1 Asserting an Expression
19.8.2 Assertion Blocks
19.9 Parallel and event-based flow control
19.9.1 at
19.9.1.1 at on Events
19.9.1.2 at on Boolean Expressions
19.9.1.3 Scoping at at
19.9.2 every
19.9.2.1 every|
19.9.2.2 every,
19.9.3 for
19.9.3.1 C-for,
19.9.3.2 range-for& (:)
19.9.3.3 for& (n)
19.9.4 loop,
19.9.5 waituntil
19.9.5.1 waituntil on Events
19.9.5.2 waituntil on Boolean Expressions
19.9.6 whenever
19.9.6.1 whenever on Events
19.9.6.2 whenever on Boolean Expressions
19.9.7 While
19.9.7.1 while,
19.10 Trajectories
19.11 Garbage collection and limitations
20 urbiscript Standard Library
20.1 Barrier
20.1.1 Prototypes
20.1.2 Construction
20.1.3 Slots
20.2 Binary
20.2.1 Prototypes
20.2.2 Construction
20.2.3 Slots
20.3 Boolean
20.3.1 Prototypes
20.3.2 Construction
20.3.3 Truth Values
20.3.4 Slots
20.4 CallMessage
20.4.1 Examples
20.4.1.1 Evaluating an argument several times
20.4.1.2 Strict Functions
20.4.2 Slots
20.5 Channel
20.5.1 Prototypes
20.5.2 Construction
20.5.3 Slots
20.6 Code
20.6.1 Prototypes
20.6.2 Construction
20.6.3 Slots
20.7 Comparable
20.7.1 Slots
20.8 Container
20.8.1 Prototypes
20.8.2 Slots
20.9 Control
20.9.1 Prototypes
20.9.2 Slots
20.10 Date
20.10.1 Prototypes
20.10.2 Construction
20.10.3 Slots
20.11 Dictionary
20.11.1 Example
20.11.2 Prototypes
20.11.3 Construction
20.11.4 Slots
20.12 Directory
20.12.1 Prototypes
20.12.2 Construction
20.12.3 Slots
20.13 Duration
20.13.1 Prototypes
20.13.2 Construction
20.13.3 Slots
20.14 Event
20.14.1 Prototypes
20.14.2 Examples
20.14.3 Construction
20.14.4 Slots
20.15 Exception
20.15.1 Prototypes
20.15.2 Construction
20.15.3 Slots
20.15.4 Specific Exceptions
20.16 Executable
20.16.1 Prototypes
20.16.2 Construction
20.16.3 Slots
20.17 File
20.17.1 Prototypes
20.17.2 Construction
20.17.3 Slots
20.18 Finalizable
20.18.1 Example
20.18.2 Prototypes
20.18.3 Construction
20.18.4 Slots
20.19 Float
20.19.1 Prototypes
20.19.2 Construction
20.19.3 Slots
20.20 Float.limits
20.20.1 Slots
20.21 FormatInfo
20.21.1 Prototypes
20.21.2 Construction
20.21.3 Slots
20.22 Formatter
20.22.1 Prototypes
20.22.2 Construction
20.22.3 Slots
20.23 Global
20.23.1 Prototypes
20.23.2 Slots
20.24 Group
20.24.1 Example
20.24.2 Prototypes
20.24.3 Construction
20.24.4 Slots
20.25 InputStream
20.25.1 Prototypes
20.25.2 Construction
20.25.3 Slots
20.26 IoService
20.26.1 Example
20.26.2 Prototypes
20.26.3 Construction
20.26.4 Slots
20.27 Job
20.27.1 Prototypes
20.27.2 Construction
20.27.3 Slots
20.28 Kernel1
20.28.1 Prototypes
20.28.2 Construction
20.28.3 Slots
20.29 Lazy
20.29.1 Examples
20.29.1.1 Evaluating once
20.29.1.2 Evaluating several times
20.29.2 Caching
20.29.3 Prototypes
20.29.4 Construction
20.29.5 Slots
20.30 List
20.30.1 Prototypes
20.30.2 Construction
20.30.3 Slots
20.31 Loadable
20.31.1 Prototypes
20.31.2 Example
20.31.3 Construction
20.31.4 Slots
20.32 Lobby
20.32.1 Prototypes
20.32.2 Construction
20.32.3 Examples
20.32.4 Slots
20.33 Location
20.33.1 Prototypes
20.33.2 Construction
20.33.3 Slots
20.34 Math
20.34.1 Prototypes
20.34.2 Construction
20.34.3 Slots
20.35 Mutex
20.35.1 Prototypes
20.35.2 Construction
20.35.3 Slots
20.36 nil
20.36.1 Prototypes
20.36.2 Construction
20.36.3 Slots
20.37 Object
20.37.1 Prototypes
20.37.2 Construction
20.37.3 Slots
20.38 Orderable
20.39 OutputStream
20.39.1 Prototypes
20.39.2 Construction
20.39.3 Slots
20.40 Pair
20.40.1 Prototype
20.40.2 Construction
20.40.3 Slots
20.41 Path
20.41.1 Prototypes
20.41.2 Construction
20.41.3 Slots
20.42 Pattern
20.42.1 Prototypes
20.42.2 Construction
20.42.3 Slots
20.43 Position
20.43.1 Prototypes
20.43.2 Construction
20.43.3 Slots
20.44 Primitive
20.44.1 Prototypes
20.44.2 Construction
20.44.3 Slots
20.45 Process
20.45.1 Prototypes
20.45.2 Example
20.45.3 Construction
20.45.4 Slots
20.46 Profiling
20.46.1 Prototypes
20.46.2 Construction
20.47 PseudoLazy
20.48 PubSub
20.48.1 Prototypes
20.48.2 Construction
20.48.3 Slots
20.49 PubSub.Subscriber
20.49.1 Prototypes
20.49.2 Construction
20.49.3 Slots
20.50 RangeIterable
20.50.1 Prototypes
20.50.2 Slots
20.51 Regexp
20.51.1 Prototypes
20.51.2 Construction
20.51.3 Slots
20.52 StackFrame
20.52.1 Construction
20.52.2 Slots
20.53 Semaphore
20.53.1 Prototypes
20.53.2 Construction
20.53.3 Slots
20.54 Server
20.54.1 Prototypes
20.54.2 Construction
20.54.3 Slots
20.55 Singleton
20.55.1 Prototypes
20.55.2 Construction
20.55.3 Slots
20.56 Socket
20.56.1 Example
20.56.2 Prototypes
20.56.3 Construction
20.56.4 Slots
20.57 String
20.57.1 Prototypes
20.57.2 Construction
20.57.3 Slots
20.58 System
20.58.1 Prototypes
20.58.2 Slots
20.59 System.PackageInfo
20.60 System.Platform
20.61 Tag
20.61.1 Examples
20.61.1.1 Stop
20.61.1.2 Block/unblock
20.61.1.3 Freeze/unfreeze
20.61.1.4 Scope tags
20.61.1.5 Enter/leave events
20.61.1.6 Begin/end
20.61.2 Construction
20.61.3 Slots
20.61.4 Hierarchical tags
20.62 Timeout
20.62.1 Prototypes
20.62.2 Construction
20.62.3 Examples
20.62.4 Slots
20.63 TrajectoryGenerator
20.63.1 Prototypes
20.63.2 Examples
20.63.2.1 Accel
20.63.2.2 Cos
20.63.2.3 Sin
20.63.2.4 Smooth
20.63.2.5 Speed
20.63.2.6 Time
20.63.2.7 Trajectories and Tags
20.63.3 Construction
20.63.4 Slots
20.64 Triplet
20.64.1 Prototype
20.64.2 Construction
20.64.3 Slots
20.65 Tuple
20.65.1 Prototype
20.65.2 Construction
20.65.3 Slots
20.66 UObject
20.66.1 Prototypes
20.66.2 Slots
20.67 UValue
20.68 UVar
20.68.1 Construction
20.68.2 Prototypes
20.68.3 Slots
20.69 void
20.69.1 Prototypes
20.69.2 Construction
20.69.3 Slots
21 Communication with ROS
21.1 Ros
21.1.1 Construction
21.1.2 Slots
21.2 Ros.Topic
21.2.1 Construction
21.2.2 Slots
21.2.2.1 Common
21.2.2.2 Subscription
21.2.2.3 Advertising
21.2.3 Example
21.3 Ros.Service
21.3.1 Construction
21.3.2 Slots
22 Gostai Standard Robotics API
22.1 The Structure Tree
22.2 Frame of Reference
22.3 Component naming
22.4 Localization
22.5 Interface
22.5.1 Identity
22.5.2 Network
22.5.3 Motor
22.5.4 LinearMotor (subclass of Motor)
22.5.5 LinearSpeedMotor (subclass of Motor)
22.5.6 RotationalMotor (subclass of Motor)
22.5.7 RotationalSpeedMotor (subclass of Motor)
22.5.8 Sensor
22.5.9 DistanceSensor (subclass of Sensor)
22.5.10 TouchSensor (subclass of Sensor)
22.5.11 AccelerationSensor (subclass of Sensor)
22.5.12 GyroSensor (subclass of Sensor)
22.5.13 TemperatureSensor (subclass of Sensor)
22.5.14 Laser (subclass of Sensor)
22.5.15 Mobile
22.5.16 Tracker
22.5.17 VideoIn
22.5.18 AudioOut
22.5.19 AudioIn
22.5.20 BlobDetector
22.5.21 TextToSpeech
22.5.22 SpeechRecognizer
22.5.23 Led
22.5.24 RGBLed (subclass of Led)
22.5.25 Battery
22.6 Standard Components
22.6.1 Yaw/Pitch/Roll orientation
22.6.2 Standard Component List
22.7 Compact notation
22.8 Support classes
22.8.1 Interface
22.8.2 Component
22.8.3 Localizer
V Tables and Indexes
23 Notations
23.1 Words
23.2 Frames
23.2.1 Shell Sessions
23.2.2 urbiscript Sessions
23.2.3 urbiscript Assertions
23.2.4 C ++ Code
24 Release Notes
24.1 Urbi SDK 2.1
24.1.1 Fixes
24.1.2 New Features
24.1.3 Optimization
24.1.4 Documentation
24.2 Urbi SDK 2.0.3
24.2.1 New Features
24.2.2 Fixes
24.2.3 Documentation
24.3 Urbi SDK 2.0.2
24.3.1 urbiscript
24.3.2 Fixes
24.3.3 Documentation
24.4 Urbi SDK 2.0.1
24.4.1 urbiscript
24.4.2 Documentation
24.4.2.1 Fixes
24.5 Urbi SDK 2.0
24.5.1 urbiscript
24.5.1.1 Changes
24.5.1.2 New features
24.5.2 UObjects
24.5.3 Documentation
24.6 Urbi SDK 2.0 RC 4
24.6.1 urbiscript
24.6.1.1 Changes
24.6.1.2 New objects
24.6.1.3 New features
24.6.2 UObjects
24.7 Urbi SDK 2.0 RC 3
24.7.1 urbiscript
24.7.1.1 Fixes
24.7.1.2 Changes
24.7.2 Documentation
24.8 Urbi SDK 2.0 RC 2
24.8.1 Optimization
24.8.2 urbiscript
24.8.2.1 New constructs
24.8.2.2 New objects
24.8.2.3 New features
24.8.2.4 Fixes
24.8.2.5 Deprecations
24.8.2.6 Changes
24.8.3 UObjects
24.8.4 Documentation
24.8.5 Various
24.9 Urbi SDK 2.0 RC 1
24.9.1 Auxiliary programs
24.9.2 urbiscript
24.9.2.1 Syntax of events
24.9.2.2 Changes
24.9.2.3 Fixes
24.9.3 URBI Remote SDK
24.9.4 Documentation
24.10 Urbi SDK 2.0 beta 4
24.10.1 Documentation
24.10.2 urbiscript
24.10.2.1 Bug fixes
24.10.2.2 Changes
24.10.3 Programs
24.10.3.1 Environment variables
24.10.3.2 Scripting
24.10.3.3 urbi-console
24.10.3.4 Auxiliary programs
24.11 Urbi SDK 2.0 beta 3
24.11.1 Documentation
24.11.2 urbiscript
24.11.2.1 Fixes
24.11.2.2 Changes
24.11.3 UObjects
24.11.4 Auxiliary programs
24.12 Urbi SDK 2.0 beta 2
24.12.1 urbiscript
24.12.2 Standard library
24.12.3 UObjects
24.12.4 Run-time
24.12.5 Bug fixes
24.12.6 Auxiliary programs
25 Licenses
25.1 BSD License
25.2 Expat License
25.3 Independent JPEG Group’s Software License
25.4 Libcoroutine License
25.5 OpenSSL License
25.6 Urbi Open Source Contributor Agreement
26 Glossary