IEEE Robotics & Automation Magazine - September 2013 - 85
Device-Specific
Connection
(Serial, Etc.)
Shared Global Address Space
Device D0
Thread
Physical
Device D0
Curre
nt
Client C0
Reader Thread
Device D0
Data
Buffer
Client C0
Writer Thread
Device Dn
ent Command
r
r
u
C
and Buffer
Comm
Client Cx
Reader Thread
Data
Device Dn
Thread
Physical
Device Dn
Device D0
ent
Curr nd Command
a
Buffer
Comm
TCP
Connection
Curre
Data
nt
Device Dn
Data
Buffer
Comm
ands
to
All De
vices
Client C0
from
Data
vices
All De
Comm
ands
to
All De
vices
Client Cx
from
Data
vices
All De
Client Cx
Writer Thread
Figure 3. Architecture of Player for versions prior to 2.0.
interface and that developers would be happy managing their
own socket themselves. Over time, it was realized that the client API was just as important to end users.
One of the most important features of Player has always
been that it makes no assumptions about the structure of
robot control programs. This was a conscious design decision from the beginning. It is perhaps the feature that most
contributed to its early popularity. Having struggled with
the limitations imposed by Ayllu, the Player developers
decided that an open approach using a library-style API,
rather than structured controllers, would give researchers
more flexibility. Player therefore took a minimalist
approach when compared with other architectures of the
time, and even most architectures of today. In Player, the
researcher is free to create controllers of any complexity
and style they choose, from highly concurrent controllers
to simple read-think-act loops.
The design of the Player architecture, shown in Figure 3,
was asynchronous, allowing clients and devices to operate at
their own speed. The server at this point used a large number
of threads: two for each client (one reader, one writer) and one
for each active device, as well as the thread listening for new
clients.
Communication between clients and devices was via
buffers in the server. Each device had two buffers, which
stored the latest command and data. If new data or a new
command arrived before the old was read, it overwrote the
previous contents. This design decoupled devices from clients, allowing all entities to operate at their own rate. Internally, devices communicated by global shared memory.
The design did have its drawbacks. The fixed rate
meant that clients could not determine whether the data it
had just received was new or a repeat of old data (a "pull"
mode was later added to give clients control over receiving data). The laser scanner operated at 5 Hz, for example,
meaning laser data was out of date half the time. However,
Player was intentionally designed this way for simplicity;
it allowed clients to perform blocking reads.
By 2001, the internal server design had changed little.
The authors of [4] formally defined Player as the protocol,
not the server, and introduced the motivation for Player's
use of a socket abstraction:
● Distribution-Clients and servers could exist anywhere
and in any number.
● Independence-Clients could be written in any language on any operating system supporting sockets.
● Convenience-Clients just had to connect and ask for
access to the devices they were interested in to start
receiving data.
The concept of virtual devices was first explicitly mentioned in 2001. A device could be pure software, taking
data from a hardware device and transforming it, before
presenting it to clients. This concept allowed algorithms
to be widely shared.
In 2001, Player was beginning to grow in popularity. Compared with the state of the art at the time, Player took a radically different approach. Architectures focused on creating a
development environment that suited a particular control philosophy. For example, Ayllu enforced a concurrent behaviorbased control structure [1]. COLBERT/Saphira similarly
focused on behavior-based control, using fuzzy blending [5].
Architectures at this time often restricted the programmer to a
specific language designed for the architecture, such as Ayllu's
C-like language. It was also still common for research robots to
come with an unmodifiable library for control, with researchers working within the constraints of this library.
september 2013
*
IEEE ROBOTICS & AUTOMATION MAGAZINE
*
85
Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - September 2013
IEEE Robotics & Automation Magazine - September 2013 - Cover1
IEEE Robotics & Automation Magazine - September 2013 - Cover2
IEEE Robotics & Automation Magazine - September 2013 - 1
IEEE Robotics & Automation Magazine - September 2013 - 2
IEEE Robotics & Automation Magazine - September 2013 - 3
IEEE Robotics & Automation Magazine - September 2013 - 4
IEEE Robotics & Automation Magazine - September 2013 - 5
IEEE Robotics & Automation Magazine - September 2013 - 6
IEEE Robotics & Automation Magazine - September 2013 - 7
IEEE Robotics & Automation Magazine - September 2013 - 8
IEEE Robotics & Automation Magazine - September 2013 - 9
IEEE Robotics & Automation Magazine - September 2013 - 10
IEEE Robotics & Automation Magazine - September 2013 - 11
IEEE Robotics & Automation Magazine - September 2013 - 12
IEEE Robotics & Automation Magazine - September 2013 - 13
IEEE Robotics & Automation Magazine - September 2013 - 14
IEEE Robotics & Automation Magazine - September 2013 - 15
IEEE Robotics & Automation Magazine - September 2013 - 16
IEEE Robotics & Automation Magazine - September 2013 - 17
IEEE Robotics & Automation Magazine - September 2013 - 18
IEEE Robotics & Automation Magazine - September 2013 - 19
IEEE Robotics & Automation Magazine - September 2013 - 20
IEEE Robotics & Automation Magazine - September 2013 - 21
IEEE Robotics & Automation Magazine - September 2013 - 22
IEEE Robotics & Automation Magazine - September 2013 - 23
IEEE Robotics & Automation Magazine - September 2013 - 24
IEEE Robotics & Automation Magazine - September 2013 - 25
IEEE Robotics & Automation Magazine - September 2013 - 26
IEEE Robotics & Automation Magazine - September 2013 - 27
IEEE Robotics & Automation Magazine - September 2013 - 28
IEEE Robotics & Automation Magazine - September 2013 - 29
IEEE Robotics & Automation Magazine - September 2013 - 30
IEEE Robotics & Automation Magazine - September 2013 - 31
IEEE Robotics & Automation Magazine - September 2013 - 32
IEEE Robotics & Automation Magazine - September 2013 - 33
IEEE Robotics & Automation Magazine - September 2013 - 34
IEEE Robotics & Automation Magazine - September 2013 - 35
IEEE Robotics & Automation Magazine - September 2013 - 36
IEEE Robotics & Automation Magazine - September 2013 - 37
IEEE Robotics & Automation Magazine - September 2013 - 38
IEEE Robotics & Automation Magazine - September 2013 - 39
IEEE Robotics & Automation Magazine - September 2013 - 40
IEEE Robotics & Automation Magazine - September 2013 - 41
IEEE Robotics & Automation Magazine - September 2013 - 42
IEEE Robotics & Automation Magazine - September 2013 - 43
IEEE Robotics & Automation Magazine - September 2013 - 44
IEEE Robotics & Automation Magazine - September 2013 - 45
IEEE Robotics & Automation Magazine - September 2013 - 46
IEEE Robotics & Automation Magazine - September 2013 - 47
IEEE Robotics & Automation Magazine - September 2013 - 48
IEEE Robotics & Automation Magazine - September 2013 - 49
IEEE Robotics & Automation Magazine - September 2013 - 50
IEEE Robotics & Automation Magazine - September 2013 - 51
IEEE Robotics & Automation Magazine - September 2013 - 52
IEEE Robotics & Automation Magazine - September 2013 - 53
IEEE Robotics & Automation Magazine - September 2013 - 54
IEEE Robotics & Automation Magazine - September 2013 - 55
IEEE Robotics & Automation Magazine - September 2013 - 56
IEEE Robotics & Automation Magazine - September 2013 - 57
IEEE Robotics & Automation Magazine - September 2013 - 58
IEEE Robotics & Automation Magazine - September 2013 - 59
IEEE Robotics & Automation Magazine - September 2013 - 60
IEEE Robotics & Automation Magazine - September 2013 - 61
IEEE Robotics & Automation Magazine - September 2013 - 62
IEEE Robotics & Automation Magazine - September 2013 - 63
IEEE Robotics & Automation Magazine - September 2013 - 64
IEEE Robotics & Automation Magazine - September 2013 - 65
IEEE Robotics & Automation Magazine - September 2013 - 66
IEEE Robotics & Automation Magazine - September 2013 - 67
IEEE Robotics & Automation Magazine - September 2013 - 68
IEEE Robotics & Automation Magazine - September 2013 - 69
IEEE Robotics & Automation Magazine - September 2013 - 70
IEEE Robotics & Automation Magazine - September 2013 - 71
IEEE Robotics & Automation Magazine - September 2013 - 72
IEEE Robotics & Automation Magazine - September 2013 - 73
IEEE Robotics & Automation Magazine - September 2013 - 74
IEEE Robotics & Automation Magazine - September 2013 - 75
IEEE Robotics & Automation Magazine - September 2013 - 76
IEEE Robotics & Automation Magazine - September 2013 - 77
IEEE Robotics & Automation Magazine - September 2013 - 78
IEEE Robotics & Automation Magazine - September 2013 - 79
IEEE Robotics & Automation Magazine - September 2013 - 80
IEEE Robotics & Automation Magazine - September 2013 - 81
IEEE Robotics & Automation Magazine - September 2013 - 82
IEEE Robotics & Automation Magazine - September 2013 - 83
IEEE Robotics & Automation Magazine - September 2013 - 84
IEEE Robotics & Automation Magazine - September 2013 - 85
IEEE Robotics & Automation Magazine - September 2013 - 86
IEEE Robotics & Automation Magazine - September 2013 - 87
IEEE Robotics & Automation Magazine - September 2013 - 88
IEEE Robotics & Automation Magazine - September 2013 - 89
IEEE Robotics & Automation Magazine - September 2013 - 90
IEEE Robotics & Automation Magazine - September 2013 - 91
IEEE Robotics & Automation Magazine - September 2013 - 92
IEEE Robotics & Automation Magazine - September 2013 - 93
IEEE Robotics & Automation Magazine - September 2013 - 94
IEEE Robotics & Automation Magazine - September 2013 - 95
IEEE Robotics & Automation Magazine - September 2013 - 96
IEEE Robotics & Automation Magazine - September 2013 - 97
IEEE Robotics & Automation Magazine - September 2013 - 98
IEEE Robotics & Automation Magazine - September 2013 - 99
IEEE Robotics & Automation Magazine - September 2013 - 100
IEEE Robotics & Automation Magazine - September 2013 - 101
IEEE Robotics & Automation Magazine - September 2013 - 102
IEEE Robotics & Automation Magazine - September 2013 - 103
IEEE Robotics & Automation Magazine - September 2013 - 104
IEEE Robotics & Automation Magazine - September 2013 - Cover3
IEEE Robotics & Automation Magazine - September 2013 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com