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 Multiple bindings
3.4.3 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 urbiscript code
3.15 Using RTP transport in remote mode
3.15.1 Enabling RTP
3.15.2 Per-UVar control of RTP mode
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.3.2 Quitting
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.7.4 Finally
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.59.1 Prototypes
20.59.2 Slots
20.60 System.Platform
20.60.1 Prototypes
20.60.2 Slots
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 Traceable
20.63.1 Slots
20.64 TrajectoryGenerator
20.64.1 Prototypes
20.64.2 Examples
20.64.2.1 Accel
20.64.2.2 Cos
20.64.2.3 Sin
20.64.2.4 Smooth
20.64.2.5 Speed
20.64.2.6 Time
20.64.2.7 Trajectories and Tags
20.64.3 Construction
20.64.4 Slots
20.65 Triplet
20.65.1 Prototype
20.65.2 Construction
20.65.3 Slots
20.66 Tuple
20.66.1 Prototype
20.66.2 Construction
20.66.3 Slots
20.67 UObject
20.67.1 Prototypes
20.67.2 Slots
20.68 UValue
20.69 UVar
20.69.1 Construction
20.69.2 Prototypes
20.69.3 Slots
20.70 void
20.70.1 Prototypes
20.70.2 Construction
20.70.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 Urbi Platforms
23 Bioloid
23.1 Introduction
23.2 Installing Urbi for Bioloid
23.2.1 Flashing the firmware
23.2.2 Getting Urbi and Urbi for Bioloid
23.3 First steps
23.3.1 Starting up
23.3.2 Motor features
23.3.3 Sensor features
24 Mindstorms NXT
24.1 Launching Urbi for Mindstorms NXT
24.2 First steps with Urbi to control Mindstorms NXT
24.2.1 Make basic movements
24.2.2 Improving the movements
24.2.3 Reading sensors
24.2.4 Tagging commands
24.2.5 Playing sounds
24.2.6 Cyclic moves
24.2.7 Parallelism
24.2.8 Using functions
24.2.9 Loading files
24.2.10 Conclusion
24.3 Default layout reference
24.3.1 Motors
24.3.2 Sensors
24.3.2.1 Bumper
24.3.2.2 Sonar
24.3.2.3 Decibel
24.3.2.4 Light
24.3.3 Battery
24.3.4 Beeper
24.3.5 Command
24.4 How to make its own layout
24.4.1 Instancing Motors
24.4.2 Instancing sensors
24.4.3 Other devices
24.5 Available UObject Devices
24.5.1 Servo
24.5.2 UltraSonicSensor
24.5.3 SoundSensor
24.5.4 LightSensor
24.5.5 Switch
24.5.6 Battery
24.5.7 Beeper
24.5.8 Command
24.5.9 Instances
24.5.10 Groups
25 Nao
25.1 Introduction
25.2 Starting up
25.3 Accessing joints
25.3.1 Advanced parameters
25.3.1.1 Trajectory generator period
25.3.1.2 Motor back-end method
25.3.1.3 Motor command debugging
25.4 Leds
25.5 Camera
25.5.1 Slots
25.6 Whole body motion
25.7 Other sensors
25.8 Interfacing with NaoQi
25.8.1 Accessing the NaoQi shared memory region
25.8.2 Accessing standard NaoQi modules
25.8.3 Binding new NaoQi modules in Urbi
25.8.4 Writing NaoQi modules in Urbi
26 Pioneer 3-DX
26.1 Getting started
26.2 How to use Pioneer 3-DX robot
26.2.1 P3dx
26.2.2 P3dx.body
26.2.3 P3dx.body.odometry
26.2.4 P3dx.body.sonar
26.2.5 P3dx.body.laser
26.2.6 P3dx.body.camera
26.2.7 P3dx.body.x
26.2.8 P3dx.body.yaw
26.2.9 P3dx.planner
26.2.10 P3dx.body.battery
26.3 Mobility modes
26.4 About units
27 Segway RMP
27.1 RMP
27.1.1 Instantiation
27.1.2 Slots
27.2 GSRAPI compliance
28 Spykee
28.1 Installing Urbi on the Spykee
28.2 Device list
28.3 Dynamically loaded modules
28.3.1 Clapper
29 Webots
29.1 Setup
29.1.1 Installation
29.1.1.1 Linux
29.1.1.2 Mac OS X
29.1.1.3 Windows
29.1.2 License
29.1.2.1 Evaluation mode
29.1.2.2 Setting up a license
29.2 Using Urbi as a controller in your Webots worlds
29.2.1 Using the default urbi-2.0 controller
29.2.2 Defining custom Urbi controllers
29.3 Binding your own robots with Urbi for Webots
29.4 Built-in robots and worlds
29.5 Webots UObjects
29.5.1 Robot devices UObjects
29.5.1.1 Accelerometer
29.5.1.2 Camera
29.5.1.3 Differential Wheels
29.5.1.4 Distance Sensor
29.5.1.5 Led
29.5.1.6 Servo
29.5.1.7 Touch Sensor
29.5.2 Supervisor API UObjects
29.5.2.1 Label
29.5.2.2 Manipulate Node
29.5.2.3 Simulation Controller
VI Tables and Indexes
30 Notations
30.1 Words
30.2 Frames
30.2.1 Shell Sessions
30.2.2 urbiscript Sessions
30.2.3 urbiscript Assertions
30.2.4 C ++ Code
31 Release Notes
31.1 Urbi SDK 2.2
31.1.1 Fixes
31.1.2 New Features
31.1.3 Documentation
31.2 Urbi SDK 2.1
31.2.1 Fixes
31.2.2 New Features
31.2.3 Optimization
31.2.4 Documentation
31.3 Urbi SDK 2.0.3
31.3.1 New Features
31.3.2 Fixes
31.3.3 Documentation
31.4 Urbi SDK 2.0.2
31.4.1 urbiscript
31.4.2 Fixes
31.4.3 Documentation
31.5 Urbi SDK 2.0.1
31.5.1 urbiscript
31.5.2 Documentation
31.5.2.1 Fixes
31.6 Urbi SDK 2.0
31.6.1 urbiscript
31.6.1.1 Changes
31.6.1.2 New features
31.6.2 UObjects
31.6.3 Documentation
31.7 Urbi SDK 2.0 RC 4
31.7.1 urbiscript
31.7.1.1 Changes
31.7.1.2 New objects
31.7.1.3 New features
31.7.2 UObjects
31.8 Urbi SDK 2.0 RC 3
31.8.1 urbiscript
31.8.1.1 Fixes
31.8.1.2 Changes
31.8.2 Documentation
31.9 Urbi SDK 2.0 RC 2
31.9.1 Optimization
31.9.2 urbiscript
31.9.2.1 New constructs
31.9.2.2 New objects
31.9.2.3 New features
31.9.2.4 Fixes
31.9.2.5 Deprecations
31.9.2.6 Changes
31.9.3 UObjects
31.9.4 Documentation
31.9.5 Various
31.10 Urbi SDK 2.0 RC 1
31.10.1 Auxiliary programs
31.10.2 urbiscript
31.10.2.1 Syntax of events
31.10.2.2 Changes
31.10.2.3 Fixes
31.10.3 URBI Remote SDK
31.10.4 Documentation
31.11 Urbi SDK 2.0 beta 4
31.11.1 Documentation
31.11.2 urbiscript
31.11.2.1 Bug fixes
31.11.2.2 Changes
31.11.3 Programs
31.11.3.1 Environment variables
31.11.3.2 Scripting
31.11.3.3 urbi-console
31.11.3.4 Auxiliary programs
31.12 Urbi SDK 2.0 beta 3
31.12.1 Documentation
31.12.2 urbiscript
31.12.2.1 Fixes
31.12.2.2 Changes
31.12.3 UObjects
31.12.4 Auxiliary programs
31.13 Urbi SDK 2.0 beta 2
31.13.1 urbiscript
31.13.2 Standard library
31.13.3 UObjects
31.13.4 Run-time
31.13.5 Bug fixes
31.13.6 Auxiliary programs
32 Licenses
32.1 BSD License
32.2 Expat License
32.3 Independent JPEG Group’s Software License
32.4 Libcoroutine License
32.5 OpenSSL License
32.6 Urbi Open Source Contributor Agreement
33 Glossary