|
General description
Basically, the robots architecture is centered on a main processing unit
that is responsible for the higher-level behavior coordination, i.e. the
coordination layer. This main processing unit (a PC) processes visual
information gathered from the vision system, executes high-level control
functions and handles external communication with the other robots. This
unit also receives sensing information and sends actuating commands to
control the robot attitude by means of a distributed low-level sensing/actuating
system.
The PC runs the Linux operating system. The communication among team
robots uses an adaptive TDMA transmission control protocol on top of IEEE
802.11b, that reduces the probability of transmission collisions between
team mates thus reducing the communication latency.
Low level sensing/actuating system
The low-level sensing/actuation system is implemented
through a set of microcontrollers interconnected by means of a network. For
this purpose, Controller Area Network (CAN), a real-time fieldbus typical in
distributed embedded systems, has been chosen. This network is complemented
with a higher-level transmission control protocol to enhance its real-time
performance, composability and fault-tolerance, namely the FTT-CAN protocol
(Flexible Time-Triggered communication over CAN).
The low-level sensing/actuation
system executes four main functions, namely, Motion control, Odometry,
Kicking and System monitoring. The Motion control function provides
holonomic motion using 3 DC motors. The Odometry function combines the
encoder readings from the 3 motors and provides coherent robot displacement
information that is then sent to the coordination layer. The Kick function
includes the control of an electromagnetic kicker and of a ball handler to
dribble the ball. Finally, the System monitor function monitors the robot
batteries as well as the state of all nodes in the low-level layer.
The
low-level control layer connects to the coordination layer through a gateway,
which filters interactions within both layers, passing through the
information that is relevant across the layers, only.
Vision System
The current version of the vision system uses an omni-directional and a
perspective camera. The omni-directional part of the vision system is based
on a catadioptric configuration implemented with a firewire camera and a
hyperbolic mirror. The perspective camera uses a low cost firewire
web-camera.
The image processing software uses radial search lines to analyze the color
information. The regions of the image that have to be excluded from analysis
(such as the robot itself, the sticks that hold the mirror and the areas
outside the mirror) are ignored through the use of a previously generated
image mask. The objects of interest (a ball, two goals, obstacles and the
green to white transitions) are detected through algorithms that, using the
color information collected by the radial search lines, calculate the object
position and/or their limits in an angular representation (distance and
angle). The green/white detected transition points, that are at a distance
smaller than a predefined value, are stored in the RTDB for latter use by
the robot self-localization process.
The relationship between image pixels and real world distances is obtained
through an analytical method developed by the team (see
publications link)
that explores a back-propagation ray-tracing approach and the mathematical
properties of the mirror surface.
High-level coordination and control
The high-level decision is built around three main modules: sensor fusion,
basic behaviors and high-level decision and cooperation. The objective of
the sensor fusion module is to gather the noisy information from the sensors
and from other robots and update the World State database that will be used
by the high-level decision and coordination. The basic behaviors module
provides the set of primitives that the higher-level decision modules use to
control the robot. It is essential to provide those modules with a good set
of alternatives, each of which should be as efficient as possible. The
high-level decision module is responsible for the analysis of the current
situation and for the performing of decision-making processes carried out by
each player in order to maximize, not only the performance of its actions,
but also the global success of the team. |