Next

Prev

Prev-tail

Tail

Up

Contents

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