Instrukcja obsługi robota Pioneer 3-DX

Pioneer 3
Operations Manual
with
MobileRobots Exclusive
Advanced Robot Control & Operations Software
© 2006 MobileRobots Inc. All rights reserved.
This document, as are the software described in it, is provided under license and may only be used or
copied in accordance with the terms of the respective license.
Information in this document is subject to change without notice and should not be construed as a
commitment by MobileRobots Inc.
The software on disk, CD-ROM and firmware which accompany the robot and are available for network
download by MobileRobots customers are solely owned and copyrighted or licensed for use and
distribution by MobileRobots Inc.
Developers and users are authorized by revocable license to develop and operate custom software for
personal research and educational use only. Duplication, distribution, reverse-engineering or
commercial application of MobileRobots software and hardware without license or the express written
consent of MobileRobots Inc. is explicitly forbidden.
PeopleBot™, AmigoBot™, PowerBot™, PatrolBot™, ARCSinside™, SetNetGo™, MobilePlanner™,
MobileSim™ and MobileEyes™ are trademarks of MobileRobots Inc. Other names and logos for
companies and products mentioned or featured in this document are often registered trademarks or
trademarks of their respective companies. Mention of any third-party hardware or software
constitutes neither an endorsement nor a recommendation by MobileRobots Inc.
Pioneer 3 Operations Manual ● Version 3 ●
ii
January 2006
MobileRobots Inc.
Important Safety Instructions
Read the installation and operations instructions before using the equipment.
Avoid using power extension cords.
To prevent fire or shock hazard, do not expose the equipment to rain or moisture.
Refrain from opening the unit or any of its accessories.
Keep wheels away from long hair or fur.
Never access the interior of the robot with charger attached or batteries inserted.
Inappropriate Operation
Inappropriate operation voids your warranty! Inappropriate operation includes, but is not limited to:
Dropping the robot, running it off a ledge, or otherwise operating it in an irresponsible manner
Overloading the robot above its payload capacity
Getting the robot wet
Continuing to run the robot after hair, yarn, string, or any other items have become wound
around the robot’s axles or wheels
Opening the robot with charger attached and/or batteries inserted
All other forms of inappropriate operation or care
Use MOBILEROBOTS authorized parts ONLY;
warranty void otherwise.
iii
Table of Contents
Chapter 1 Introduction...................................................................................................1
ROBOT PACKAGES .......................................................................................................................................... 1
Basic Components (all shipments)....................................................................................................... 1
Optional Components and Attachments (partial list) .......................................................................... 1
User-Supplied Components / System Requirements.......................................................................... 2
ADDITIONAL RESOURCES ................................................................................................................................. 2
Support Website .................................................................................................................................... 2
Newsgroups ........................................................................................................................................... 2
Support................................................................................................................................................... 2
Chapter 2 What Is Pioneer?...........................................................................................3
PIONEER REFERENCE PLATFORM ...................................................................................................................... 3
PIONEER FAMILY OF ROBOT MICROCONTROLLERS AND OPERATIONS SOFTWARE ..................................................... 3
PORTS AND POWER......................................................................................................................................... 4
CLIENT SOFTWARE .......................................................................................................................................... 4
ARIA ........................................................................................................................................................ 5
SonARNL Localization, and Navigation................................................................................................ 5
MODES OF OPERATION .................................................................................................................................... 6
Server Mode........................................................................................................................................... 6
Maintenance and Standalone Modes.................................................................................................. 7
Joydrive Mode ........................................................................................................................................ 7
THE PIONEER LEGACY ..................................................................................................................................... 7
Pioneer AT .............................................................................................................................................. 7
Pioneer 2™ and PeopleBot™ ................................................................................................................ 8
Pioneer 3™ and Recent Pioneer 2-DX8™, -AT8™, and Plus™ Mobile Robots................................... 8
Pioneer 3™ SH Robots .......................................................................................................................... 8
Chapter 3 Specifications & Controls ............................................................................9
PHYSICAL CHARACTERISTICS AND COMPONENTS ................................................................................................. 9
DECK ..........................................................................................................................................................10
MOTOR STOP BUTTON...................................................................................................................................10
USER CONTROL PANEL ..................................................................................................................................10
Power and Status Indicators...............................................................................................................10
Buzzer...................................................................................................................................................11
Serial Port.............................................................................................................................................11
Power Switches....................................................................................................................................11
Reset and Motors ................................................................................................................................11
BODY, NOSE AND ACCESSORY PANELS ............................................................................................................12
Nose .....................................................................................................................................................12
Access Panels ......................................................................................................................................12
SONAR ........................................................................................................................................................12
Multiplexed Operation .........................................................................................................................12
Sensitivity Adjustment.........................................................................................................................13
MOTORS, WHEELS, AND POSITION ENCODERS .................................................................................................13
BATTERIES AND POWER .................................................................................................................................13
Battery Indicators and Low Voltage Conditions.................................................................................14
Recharging...........................................................................................................................................14
SAFETY ARCOS WATCHDOGS ........................................................................................................................14
Chapter 4 Accessories ................................................................................................ 15
JOYSTICK AND JOYDRIVE MODE ......................................................................................................................15
BUMPERS ....................................................................................................................................................15
AUTOMATED RECHARGING ACCESSORY ............................................................................................................16
Manual Operation (Robot Power OFF) ...............................................................................................16
Manual Operation (Robot Power and Systems ON) ..........................................................................16
RADIO CONTROLS AND ACCESSORIES ..............................................................................................................17
iv
MobileRobots Inc.
INTEGRATED PC ........................................................................................................................................... 17
Computer Control Panel...................................................................................................................... 18
Operating the Onboard PC.................................................................................................................. 18
PC Networking ..................................................................................................................................... 19
UPS and Genpowerd ........................................................................................................................... 20
Chapter 5 Quick Start.................................................................................................. 21
PREPARATIVE HARDWARE ASSEMBLY .............................................................................................................. 21
Install Batteries ................................................................................................................................... 21
Client-Server Communications ........................................................................................................... 21
DEMO CLIENT .............................................................................................................................................. 21
STARTING UP ARIA DEMO ............................................................................................................................ 21
Demo Startup Options ........................................................................................................................ 22
A Successful Connection .................................................................................................................... 22
OPERATING THE ARIA DEMONSTRATION CLIENT ............................................................................................... 23
DISCONNECTING .......................................................................................................................................... 23
TROUBLESHOOTING ...................................................................................................................................... 24
Proper Connections............................................................................................................................. 24
Chapter 6 ARCOS......................................................................................................... 25
CLIENT-SERVER COMMUNICATION PACKET PROTOCOLS ..................................................................................... 25
Packet Checksum................................................................................................................................ 26
Packet Errors ....................................................................................................................................... 26
THE CLIENT-SERVER CONNECTION.................................................................................................................. 27
Autoconfiguration (SYNC2) ................................................................................................................. 27
Opening the Servers—OPEN ............................................................................................................... 27
Server Information Packets ................................................................................................................ 27
Keeping the Beat—PULSE................................................................................................................... 28
Closing the Connection—CLOSE ......................................................................................................... 29
CLIENT COMMANDS ...................................................................................................................................... 29
Client Motion Commands ................................................................................................................... 31
ROBOTS IN MOTION ...................................................................................................................................... 31
PID Controls ......................................................................................................................................... 32
Position Integration ............................................................................................................................. 33
DriftFactor, RevCount, and TicksMM ................................................................................................. 33
SONAR ........................................................................................................................................................ 33
Enable/Disabling Sonar...................................................................................................................... 33
Polling Sequence................................................................................................................................. 34
Polling Rate.......................................................................................................................................... 34
STALLS AND EMERGENCIES ............................................................................................................................ 34
ACCESSORY COMMANDS AND PACKETS ........................................................................................................... 35
Packet Processing ............................................................................................................................... 35
CONFIGpac and CONFIG Command ................................................................................................... 35
SERIAL ........................................................................................................................................................ 36
HOST-to-AUX Serial Transfers............................................................................................................. 36
ENCODERS .................................................................................................................................................. 37
BUZZER SOUNDS ......................................................................................................................................... 37
TCM2........................................................................................................................................................ 37
ONBOARD PC .............................................................................................................................................. 38
INPUT OUTPUT (I/O) ..................................................................................................................................... 38
User I/O................................................................................................................................................ 38
IO packets ............................................................................................................................................ 39
Bumper and IR I/O .............................................................................................................................. 39
Joystick Packet .................................................................................................................................... 39
Gripper ................................................................................................................................................. 40
Heading Correction Gyro..................................................................................................................... 40
AUTOMATED RECHARGING SYSTEM ................................................................................................................. 41
Digital Port Controls ............................................................................................................................ 41
Automated Recharging Servers ......................................................................................................... 41
Monitoring the Recharge Cycle .......................................................................................................... 42
v
Chapter 7 Updating & Reconfiguring ARCOS ........................................................... 43
WHERE TO GET ARCOS SOFTWARE ...............................................................................................................43
ARCOS MAINTENANCE MODE .......................................................................................................................43
Enabling Maintenance Mode..............................................................................................................43
ARCOSCF ...................................................................................................................................................44
STARTING ARCOSCF ....................................................................................................................................44
Start Up Arguments .............................................................................................................................44
CONFIGURING ARCOS PARAMETERS ..............................................................................................................45
Interactive Commands ........................................................................................................................45
Changing Parameters..........................................................................................................................45
SAVE YOUR WORK ........................................................................................................................................45
PID PARAMETERS ........................................................................................................................................47
DRIFTFACTOR, TICKSMM AND REVCOUNT ........................................................................................................47
STALLVAL AND STALLCOUNT ..........................................................................................................................48
BUMPERS ....................................................................................................................................................48
Chapter 8 Calibration & Maintenance ...................................................................... 49
TIRE INFLATION ............................................................................................................................................49
CALIBRATING YOUR ROBOT ............................................................................................................................49
DRIVE LUBRICATION ......................................................................................................................................49
BATTERIES ...................................................................................................................................................50
Changing Batteries ..............................................................................................................................50
Hot-Swapping the Batteries ................................................................................................................50
Charging the Batteries ........................................................................................................................50
Automated Docking/Charging System...............................................................................................50
Alternative Battery Chargers...............................................................................................................50
TIGHTENING THE AT DRIVE BELT ....................................................................................................................51
GETTING INSIDE ...........................................................................................................................................51
Removing the Nose .............................................................................................................................51
Opening the Deck ................................................................................................................................52
FACTORY REPAIRS ........................................................................................................................................52
Appendix A.................................................................................................................... 53
MICROCONTROLLER PORTS & CONNECTORS ....................................................................................................53
SH2 MICROCONTROLLER ..............................................................................................................................53
Main Power ..........................................................................................................................................53
Serial Ports...........................................................................................................................................54
User I/O, Gripper and Automated Recharger ....................................................................................54
Motors, Encoders and IRs...................................................................................................................55
Joystick .................................................................................................................................................55
Bumpers...............................................................................................................................................55
Sonar ....................................................................................................................................................55
User Control Board ..............................................................................................................................56
Heading Correction Gyro .....................................................................................................................56
Tilt/Roll.................................................................................................................................................56
I2C .........................................................................................................................................................56
Appendix B ................................................................................................................... 57
MOTOR-POWER BOARD .................................................................................................................................57
Microcontroller Power .........................................................................................................................57
Radio, Auxiliary and User Power Connectors.....................................................................................57
IR Signal and Power ............................................................................................................................58
Appendix C.................................................................................................................... 59
SPECIFICATIONS ...........................................................................................................................................59
Warranty & Liabilities.................................................................................................. 61
vi
MobileRobots Inc.
Chapter 1
Introduction
Congratulations on your purchase and welcome to
the rapidly growing community of developers and
enthusiasts of MOBILEROBOTS intelligent mobile
platforms.
This Pioneer 3-SH Operations Manual provides both
the general and technical details you need to
operate your new Pioneer 3-DX or –AT robot and
to begin developing your own robotics hardware and
software.
Figure 1. The first Pioneer mobile robots
appeared commercially in 1995.
For operation of previous versions of Pioneer 2 and 3 which use the Siemens C166- or Hitachi H8Sbased robot microcontrollers, original motor-power boards and support systems, please contact
sales@MobileRobots.com or access our support website: http://robots. MobileRobots.com for their
related documentation.
ROBOT PACKAGES
Our experienced manufacturing staff put your mobile robot and accessories through a “burn in” period
and carefully tested them before shipping the products to you. In addition to the companion resources
listed above, we warrant your MOBILEROBOTS platform and our manufactured accessories against
mechanical, electronic, and labor defects for one year. Third-party accessories are warranted by their
manufacturers, typically for 90 days.
Even though we’ve made every effort to make your MOBILEROBOTS package complete, please check the
components carefully after you unpack them from the shipping crate.
Basic Components (all shipments)
One fully assembled Pioneer 3 mobile robot with battery
CD-ROM containing licensed copies of MOBILEROBOTS software and documentation
Hex wrenches and assorted replacement screws
Replacement fuse(s)
Set of manuals
Registration and Account Sheet
Optional Components and Attachments (partial list)
Battery charger (some contain power receptacle and 220VAC adapters)
Automated recharge station
Onboard PC computer and accessories
Radio Ethernet
Supplementary and replacement batteries
3-Battery Charge Station (110/220 VAC)
Additional sonar arrays
Laser range finder with Advanced Robotics Navigation and Localization (ARNL) software
2-DOF Gripper
5-DOF Pioneer Arm with gripper
Advanced Color Tracking System (ACTS)
Stereo Vision Systems
Pan-Tilt-Zoom Surveillance Cameras
Global Positioning System
Heading-correction gyro
Compass
Bumper rings
Serial cables for external connections
Many more…
1
Introduction
User-Supplied Components / System Requirements
Client PC: 586-class or later PC with Microsoft® Windows® or Linux OS
One RS-232 compatible serial port or Ethernet
Four megabytes of available hard-disk storage
ADDITIONAL RESOURCES
New MOBILEROBOTS customers get three additional and valuable resources:
A private account on our support Internet website for downloading software, updates, and
manuals
Access to private newsgroups
Direct access to the MOBILEROBOTS technical support team
Support Website
We maintain a 24-hour, seven-day per week World Wide Web server where customers may obtain
software and support materials:
http://robots.mobilerobots.com
Some areas of the website are restricted to licensed customers. To gain access, enter the username
and password written on the Registration & Account Sheet that accompanied your robot.
Newsgroups
We maintain several email-based newsgroups through which robot owners share ideas, software, and
questions about the robot. Visit the support http://robots.MobileRobots.com website for more
details. To sign up for pioneer-users, for example, send an e-mail message to the –requests
automated newsgroup server:
To: pioneer-users-requests@MobileRobots.com
From: <your return e-mail address goes here>
Subject: <choose one command:>
help
(returns instructions)
lists (returns list of newsgroups)
subscribe
unsubscribe
Our e-mail list server will respond automatically. After you subscribe, e-mail your comments,
suggestion, and questions intended for the worldwide community of Pioneer users:1
To: pioneer-users@MobileRobots.com
From: <your return e-mail address goes here>
Subject: <something of interest to pioneer users>
Access to the pioneer-users e-mail newslist is limited to subscribers, so your address is safe from
spam. However, the list currently is unmoderated, so please confine your comments and inquiries to
issues concerning the operation and programming of MOBILEROBOTS platforms.
Support
Have a problem? Can’t find the answer in this or any of the accompanying manuals? Or do you know
a way that we might improve our robots? Share your thoughts and questions with us from the online
form at the support website:
http://robots.MobileRobots.com/techsupport
or by email:
support@MobileRobots.com
1
Note: Leave out the –requests part of the email address when sending messages to the newsgroup.
2
MobileRobots Inc.
Please include your robot's serial number (look for it beside the Main Power switch)we often need
to understand your robot's configuration to best answer your question.
Tell us your robot’s SERIAL NUMBER.
Your message goes directly to the MOBILEROBOTS technical support team. There a staff member will
help you or point you to a place where you can find help.
Because this is a support option, not a general-interest newsgroup like pioneer-users, we reserve
the option to reply only to questions about problems with your robot or software.
See Chapter 8, Maintenance & Repair, for more details.
Use MOBILEROBOTS authorized parts ONLY;
warranty void otherwise.
Chapter 2
What Is Pioneer?
Pioneer is a family of mobile robots, both two-wheel
and four-wheel drive, including the Pioneer 1 and
Pioneer AT, Pioneer 2-DX, -DXe, -DXf, -CE, -AT, the
Pioneer 2-DX8/Dx8 Plus and -AT8/AT8 Plus, and
the newest Pioneer 3-DX and -AT mobile robots.
These small, research and development platforms
share a common architecture and foundation
software with all other MOBILEROBOTS platforms,
including AmigoBot™, PeopleBot™ V1, Performance
PeopleBot™ and PowerBot™ mobile robots.
PIONEER REFERENCE PLATFORM
Figure 2. Pioneer family of robots
MOBILEROBOTS platforms set the standards for intelligent mobile robots by containing all of the basic
components for sensing and navigation in a real-world environment. They have become reference
platforms in a wide variety of research projects, including several US Defense Advanced Research
Projects Agency (DARPA) funded studies.
Every MOBILEROBOTS platform comes complete with a sturdy aluminum body, balanced drive system
(two-wheel differential with casters or four-wheel skid-steer), reversible DC motors, motor-control and
drive electronics, high-resolution motion encoders, and battery power, all managed by an onboard
microcontroller and mobile-robot server software.
Besides the open-systems robot-control software onboard the robot microcontroller, every
MOBILEROBOTS platform also comes with a host of advanced robot-control client software applications
and applications-development environments. Software development includes our own foundation
Advanced Robotics Interface for Applications (ARIA) and ARNetworking, released under the GNU Public
License, and complete with fully documented C++, Java and Python libraries and source code. Several
third-party robotics applications development environments also have emerged from the research
community, including Saphira from SRI International, Ayllu from Brandeis University, Pyro from Bryn
Mawr and Swarthmore Colleges, Player/Stage from the University of Southern California and Carmen
from Carnegie-Mellon University.
PIONEER FAMILY OF ROBOT MICROCONTROLLERS AND OPERATIONS SOFTWARE
First introduced in 1995, the original Pioneer 1 mobile robot contained a microcontroller based on the
Motorola 68HC11 microprocessor and powered by Pioneer Server Operating System (PSOS) firmware.
The next generation of Pioneer 2 and PeopleBot (V1) robots used a Siemens C166-based
3
What is Pioneer?
microcontroller with Pioneer 2 Operating System (P2OS) software. AmigoBot introduced an Hitachi
H8S-based microcontroller with AmigOS in 2000. From 2002 until Fall of 2004, Pioneer 3,
Performance PeopleBot and PowerBot robots also had an Hitachi H8S-based microcontroller with
ActivMedia Robotics Operating System (AROS) software.
Now all MOBILEROBOTS platforms use revolutionary high-performance microcontrollers with advanced
embedded robot control software based on the new-generation 32-bit Renesas SH2-7144 RISC
microprocessor, including the P3-SH microcontroller with ARCOS, µARCS with PatrolBot and our
industrial Core and AmigoSH for AmigoBot.
But you might not even notice the differences. Because we have taken great care to ensure backward
compatibility across ActivMedia Robotics/MOBILEROBOTS entire history of robots, client software written
to operate an ancient PSOS-based Pioneer AT will work with a brand new Pioneer 3-DX with little or no
modification. Client-server communication over a serial communication link remain identical as do
support for all robotics commands.
See Chapter 6, ARCOS, for details.
PORTS AND POWER
Your new Pioneer 3 robot has a variety of expansion power and I/O ports for attachment and close
integration of a client PC, sensors, and a variety of accessories—all accessible through a common
application interface to the robot’s server software, ARCOS. Features include:
44.2368 MHz Renesas SH2 32-bit RISC microprocessor with 32K RAM and 128K FLASH
4 RS-232 serial ports (5 connectors) configurable from 9.6 to 115.2 kilobaud
4 Sonar arrays of up to 8 sonar each
2 8-bit bumpers/digital input connectors
Gripper/User I/O port with 8-bits digital I/O, analog input, and 5/12 VDC power
Heading correction gyro port
Tilt/roll sensor port
2-axis, 2-button joystick port
User Control Panel
Microcontroller HOST serial connector
Main power and bi-color LED battery level indicators
2 AUX power switches (5 and 12 VDC) with related LED indicators
RESET and MOTORS pushbutton controls
Programmable piezo buzzer
Motor/Power Board (drive system) interface with PWM and motor-direction control lines and 8bits of digital input
I2C interface with 4-line X 20-character LCD support
With the onboard PC option, your robot becomes an autonomous agent. With Ethernet-ready onboard
autonomy, your robot even becomes an agent for multi-intelligence work.
CLIENT SOFTWARE
All MOBILEROBOTS platforms operate as the server in a client-server environment:
Their
microcontrollers handle the low-level details of mobile robotics, including maintaining the platform’s
drive speed and heading, acquiring sensor readings, such as from the sonar, and managing attached
accessories like the Gripper. To complete the client-server architecture, MOBILEROBOTS platforms
require a PC connection: software running on a computer connected with the robot’s microcontroller
via the HOST serial link and which provides the high-level, intelligent robot controls, including obstacle
avoidance, path planning, features recognition, localization, navigation, and so on.
4
MobileRobots Inc.
An important benefit of MOBILEROBOTS client-server architecture is that different robot servers can be
run using the same high-level client. Several clients also may share responsibility for controlling a
single mobile server, which permits experimentation in distributed communication, planning, and
control.
Figure 3. MobileRobots platforms require a PC to run client software for intelligent robotics
command and control operations.
ARIA
Advanced Robotics Interface for Applications (ARIA)
software, including ARNetworking, comes with every
MOBILEROBOTS platform. ARIA is a C++-based opensource development environment that provides a
robust client-side interface to a variety of intelligent
robotics
systems,
including
your
robot’s
microcontroller
and
accessory
systems.
ARNetworking provides the critical layer for TCP/IPbased communications with your MOBILEROBOTS
platform over the network.
ARIA/ARNetworking is the ideal platform for
integration of your own robot-control software, since
they neatly handle the lowest-level details of clientserver interactions, including networking and serial
communications, command and server-information
Figure 4. ARIA's architecture
packet processing, cycle timing, and multithreading,
as well as support of a variety of accessories and controls, such as a scanning laser-range finder,
motion gyros, sonar, and many others.
What’s more, ARIA with ARNetworking comes complete with source code so that you may examine the
software and modify it for your own sensors and applications.
SonARNL Localization, and Navigation
5
What is Pioneer?
MOBILEROBOTS also provides a comprehensive suite of client tools and applications by which you
create, edit, and use maps and floorplans for advanced robotics applications, including sonar-based
localization and navigation. Every MOBILEROBOTS platform comes with a basic suite of software,
including ARIA with ArNetworking, MobileSim™, Mapper3-Basic, SonARNL and the GUI client
MobileEyes™. For more information about these and our many commercial ventures, see the
SonARNL Manual, visit http://www.mobilerobots.com and contact sales@mobilerobots.com.
Figure 5. Use SonARNL and MobileEyes™ for advanced sonar-based navigation and control of your robot over
the network.
MODES OF OPERATION
You may operate your Pioneer 3 robot in one of four modes:
Server
Joydrive
Maintenance
Standalone
Server Mode
The new Renesas SH2-based microcontroller comes with 128K of re-programmable FLASH and 32K
dynamic RAM memory. We don't recommend that you start learning SH2 programming. Rather, the
robot comes to you installed with the latest ARCOS firmware.
In conjunction with client software like ARIA running on an onboard or other user-supplied computer,
ARCOS lets you take advantage of modern client-server and robot-control technologies to perform
advanced mobile-robotics tasks. Most users run their robot in server mode because it gives them
6
MobileRobots Inc.
quick, easy access to its robotics functionality while working with high-level software on a familiar host
computer.
Maintenance and Standalone Modes
For experiments in microcontroller-level operation of your
robot’s functions, you may reprogram the onboard FLASH
for direct and standalone operation of your robot. We
supply the means to upload and debug (ARSHstub
embedded GDB interface), but not the microcontroller's
programming software, for you to work in standalone
mode.
The utilities we provide for you to reprogram the SH2based microcontroller's FLASH also may be used to
update and upgrade your robot’s ARCOS. In a special
Maintenance Mode, you also adjust your robot’s operating
parameters that ARCOS uses as default values on startup
or reset. See Chapter 7, Updating & Reconfiguring
ARCOS, for much more detail.
Figure 6. Performance PeopleBot’s
attractive design and advanced
technologies is for humaninteraction applications.
We typically provide the maintenance utilities and ARCOS upgrades free for download from our
website, so be sure to sign up for the pioneer-users email newslist. That's where we notify our
customers of the upgrades, as well as where we provide access to robot users worldwide.
Joydrive Mode
Finally, we provide onboard software and microcontroller hardware that let you drive the robot from a
tethered joystick when not otherwise connected with a controlling client. See Chapter 4 for more
details.
THE PIONEER LEGACY
Commercially introduced in the summer of
1995, Pioneer 1 was the original
MobileRobotsplatform. Intended mostly for
indoor use on hard, flat surfaces, the robot
had solid rubber tires and a two-wheel
Figure 7. The Pioneer 1 appeared in 1995.
differential, reversible drive system with a
rear caster for balance. It came with a singleboard 68HC11-based robot microcontroller and the Pioneer Server Operating System (PSOS) software.
The Pioneer 1 also came standard with seven sonar range finders (two side-facing and five forwardfacing) and integrated wheel encoders. Its low-cost and high-performance caused an explosion in the
number of researchers and developers who now have access to a real, intelligent mobile robotic
platform.
Software-wise, the Pioneer 1 initially served as a platform for SRI International's AI/fuzzy logic-based
Saphira robotics applications development. But it wasn't long before Pioneer’s open architecture
became the popular platform for the development of a variety of alternative robotics software
environments.
Pioneer AT
Functionally and programmatically iden-tical to the Pioneer 1, the four-wheel drive, skid-steer Pioneer
AT was introduced in the summer of 1997 for operation in uneven indoor and outdoor environments,
including loose, rough terrain.
Except for the drive system, there were no operational differences between the Pioneer AT and the
Pioneer 1: The integrated sonar arrays and microcontrollers were the same; they shared accessories;
and applications developed for the Pioneer 1 worked with little or no porting on the AT.
7
What is Pioneer?
Pioneer 2™ and PeopleBot™
The next generation of Pioneer, including the Pioneer 2-DX, -CE, and –AT that were introduced in fall of
1998 through summer of 1999, improved upon the Pioneer 1 legacy while retaining its many
important advantages.2 Indeed, in most respects particularly with applications software, Pioneer 2
worked identically to Pioneer 1 models, but offered many more expansion options, including a client
PC onboard the robot.
The Pioneer 2 models -DX, -DE, -DXe, -DXf, and -AT, and the V1 and Performance PeopleBot robots
used a 20-MHz Siemens 88C166-based microcontroller, with independent motor-power and sonar
microcontroller boards for a versatile operating environment. Sporting a more holonomic body, larger
wheels and stronger motors for better indoor performance, Pioneer 2-DX, -DXe, -DXf and -CE models
were two-wheel, differential-drive mobile robots like Pioneer 1.
The four-wheel drive Pioneer 2-AT had independent motors and drivers. Unlike its Pioneer AT
predecessor, the Pioneer 2-AT came with a stall-detection system and inflatable pneumatic tires with
metal wheels for much more robust operation in rough terrain, as well as the ability to carry nearly 30
kilograms (66 lbs) of payload and climb a 60-percent grade.
Other Pioneer 2-like robots include the Performance PeopleBot robots, which were introduced in
2000. They are architecturally Pioneer 2 robots, but with stronger motors and integrated humaninteraction features, including a pedestal extension, integrated voice and sound synthesis and
recognition—ideal for human-interaction studies as well as for commercial and consumer mobilerobotics applications.
Pioneer 3™ and Recent Pioneer 2-DX8™, -AT8™, and Plus™ Mobile Robots
Two new models of Pioneer 2 appeared in the summer of 2002, two more at the beginning of 2003,
and the Pioneer 3 debuted in the summer of 2003. All used a microcontroller based on the Hitachi
H8S microprocessor, with new control systems software (AROS) and I/O expansion capabilities. The
Pioneer 3 and 2-Plus robots also had new, more powerful motor/power systems for better navigational
control and payload.3
Pioneer 3™ SH Robots
Hardware-wise, the latest Pioneer, Performance
PeopleBot and PowerBot robots—all introduced in
summer of 2004—are identical to their
predecessors except for their revolutionary new
Renesas SH2-based microcontroller.
Softwarewise, these new robots are fully compatible with all
other MOBILEROBOTS platforms, including Pioneer 1.
The new MOBILEROBOTS Advanced Robot Control &
Operations
Software
(ARCOS)
provides
unprecedented performance and expansion, yet
can interface and run client programs originally
developed for Pioneer 1, 2, as well as 3 platforms.
Of course, you will have to extend your old client
software, as we have done with ARIA, in order to
take full advantage of ARCOS.
Figure 8. PowerBot™ carries over 100 kg of
payload.
Price/performance ratio included! The much more capable and expandable Pioneer 2 was introduced four years later for just
a few hundred dollars (US) more than the original Pioneer 1.
3 The interim Pioneer 2-DXf had the same, more-powerful motors as the DX8s and AT8 Plus.
2
8
MobileRobots Inc.
Chapter 3
Specifications & Controls
Figure 9. Pioneer 3-DX features
Pioneer robots may be smaller than most, but they pack an impressive array of intelligent mobile robot
capabilities that rival bigger and much more expensive machines. The Pioneer 3-DX with onboard PC
is a fully autonomous intelligent mobile robot. Unlike other commercially available robots, Pioneer’s
modest size lends itself very well to navigation in tight quarters and cluttered spaces, such as
classrooms, laboratories, and small offices. With its powerful ARCOS server and advanced
MOBILEROBOTS client software, the Pioneer 3 is fully capable of mapping its environment, finding its way
home and performing other sophisticated path-planning tasks.4
Figure 10. Pioneer 3-DX’s physical dimensions and swing radius.
PHYSICAL CHARACTERISTICS AND COMPONENTS
Weighing only 9 kg (20 pounds with one battery), the basic Pioneer 3-DX mobile robots are lightweight,
but their strong aluminum body and solid construction make them virtually indestructible.
4
Requires a laser range-finder accessory and special Advanced Robotics Navigation and Localization (ARNL) software.
9
Specifications & Controls
These characteristics also permit them to carry extraordinary payloads: The Pioneer 3-DX can carry up
to 23 Kg (50 lbs.) additional weight; the 3-AT can carry over 35 Kg (70 lbs.) more! Yet, Pioneer 3s are
lightweight enough that it is also as easy to transport as a suitcasea task made even easier by the
DX's built-in handle.
Pioneer robots are composed of several main parts:
Deck
Motor Stop Button
User Control Panel
Body, Nose, and Accessory Panels
Sonar Array(s)
Motors, Wheels, and Encoders
Batteries and Power
DECK
All Pioneer 3 models have hinged top-plates which give you much easier access to the internal
components of the robot. See Chapter 8, Calibration & Maintenance, for access details.
The robot’s deck is simply the flat surface for
mounting projects and accessories, such as the
PTZ Robotic Camera and a laser range finder.
Feed-through slots on each side of the DX deck let
you conveniently route cables to the accessory
connectors on the side panels of the robot. A
removable plug in the middle of the deck on all
models gives you convenient access to the
interior of the robot.
Figure 11. Pioneer 3-AT’s console and
hinged deck
When mounting accessories, you should try to
center the robot's payload over the drive wheels.
If you must add a heavy accessory to the edge of
the deck, counterbalance the weight with a heavy
object on the opposite end. A full complement of
batteries helps balance the robot, too.
MOTOR STOP BUTTON
All Pioneer 3-AT and, upon request, some Pioneer 3-DX robots have a STOP button at the rear of their
deck. Press and release it to immediately disengage the robot’s motor power. It will also cause a stall
and can result in incessant beeping from the onboard piezo speaker (see User Controls below).
Press the STOP button in to re-engage motor power and stop that incessant beeping noise. Note that
you may also have to re-enable the motors when connected with client software, either by manually
pressing the MOTORS button on the User Control Panel, or through a special client command #4.
USER CONTROL PANEL
The User Control Panel is where you have access to the ARCOS-based onboard microcontroller. Found
inside the AT’s hinged access panel on the deck or on the left sidepanel of the DX, it consists of
control buttons and indicators and an RS-232 compatible serial port (9-pin DSUB connector).
Power and Status Indicators
The red PWR LED is lit whenever main power is applied to the robot. The green STAT LED state
depends on the operating mode and other conditions. It flashes slowly when the microcontroller is
awaiting a connection with a client and flashes quickly when in joydrive mode or when connected with
a client and the motors are engaged. It also flashes moderately fast when the microcontroller is in
maintenance mode.
10
MobileRobots Inc.
The BATTERY LED’s apparent color depends on your robot’s battery voltage: green when fully charged
(>12.5 volts) through orange, and finally red when the voltage drops below 11.5. When in
maintenance mode, the BATTERY LED glows bright red only, regardless of battery charge.
Buzzer
A built-in piezo buzzer (audible through the holes just above the
STAT and PWR LEDs) provides audible clues to the robot’s state,
such as upon successful startup of the microcontroller and a client
connection. An ARCOS client command lets you program the
buzzer, too, to play your own MIDI sounds.
Serial Port
The SERIAL connector, with incoming and outgoing data indicator
LEDs (RX and TX, respectively), is through where you may interact
with the ARCOS microcontroller from an offboard computer for
tethered client-server control and for microcontroller software
maintenance. The port is shared internally by the HOST serial port,
to which we connect the onboard computer or an Ethernet-to-serial
device. Either the SERIAL or HOST connector may be used for
client-server and maintenance mode communication with the
microcontroller.
Figure 12. P3-DX User Control
Panel
Figure 13. P3-AT computer and user controls
To avoid communication conflicts, digital switching circuitry disables the internal HOST serial port if the
attached serial device hasn’t opened the port. However, serial port interference will be a problem if
the HOST and User Control SERIAL ports are both occupied and engaged. Accordingly, remove the
cable from the User Control SERIAL port if you plan to connect with the microcontroller through the
HOST port.
In particular, if you have a serial cable connected to the User Control Panel SERIAL port, with the
attached PC has that serial port opened for communications, and you then reset or power up the robot
and microcontroller, ARCOS automatically goes into maintenance mode.
Power Switches
The AUX1 and AUX2 switches on the User Control Panel are pushbuttons which engage or disengage
power to 5 and 12 VDC connectors on the Motor-Power board to which we or you attach power for
various accessories. For example, 12 VDC power for the PTZ camera typically gets switched via the
AUX1 pushbutton. See Appendix B for power connections. Respective red LEDs indicate when power
is ON.
Reset and Motors
The red RESET pushbutton acts to unconditionally reset the microcontroller, disabling any active
connections or attached devices, including the motors.
11
Specifications & Controls
The white MOTORS pushbutton’s actions depend on the state of the microcontroller. When connected
with a client, push it to enable and disable the motors manually, as its label implies.5
To manually engage ARCOS maintenance mode, press and hold the white MOTORS button, press and
release the red RESET button, then release MOTORS. Note that while this manual operation was
required to engage maintenance mode with previous robot microcontrollers, it is no longer necessary
with ARCOS.
BODY, NOSE AND ACCESSORY PANELS
Your Pioneer 3’s sturdy, but lightweight aluminum body houses the batteries, drive motors, electronics
and other common components, including the front and rear sonar arrays. The body also has
sufficient room, with power and signal connectors, to support a variety of robotics accessories inside,
including an A/V wireless surveillance system, radio Ethernet, onboard computer, laser range finder
and more.
On all models except those outfitted with the docking-charging system, a hinged rear door gives you
easy access to the batteries, which you may quickly hot-swap to refresh any of up to three batteries.
Nose
The nose is where we put the onboard PC. The nose is readily removable for access: Simply remove
two screws from underneath the front sonar array. A third screw holds the nose to the bottom of the
AT’s body. The DX nose is hinged at the bottom.
Once the mounting screws are removed, simply pull the nose away from the body.6 This provides a
quick and easy way to get to the accessory boards and disk drive of the onboard PC, as well as to the
sonar gain adjustment for the front sonar array. The nose also is an ideal place for you to attach your
own custom accessories and sensors.
Access Panels
All DX’s come with a removable right-side panel through which you may install accessory connectors
and controls. A special side panel comes with the onboard PC option, for example, which provides
connectors for a monitor, keyboard, mouse and 10Base-T Ethernet, as well as the means to reset and
switch power for the onboard computer.
AT’s come with a single access panel in the deck. Fastened down with finger-tight screws, the User
Control Panel and onboard computer controls are accessible beneath the hinged door.
All models come with an access port near the center of the deck through which to run cables to the
internal components.
SONAR
Natively, ARCOS-based robots support up to four sonar arrays, each with up to eight transducers that
provide object detection and range information for collision avoidance, features recognition,
localization, and navigation. The sonar positions in all Pioneer 3 sonar arrays are fixed: one on each
side, and six facing outward at 20-degree intervals. Together, fore and aft sonar arrays provide 360
degrees of nearly seamless sensing for the platform.
Multiplexed Operation
Each sonar array’s transducers are multiplexed: Only one disc per array is active at a time, but all four
arrays fire one transducer simultaneously. The sonar ranging acquisition rate is adjustable, normally
set to 25 Hz (40 milliseconds per transducer per array). Sensitivity ranges from 10 centimeters (six
inches) to over four meters, depending on the ranging rate. You may control the sonar’s firing pattern
5
6
A client command lets you engage/disengage the motors programmatically. See chapter 6.
With older Pioneer 2 models, you also needed to remove the Gripper before removing the nose. With P3
models, the robot’s nose and Gripper come off together, so you only need to remove the nose mounting screws.
12
MobileRobots Inc.
through software, too; the default is left-to-right in sequence 0 to 7 for each array.
Chapters 6 and 7 for details.
See the ARCOS
Sensitivity Adjustment
The driver electronics for each array is calibrated at
the factory. However, you may adjust the array’s
sensitivity and range to accommodate differing
operating environments. The sonar gain control is on
the underside of the sonar driver board, which is
attached to the floor of each sonar module.
Sonar sensitivity adjustment controls are accessible
directly, although you may need to remove the Gripper
to access the front sonar, if you have that accessory
attached. For the front sonar, for instance, locate a
hole near the front underside of the array through
Figure 14. Pioneer 3 sonar array
which you can see the cap of the sonar-gain
adjustment potentiometer.
Using a small flat-blade screwdriver, turn the gain control
counterclockwise to make the sonar less sensitive to external noise and false echoes.
Low sonar-gain settings reduce the robot’s ability to see small objects. Under some circumstances,
that is desirable. For instance, attenuate the sonar if you are operating in a noisy environment or on
uneven or highly reflective floora heavy shag carpet, for example. If the sonar are too sensitive, they
will “see” the carpet immediately ahead of the robot as an obstacle.
Increase the sensitivity of the sonar by turning the gain-adjustment screw clockwise, making them
more likely to see small objects or objects at a greater distance. For instance, increase the gain if you
are operating in a relatively quiet and open environment with a smooth floor surface.
MOTORS, WHEELS, AND POSITION ENCODERS
Pioneer 3 drive systems use high-speed, high-torque, reversible-DC motors, each equipped with a highresolution optical quadrature shaft encoder for precise position and speed sensing and advanced
dead-reckoning. Motor gearhead ratios, encoder ticks-per-revolution and tire sizes vary by robot
model. However, ARCOS can correct for tire mismatches and convert most client commands and
reported server information from platform-independent distance and heading units into platformdependent encoder ticks, as expressed in the DriftFactor, TicksMM and RevCount FLASH
parameters. Please read Chapter 6 for more details.
All Pioneer 3-DX robots come with foam-filled solid tires with knobby treads.7 Pioneer 3-AT tires are
pneumatic so that you may configure your robot for differing terrains. In any configuration, be careful
to inflate the 3-AT tires evenly and adjust the respective DriftFactor, TicksMM and RevCount
FLASH parameters for proper operation. We ship Pioneer 3-AT’s with the tires inflated to 23 psi each.
BATTERIES AND POWER
Except when the DX is outfitted with the auto-recharging system (see below), Pioneer 3 robots contain
up to three, hot-swappable, seven ampere-hour, 12 volts direct-current (VDC), sealed lead/acid
batteries (total of 252 watt-hours), accessible through a hinged and latched rear door. We provide a
suction cup tool to help grab and slide each battery out of its bay. Spring contacts on the robot’s
battery power board alleviate the need for manually attaching and detaching power cables or
connectors.
Balance the batteries in your robot.
Battery life, of course, depends on the configuration of accessories and motor activity. AT charge life
typically ranges from two to three hours. The DX runs continuously for six hours or more; up to four
7
A ribbed-tread tire is available optionally. Contact ActivMedia sales for details.
13
Specifications & Controls
hours with onboard computer. If you don’t use the motors, your robot’s microcontroller will run for
several days on a single battery charge.
IMPORTANT: Batteries have a significant impact on the balance and operation of your robot. Under
most conditions, we recommend operating with three batteries. Otherwise, a single battery should be
mounted in the center, or two batteries inserted on each side of the battery container.
Battery Indicators and Low Voltage Conditions
The User Control Panel has a bi-color LED labeled BATTERY that visually indicates current battery
voltage. From approximately 12.5 volts and above, the LED glows bright green. The LED turns
progressively orange and then red as the voltage drops to approximately 11.5 volts.
Aurally, the User Control Panel’s buzzer, if active (see the ARCOS SoundTog client command and
FLASH parameter), will sound a repetitive alarm if the battery voltage drops consistently below the
FLASH LowBattery (11.5 VDC, by default) level. If the battery voltage drops below the FLASH
ShutdownVolts (11 VDC, by default) the microcontroller automatically shuts down a client connection
and notifies the computer, via the HOST RI (ring indicator) pin, to shut down and thereby prevent
data loss or systems corruption due to low batteries.
Recharging
Typical battery recharge time using the recommended accessory (800 mA) charger varies according to
the discharge state; it is roughly equal to three hours per volt per battery. The Power Cube accessory
allows simultaneous recharge of three swappable batteries outside the robot.
With the high-speed (4A maximum current) charger, recharge time is greatly reduced. It also supplies
sufficient current to continuously operate the robot and onboard accessories, such as the onboard PC
and radios. But with the higher-current charger, care must be taken to charge at least two batteries at
once. A single battery may overcharge and thereby damage both itself and the robot.
The new automated recharging system is the best option. Because its integrated charge-management
system has sufficient power and actively adjusts to system loads, it can run your DX's onboard
systems while properly and optimally recharging its batteries. And because the charging mechanism
may be operated independently of your robot's systems power, you may start up and shut down your
robot and its onboard systems without disturbing the battery charging cycle.
All our recommended chargers are specifically designed for safe lead-acid battery recharging.
Indicators on the module’s face show fast-charge mode (typically an orange LED) in which the
discharged batteries are given the maximal current, and trickle mode (green LED indicator), which the
batteries are given only enough current to remain at full charge.
SAFETY ARCOS WATCHDOGS
ARCOS contains a communications WatchDog that will halt the robot’s motion if communications
between a PC client and the robot server are disrupted for a set time interval. The robot will
automatically resume activity, including motion, as soon as communications are restored.
ARCOS also contains a stall monitor. If the drive exerts a PWM drive signal that equals or exceeds a
configurable level (StallVal) and the wheels fail to turn, motor power is cut off for a configurable
amount of time (StallWait). ARCOS also notifies the client which motor is stalled. When the
StallWait time elapses, motor power automatically switches back on and motion continues under
client control.
You may reconfigure the various FLASH-based parameter values to suit your application. See Chapter
7, Updating & Reconfiguring ARCOS, for details.
14
MobileRobots Inc.
Chapter 4
Accessories
Pioneer 3 robots have many accessory options. For convenience, we include a description of the more
commonly integrated accessories in this document. Please also refer to the detailed documents that
come with the accessory.
JOYSTICK AND JOYDRIVE MODE
Although not all models come standard with an exposed joystick connector, your Pioneer 3 robot’s
microcontroller has a joystick port and ARCOS contains a JoyDrive server for manual operation.8
Start driving your robot with a joystick any time when it is not connected with a client software
program. Simply plug it into the joystick port and press the “fire” button to engage the motors.
To drive your robot with a joystick while it is connected with an ARIA client (overrides client-based drive
commands for manual operation), you must have the client software send the ARCOS command #47
with an integer argument of one to enable the ARCOS joystick servers. Have your client send the
ARCOS JoyDrive command #47 with an integer argument of zero to disable the joystick drive
override.
The joystick’s fire button acts as the “deadman”—press it to start driving; release it to stop the robot’s
motors. The robot should drive forward and reverse, and turn left or right in response and at speeds
relative to the joystick’s position.
While driving forward, pull back on the joystick into full-reverse to
decelerate faster than normal.
When not connected with a client control program, releasing the joystick fire button stops the robot.
However when connected with a client, the client program resumes automatic operation of your
robot’s drive system. So, for example, your robot may speed up or slow down and turn, depending on
the actions of your client program.
You may adjust the maximum translation and rotation speeds and even disable JoyDrive mode,
through special ARCOS FLASH configuration parameters. See Chapter 7, Updating & Reconfiguring
ARCOS, for details.
BUMPERS
Bump rings fore and aft provide contact sensing for
when other sensing has failed to detect an obstacle.
The accessory rings also are segmented for contact
positioning.
Electronically and programmatically, the bumpers
trigger digital events which are reflected in the STALL
values of the standard server-information packet that
ARCOS automatically sends to a connected client.
Your client also may request a special IOpac server
information packet that contains additional, moredetailed bumper, stall, and other I/O related
information.
Figure 15. Pioneer 3 bumpers and
associated STALL bits
Your robot may not move if you unplug one or both bumpers.
8
A joystick adaptor kit for older DXs is available for a nominal fee through sales@MobileRobots.com. Also note that this port is
different than the USB-based joystick port found on the back of the laser mounting bracket.
15
Accessories
ARCOS itself monitors and responds to protection triggers. For example, ARCOS’ bumpStall server
triggers a stall in the robot whenever one or more bumper segments get triggered while the robot is
moving in the same direction (front forward or rear reverse). Please consult the Appendix A for
interface details and the chapters on ARCOS, particularly the section which describes the contents of
the IOpac server information packet, later in this manual for configuration and programming details.
AUTOMATED RECHARGING ACCESSORY
The Pioneer 3-DX automated recharging accessory9 is both a manual and an automated mechanism.
Onboard controls, triggered either by the DEPLOY CHARGER button near the manual CHARGE port or by
ARCOS-mediated client commands, deploy actuated contacts on the bottom of the robot, which in turn
seat onto the power platform. Then, when activated by an IR-based, unique frequency-modulated
signal from the robot, the power platform delivers up to 17 VDC @ 11.5 A to its plates.
While connected, onboard circuitry conditions the power to optimally charge the robot’s three 7-Ahr,
12 VDC lead-acid batteries (6A charging current max) and provides sufficient power (up to 5.5 A) for
operation of its onboard systems.
Manual Operation (Robot Power OFF)
With MAIN POWER off, place the robot over the power platform so that its charging contacts are
perpendicular to and, when deployed, contact the charger plates. Note that no charging power is
applied to the plates on the platform; only low signal (5VDC @ <300mA) power for the IR detectors.
Press and hold the DEPLOY CHARGER button to manually deploy the power-contact mechanism on the
bottom of the robot. Hold for a few seconds, but not more than 10 seconds. Charging is activated by
positive contact with the power platform. In that case, the charge lamp on the power unit will light and
the robot's contacts will remain deployed when you release the DEPLOY CHARGER button. Otherwise,
the mechanism will retract. In that case, re-position the robot and try again.
The robot's power-contact mechanism automatically retracts if you press the DEPLOY CHARGER button
while charging, if you move the robot on the power platform and lose positive charging contact, or if
you remove power from the power unit. In all cases, charging power is removed immediately from the
power platform when not actively engaged by the robot.
Manual Operation (Robot Power and Systems ON)
Because the automated recharging system’s integrated circuitry actively adjusts to system loads, it
can run your robot's onboard systems while properly and optimally recharging its batteries. And
because the charging mechanism may be operated independently of your robot's systems power, you
may start up and shut down your robot and its onboard systems without disturbing the battery
charging cycle, if engaged.
For example, with MAIN POWER on, use JoyStick mode to position the robot onto the power platform.
Then manually deploy the power-contact mechanism as described in the section above. Thereafter,
switch MAIN POWER off, or conversely, start up and shut down other onboard systems, including the
PC, camera, laser and other accessories, to proceed with development work without disturbing battery
recharging.
The same conditions apply to remove power and retract the robot's power-contact mechanism with the
robot’s MAIN POWER on as well as off. Since the ARCOS microcontroller always is active while the
robot’s power is on, you also may connect and disconnect a client program, run in maintenance mode,
or engage JoyDrive mode. However, engaging the motors, such as when you press the “fire” button on
the joystick, immediately and automatically removes charging power and retracts the power-contact
mechanism. And the mechanism will not activate manually via the DEPLOY CHARGER button until you
disengage the motors.
9 The power-contact mechanism and onboard power conditioning circuitry can be retrofitted to all Pioneer 3 and some Pioneer
2 and Performance PeopleBot robots. All require return to the factory.
16
MobileRobots Inc.
RADIO CONTROLS AND ACCESSORIES
All MOBILEROBOTS platforms are servers in a client-server architecture. You supply the client computer
to run your intelligent mobile-robot applications. The client can be either an onboard piggy-back laptop
or embedded PC, or an off-board PC connected through radio modems or wireless serial Ethernet. In
all cases, that client PC must connect to the internal HOST or User Control Panel SERIAL port in order
for the robot and your software to work.
For the piggyback laptop or embedded PC, the serial connection is via a common “pass-through” serial
cable. Radio modems may replace that serial cable with a wireless tether. Accordingly, if you have
radio modems, one is inside your robot and connected to the microcontroller’s HOST serial port, and
the other modem plugs into a serial port on some offboard computer where you run your client
software.10 Hence, in these configurations, there is one dedicated client computer.
Radio Ethernet is a little more complicated, but is the preferred method because it lets you use many
different computers on the network to become the robot’s client. If you have a PC onboard (either
Figure 16. Client-server connection options.
integrated or piggyback), it can supply the radio Ethernet connection through a PCMCIA-based wireless
Ethernet card.
We also provide a wireless Ethernet-to-serial accessory which connects directly to your robot’s
microcontroller. It works by automatically translating network-based Ethernet packet communications
into streaming serial for the robot microcontroller and back again.
Running your robot through wireless Ethernet to an onboard computer is different than with the
Ethernet-to-serial device. In the first case, you run your robot client software on the onboard PC and
use wireless Ethernet to monitor and control that PC’s operation. In the latter case, you run the client
software on a remote LAN-based PC.
Accordingly, a major disadvantage of the wireless Ethernet-to-serial device is that it requires a
consistent wireless connection with the robot. Disruption of the radio signal—a common occurrence in
even the most modern installations—leads to poor robot performance and very short ranges of
operation.
This is why we recommend onboard client PCs for wider, much more robust areas of autonomous
operation, particularly when equipped with their own wireless Ethernet. In this configuration, you run
the client software and its interactions with the robot microcontroller locally and simply rely on the
wireless connection to export and operate the client controls. Moreover, the onboard PC is often
needed for local processing, such as to support a laser range finder or to capture and process live
video for vision work.
INTEGRATED PC
Mounted just behind the nose of the robot, the Pioneer 3 integrated PC is a common EBX form-factor
board that comes with up to four serial ports, 10/100Base-T Ethernet, monitor, keyboard and mouse
ports, two USB ports and support for floppy, as well as IDE hard-disk drives.
For additional
functionality, such as for sound, video framegrabbing, firewire or PCMCIA bus and wireless Ethernet,
10
We no longer offer a radio modem accessory.
17
Accessories
the onboard PC accepts PC104 and PC104-plus (PCI bus-enabled) interface cards that stack on the
motherboard.
Necessary 5 VDC power comes from a dedicated DC:DC
converter, mounted nearby. A hard-disk drive is specially
shock-mounted to the robot’s nose, inbetween a cooling fan
and computer speaker.
The onboard PC communicates with the robot’s
microcontroller through its HOST serial port and the
dedicated serial port COM1 under Windows or /dev/ttyS0
on Linux systems. The microcontroller automatically
switches in that HOST-to-PC connection when PC-based
client software opens the serial port. Otherwise, the PC
doesn’t interfere with externally connected clients through
the shared SERIAL port on the User Control Panel.
Note also that some signals on the microcontroller’s HOST
serial port as connected with the onboard PC or other
Figure 17. DX computer control
accessory can be used for automated PC shutdown or other
side panel
utilities:
Pin 4 (DSR) is RS-232 high when the
microcontroller operates normally; otherwise it is low when
reset or in maintenance mode. Similarly, pin 9 (RI) normally is low and goes RS-232 high when the
robot’s batteries drop below a set (FLASH ShutdownVolts parameter) voltage level.
Computer Control Panel
User-accessible communication and control port connectors, switches and indicators for the onboard
PC are on the Computer Control Panel, found on the right side panel of the DX or in the hinged control
well next to the user controls of the AT. The controls and ports use common connectors: standard
monitor DSUB and PS/2 connectors on the mouse and keyboard. The Ethernet is a 10/100Base-T
standard RJ-45 socket.
The ON/OFF slide switch directly controls power to the onboard PC—through Main Power, unlike some
earlier versions of the onboard system which included a delayed power shutdown. The PWR LED lights
when the computer has power.
The HDD LED lights when the onboard hard-disk drive is active. The RESET button restarts the PC.
Operating the Onboard PC
This is a brief overview of operating the onboard PC. Please consult the Computer Systems
Documentation and the OS manufacturer’s documentation for more detail. MOBILEROBOTS software
runs on either Windows or RedHat or Debian Linux.11 Accordingly, we prefer and support those
operating systems on the onboard PC.
When we perform the installation and configuration, we install our robotics and accessory software
typically in /usr/local on Linux systems or in C:\Program Files\MobileRobots under Windows.
Of course, we install the appropriate drivers for the various accessory expansion cards, such as for a
framegrabber or sound card. Please consult the respective MOBILEROBOTS application software
manual, such as the Advanced Color Tracking System (ACTS) for the video framegrabber.
The first time you access the onboard PC, we recommend that you put the robot up on blocks so that it
cannot inadvertently move and wreak havoc with external connections. Attach a keyboard, monitor,
and mouse to their respective sockets on the Computer Control Panel. Switch Main Power and then
the computer power switch ON.
After boot up, log in to the system. We’ve already created two users: one with common systems and
file read/write permissions (‘guest’) and one with full-access to the PC software and OS—root
(Linux) or ‘administrator’ (Windows). If there is a password (usually not), it’s ‘mobilerobots’.
11
Though we don’t support it today, our software typically compiles and runs on MAC OS with minor modifications.
18
MobileRobots Inc.
When connected directly, we recommend you log in with full-access capabilities so that you can do
systems set up and maintenance, such as change passwords, add users and set up the network. Do
note that with Linux systems, you cannot log in remotely over the network as root; you must log in as
a common user and use the ‘su –‘ command thereafter to attain superuser (‘root’ login) status.
Once logged into a Windows system, it’s simply a matter of clicking the mouse to select programs and
applications. With Linux, use the ‘startx’ command to enable the X-Windows desktop and GUI
environment, only as needed. You might perform some of the Quick Start activities this way, although
motion is impractical because of the monitor, mouse and keyboard tethers. You may remove these
while the system is active at your own risk.
Rather, we suggest that you run the Quick Start activities from an offboard computer first (onboard PC
off) and then tackle the networking issues to establish a remote, preferably wireless connection with
your robot.
PC Networking
The RJ-45 connector on the Computer Control Panel provides wired 10/100Base-T Ethernet
networking directly with the onboard PC. With the purchased option, we also install a PCMCIA adaptor
card on the PC’s accessory stack and insert a wireless Ethernet card in one of its slots. The wireless
Ethernet antenna sits atop the robot’s deck.
To complete the wireless installation, you will need to provide an Access Point to your LAN (comes as
an accessory with most units). Attach the Access Point to one of your LAN hubs or switches. No
special configuration is required. We use the default operating mode: ‘managed’ client-server.
We ship installed PC systems’ preset and tested at a fixed IP address with Class-C network
configuration. We allocate the same IP to both the wired and wireless Ethernet ports, typically
192.168.1.32. Although you need not fuss with drivers or low-level device settings, before you may
establish a network connection with the onboard PC (not the robot’s microcontroller!), even if just
through a “cross-over” Ethernet cable to another PC, you’ll need to reconfigure the robot’s PC network
settings. Please consult with your network systems administrator for networking details.
Briefly, with Windows go to the Control Panel’s Network and Dial-up Connections wizard and
choose the networking device’s Properties to change the IP address and other details. Under Linux
there are similar, GUI-based tools with X-Windows to help you set up the network, such as netcfg, but
we prefer to edit (emacs or vi) the salient network settings in /etc/sysconfig/network and in the
specific device configuration files found in /etc/sysconfig/network-scripts/, such as ifcfgeth0 (wired Ethernet) and ifcfg-eth1 or ifcfg-wvlan0 (wireless).
From Windows, use the Control Panel Network and Dial-up Connections tool to enable or disable
a particular device. From Linux, use ifup and ifdown to enable or disable an Ethernet device. For
example as superuser, type ‘ifdown eth0; ifup eth1’ to switch from a tethered to a wireless
Ethernet connection.
For remote connections over Ethernet to your onboard PC, simply use telnet or the more secure ssh to
log in to your Linux system. Allow X-windows server connections at your remote PC (xhost) if you plan
to export the X-Windows display from the robot PC for remote GUI-based controls (export
DISPLAY=remote’s hostname or IP:0, for example).
With Windows, you will need a special remote-control application to establish a GUI-based connection
from a remote computer to the onboard PC over the network; VNCserver, for example, or XWin32.
Please note that, with the onboard PC and wireless Ethernet, as opposed to the wireless Ethernet-toserial device, you may not connect with the robot’s microcontroller directly over the network: That is,
you cannot run a client application like the ARIA demo on a remote PC and choose to directly connect
with the robot server by selecting the robot PC’s IP address. Rather, either run the client application
on the onboard PC and export the display and controls over the network to the remote PC (preferred),
or use the ARIA-based IPTHRU programs (see program sources in Aria/examples) to negotiate the
IP-to-serial conversions needed by the client-server connection.
19
Accessories
UPS and Genpowerd
To protect your robot’s onboard PC data, we’ve enabled a detection scheme in ARCOS and UPS-like
software on the PC that invoke shutdown of the operating system in the event of a persistent lowbattery condition.12
ARCOS raises the HOST serial port's DSR pin 6 to RS-232 high and puts the RI pin 9 to low when the
microcontroller is operating normally and your robot’s battery power is above the FLASH-parameter set
ShutdownVolts value, which default is 11 VDC.13 The RI pin goes high when power drops
consistently below ShutdownVolts. Genpowerd running on the onboard Linux system or ups.exe
running under Windows, detects the change of state and initiates OS shutdown after a short wait,
during which the shutdown may be canceled by raising the battery voltage, such as by attaching a
charger.
Genpowerd monitors the HOST serial RI port on /dev/ttyS0. Windows’ ups.exe requires a dedicated
serial port—COM2 on current systems, and prefers to monitor the CTS line. Consequently, we wire the
onboard PC serial connector differently for Linux versus Windows PCs. Please consult the ARCOS
Chapters 6 and 7 for more details.
12
13
The original Pioneer 2 Motor-Power boards implemented a similar strategy in hardware.
RI and DSR on the HOST serial port are RS-232 low during reset or when the controller is in Maintenance Mode.
20
MobileRobots Inc.
Chapter 5
Quick Start
PREPARATIVE HARDWARE ASSEMBLY
Your Pioneer 3 robot comes fully assembled and ready for out-of-the-box operation. However, you may
need to attach some accessories that were shipped separately for safety. The procedures we describe
herein are for control of the basic robot.
If you have the onboard PC option, we recommend that you leave it off and perform the following tests
first with a laptop or desktop computer tethered to the SERIAL port on the User Control Panel, then
attack the many networking issues before you establish a remote-control connection with the onboard
PC.
CAREFUL
Slide the batteries into the robot TERMINALS LAST.
Otherwise, you will damage the robot.
Install Batteries
Out of the box, your Pioneer 3 robot comes with its batteries fully charged, although shipped
separately, unless you have the special automated recharging system. Slide at least one and up to
three batteries into the robot’s battery box through the back door. Balance them: one in the center; if
two, then one on each side.
Client-Server Communications
Your robot requires a serial communication link with a client PC for operation. The serial link may be:
A tether cable from the robot’s 9-pin serial connector on the User Control Panel to a computer
A piggyback laptop cabled to the User Control Panel serial port
Serial Ethernet
Radio Modem
An integrated onboard PC wired internally for direct onboard control
DEMO CLIENT
MOBILEROBOTS’ robot-client software-development environments comes with many demonstration
software. ARIA’s best is demo since it also serves as a way to test all your robot’s features and
accessories.
MOBILEROBOTS also comes with sonar-based advanced robotics localization and navigation software
(SonARNL) including a GUI networked-client application, MobileEyes, on CD-ROM. MOBILEROBOTS
customers also may obtain these and related software and updates from our support website:
http://robots.MobileRobots.com
Please consult the separate SonARNL Installation and Operations Manual for details.
STARTING UP ARIA DEMO
ARIA’s examples are text-based terminal-like applications that do not include a GUI, so its programs do
not require X-Windows over Linux or special software on a remote PC client—a simple telnet session
will do the trick.
21
Quick Start
First, please note well that you cannot connect with and control your robot through its microcontroller
directly from a remote client over the network without special hardware (wireless Ethernet-to-serial
device) or, alternatively, special software that runs on the onboard computer and converts IP packets
into serial data.14 Otherwise, you must run the client software on the robot’s PC or on a PC that is
connected to the robot’s microcontroller HOST or User Control Panel SERIAL port. You may, of course,
export the controls and display of your onboard PC over the network from X-windows or with special
Windows software, such as VNCserver.
If you are using a wireless Ethernet-to-serial device to communicate with the robot’s microcontroller
from a desktop PC, now is a good time to power up the unit. The AUX1 power switch for the integrated
radio is on the User Control Panel. You might test your connection, too—either peer-to-peer or through
an access point on your LAN—from your PC to the radio Ethernet installed in your robot with the
common ping program.
Windows users may select the ARIA demo from the Start menu, in the MobileRobots program group.
Otherwise, start if from the ARIA bin\ directory.
Linux users will find the compiled demo in /usr/local/Aria/bin/ or in examples/. Start it:
% ./demo
Demo Startup Options
By default, the ARIA demo program connects with the robot through the serial port COM1 under
Windows or /dev/ttyS0 under Linux. And, by default, demo connects with an attached laser
rangefinder accessory through serial port COM3 or /dev/ttyS2. To change those connection options,
either modify the ARIA source code (examples/demo.cpp and related files in src/) and recompile the
application, or use a startup argument on the command line (Table 1).
For example, from the Windows Start:Run dialog, choose Browse… and select the ARIA demo
program: C:\Program Files\MobileRobots\ARIA\bin\demo.exe. Then, type a command line
argument at the end of the text in the Run dialog. To connect through the Ethernet-to-serial radio
device over the wireless network, for example, try the command:
C:\Program Files\MobileRobots\ARIA\bin\demo.exe -remoteHost 192.168.1.32
Table 1. ARIA demo’s robot connection start-up options
-remoteHost
<Host
(abbreviated -rh)
Name
-robotPort <Serial Port>
(abbreviated -rp)
-robotBaud <baudrate>
(abbreviated -rb)
-remoteRobotTcpPort <Number>
(abbreviated -rrtp)
or
IP>
Connect with robot through a remote host over
the network instead of a serial port;
requires special serial Ethernet hardware or
IPTHRU software mediation.
Connect with robot through specified serial
port name; COM3, for example. COM1 or
/dev/ttyS0 is the default.
Connect with robot using the specified
baudrate; 19200 or 38400, for example.
Default is 9600.
Remote TCP host-to-robot connection port
number; default is 8101.
A Successful Connection
ARIA prints out lots of diagnostic text as it negotiates a connection with the robot. If successful, the
client requests various ARCOS servers to start their activities, including sonar polling, position
integration and so on. The microcontroller sounds an audible connection cue and you should hear
the robot’s sonar ping with a distinctive and repetitive clicking. In addition, the motors-associated
STATUS LED on the User Control Panel should flash very fast (was flashing slowly while awaiting
connection). Note that the ARIA demo automatically engages your robot’s motors though a special
client command. Normally, the motors are disengaged when first connecting.
14
Look in the ARIA/examples directory for a program called ipthru. It converts IP to serial and back again for remote-control
clients connected through the onboard PC.
22
MobileRobots Inc.
The amber SERIAL port indicator LEDs on the robot’s User Control Panel should blink to indicate ARIAclient to ARCOS-server communications, too.
OPERATING THE ARIA DEMONSTRATION CLIENT
When connected with the ARIA demo client, your robot
becomes responsive and intelligent. For example, it
moves cautiously. Although it may drive toward an
obstacle, your robot will not crash because the ARIA
demo includes obstacle-avoidance behaviors which
enable the robot to detect and actively avoid
collisions.
Table 2. Keyboard teleoperation
KEY
ACTION
↑
forward
↓
reverse
←
turn left
turn right
→
The ARIA demo displays a menu of robot operation
space
all stop
options. The default mode of operation is teleop. In
teleop mode, you drive the robot manually, using the
arrow keys on your keyboard or a joystick connected to the client PC’s joystick port (as opposed to a
joystick port on the robot).
Table 2. ARIA demo operation modes
MODE
HOT
DESCRIPTION
KEY
laser
l
Displays the closest and furthest
readings from the laser range
finder
Displays the digital and analog-todigital I/O ports
io
i
position
p
Displays the coordinates of the
robot’s position relative to its
starting location
bumps
b
Displays bumpers status
sonar
s
Displays the sonar readings
camera
c
Controls and exercises the pantilt-zoom robotic camera
gripper
g
Controls, exercises and displays
status of the Gripper accessory
While
driving
from
the
keyboard, hold down the
respective
keys
to
simultaneously drive the robot
forward or backward and turn
right or left.
For instance,
hold down the up-arrow key to
have the robot accelerate
forward to its cruising speed of
around 400 millimeters per
second (defined in the source
code). Release the arrow key
to have the robot slow down
and stop. Press and hold the
right- or left-arrow key to have
the robot rotate or turn in an
arc if you also hold down the
up- or down-arrow key.
The other modes of ARIA demo
operation give you access to
your robot’s various sensors
and accessories, including
teleop
t
Drive and steer the robot via the
encoders,
sonar,
laser,
keyboard or a joystick; avoids
Gripper, a pan-tilt-zoom robotic
collisions
camera, I/O port states,
unguarded
u
Same as teleop, except no collision
bumpers and more. Accoravoidance
dingly, use the ARIA demo not
only as a demonstration tool,
direct
d
Direct command mode
but as a diagnostic one, as
well, if you suspect a sensor or effector has failed or is working poorly. The demo also is useful for
calibrating your robot’s drive system.
wander
w
Sends the robot to move around at
its own whim while avoiding
obstacles
Access each ARIA demo mode by pressing its related hot-key: ‘t’, for instance, to select
teleoperation. Each mode includes onscreen instructions and may have sub-menus for operating
of the respective device.
DISCONNECTING
When you finish, press the Esc key to disconnect the ARIA client from your robot server and exit the
ARIA demonstration program. Your robot should disengage its drive motors and stop moving, and its
sonar should stop firing. You may now slide the robot’s Main Power switch to OFF.
23
Quick Start
TROUBLESHOOTING
Most problems occur when attempting to connect the ARIA client with a robot for the first time. The
process can be daunting if you don’t make the right connections and installations.
Proper Connections
Make sure you have ARIA properly installed and that your robot and connections are correct. A
common mistake with Linux is not having the proper permissions on the connecting serial port.
Make sure your robot’s batteries are fully charged (battery LED green). The robot servers shut down
and won’t allow a connection at under ShutdownVolts.
ATTENTION!
The ARIA-to-robot connection is SERIAL only. Accordingly, run the ARIA
demo client with the onboard or piggyback computer, over radio
modems or over the network with the wireless Ethernet-to-serial device.
If you are using the onboard PC or radios, the serial connection is internal and established at the
factory; you should not have problems with those cables. Simply make sure the AUX1 switch on the
User Control Panel is engaged (associated LED lit), for example. And remove any serial cable that is
plugged into the User Control Panel as it may interfere with internal serial communication.
With other serial connections, make sure to use the proper cable: a “pass-through” one, minimally
connecting pins 2, 3, and 5 of your PC’s serial port to their respective contacts of the robot’s serial
port on the User Control Panel.
If you access the wrong serial port, the ARIA demonstration program will display an error message. If
the robot server isn't listening or if the serial link is severed somewhere between the client and server
(cable loose or the radio is off, for instance), the client will attempt "Syncing 0" several times and fail.
In that case, RESET the robot and check your serial connections.
If for some reason communications get severed between the ARIA client and ARCOS server, but both
the client and server remain active, you may revive the connection with little effort: If you are using
wireless communications, first check and see if the robot is out of range.
Communications also will fail if the client and/or server is somehow disabled during a session. For
instance, if you inadvertently switch off the robot’s Main Power or press the RESET button, you must
restart the connection. Turning the Main Power switch OFF and then back ON, or pressing the RESET
button puts the robot servers back to their wait state, ready to accept client connections again. If the
ARIA demo or other client application is still active, simply press esc and restart.
24
MobileRobots Inc.
Chapter 6
ARCOS
All MOBILEROBOTS platforms use a client-server
mobile robot-control architecture. In the model, the
robot’s servers work to manage all the low-level
details of the mobile robot’s systems. These
include operating the motors, firing the sonar,
collecting and reporting sonar and wheel encoder
data and so onall on command from and
reporting to a separate client application, such as
the ARIA demo.
With this client/server architecture, robotics
applications developers do not need to know many
details about a particular robot server, because the
client insulates them from this lowest level of
control. Some of you, however, may want to write
your own robotics control and reactive planning
programs, or just would like to have a closer
programming relationship with your robot. This
chapter explains how to communicate with and
control your robot via the Advanced Robot Control
and Operations Software (ARCOS) client-server
interface.
The same ARCOS functions and
commands are supported in the various clientprogramming environments that accompany your
robot or are available for separate license.
Experienced MOBILEROBOTS users can be assured
that ARCOS is upwardly compatible with all
MOBILEROBOTS platforms, implementing the same
Figure 18. MOBILEROBOTS client-server
commands and information packets that first
control architecture
appeared in the Pioneer 1-based PSOS, in the
original Pioneer 2-based P2OS, and more recent
AROS-based Pioneer 2s and 3s, as well as PeopleBot and PowerBot. ARCOS, of course, extends the
servers to add new functionality, improve performance, and provide additional information about the
robot's state and sensing.
CLIENT-SERVER COMMUNICATION PACKET PROTOCOLS
MOBILEROBOTS platforms communicate with a client using special client-server communication packet
protocols, one for command packets from client to server and another for Server Information Packets
(SIPs) from the server to client. Both protocols are bit streams consisting of five main elements: a
two-byte header, a one-byte count of the number of subsequent packet bytes, the client command or
SIP packet type, command data types and argument values or SIP data bytes, and, finally, a two-byte
checksum. Packets are limited to a maximum of 207 bytes each.
The two-byte header which signals the start of a packet is the same for both client-command packets
and SIPs: 0xFA (250) followed by 0xFB (251). The subsequent count byte is the number of all
subsequent bytes in the packet including the checksum, but not including the byte count value itself
or the header bytes.
Data types are simple and depend on the element (see descriptions below): client commands, SIP
types, and so on, are single 8-bit bytes, for example. Command arguments and SIP values may be 2byte integers, ordered as least-significant byte first. Some data are strings of up to a maximum 200
bytes, prefaced by a length byte. Unlike common data integers, the two-byte checksum appears with
its most-significant byte first.
25
ARCOS
Packet Checksum
Calculate the client-server packet checksum by successively adding data byte pairs (high byte first) to
a running checksum (initially zero), disregarding sign and overflow. If there are an odd number of
data bytes, the last byte is XORed to the low-order byte of the checksum.
AREXPORT ArTypes::Byte2 ArRobotPacket::calcCheckSum(void)
{
int i;
unsigned char n;
int c = 0;
i = 3;
n = myBuf[2] - 2;
while (n > 1) {
c += ((unsigned char)myBuf[i]<<8) | (unsigned char)myBuf[i+1];
c = c & 0xffff;
n -= 2;
i += 2;
}
if (n > 0)
c = c ^ (int)((unsigned char) myBuf[i]);
return c;
}
(from MobileRobots ARIA ArRobotPacket.cpp)
NOTE: The checksum integer is placed at the end of the packet, with its bytes in the reverse order of
that used for data; that is, b0 is the high byte and b1 is the low byte.
Table 3. Client command packet protocol
COMPONENT
header
byte count
command
number
argument
type
BYTES
2
1
VALUE
0xFA, 0xFB
N
DESCRIPTION
Packet header; same for client and server
Number of command/argument bytes plus
Checksum’s two bytes, but not including Byte
Count itself or the header bytes. Maximum
of 249.
1
0 - 255
Client command number; see
1
0x3B or
0x1B or
0x2B
argument
n
data
checksum
2
computed
Required data type of command argument:
positive integer,
negative or absolute integer,
or string
Command argument; always 2-byte integer or
string containing length prefix
Packet integrity checksum
Table 5.
Packet Errors
ARCOS ignores a client command packet whose byte count exceeds 204 (total packet size of 207
bytes) or has an erroneous checksum. The client should similarly ignore erroneous SIPs.
Because of the real-time nature of client-server mobile-robotics interactions, we made a conscious
decision to provide an unacknowledged communication packet interface. Retransmitting server
information or command packets typically serves no useful purpose because old data is useless in
maintaining responsive robot behaviors.
Nonetheless, the client-server interface provides a simple means for dealing with ignored command
packets: Most of the client commands alter state variables in the server. By examining those values
in respective SIPs, client software may detect ignored commands and re-issue them until achieving
the correct state.
26
MobileRobots Inc.
THE CLIENT-SERVER CONNECTION
Before exerting any control, a client application must first establish a connection with the robot server
via a serial link through the robot microcontroller’s HOST serial port either via the internal HOST or the
User Control Panel SERIAL connector. After establishing the communication link, the client then
sends commands to and receives operating information from the server.
When first started or reset, ARCOS is in a special wait state listening for communication packets to
establish a client-server connection.15 To establish a connection, the client application must send a
series of three synchronization packets containing the SYNC0, SYNC1 and SYNC2 commands in
succession, and retrieve the server responses.
Specifically, and as examples of the client command protocol described below, the sequence of
synchronization bytes is:
SYNC0:
SYNC1:
SYNC2:
250, 251, 3, 0, 0, 0
250, 251, 3, 1, 0, 1
250, 251, 3, 2, 0, 2
When in wait mode, ARCOS echoes the packets verbatim back to the client. The client should listen
for the returned packets and only issue the next synchronization packet after it has received the
appropriate echo.
Autoconfiguration (SYNC2)
ARCOS automatically sends robot identifying information back to the client following the last
synchronization packet (SYNC2). The configuration values are three NULL-terminated strings that
comprise the robot’s FLASH-stored name, class, and subclass. You may uniquely name your robot
with the FLASH configuration tool we provide. The class and subclass are constants normally set
at the factory and not changed thereafter. (See next chapter for details.)
The class string typically is Pioneer. The subclass depends on your robot model; P3DX-SH or
P3AT-SH, for example. Clients may use these identifying strings to self-configure their own operating
parameters. ARIA, for instance, loads and uses the robot’s related parameter files found in the special
Aria/params directory.
Opening the Servers—OPEN
Once you’ve established a connection with ARCOS, your client should send the OPEN command #1
(250, 251, 3, 1, 0, 1) to the server, which causes the microcontroller to perform a few housekeeping
functions, start its various servers, such as for the sonar and motors, and begin transmitting server
information to the client.
Note that when at first connected, your robot's motors are disabled regardless of their state when last
connected. To enable the motors after starting a connection, you must either do it manually (press the
white MOTORS button on the User Control Panel) or have your client send an ENABLE client command
#4 with an integer argument of 1. See Client Commands below.
Once connected, send the ENABLE command
or press the white MOTORS button on the User Control Panel
to enable your robot’s motors.
Server Information Packets
Once OPENed, ARCOS automatically and repeatedly sends a packet of information over the HOST serial
port back to the connected client. The standard ARCOS SIP informs the client about a number of
operating states and readings, using the order and data types described in the nearby Table. ARCOS
also supports several additional SIP types. See following sections for details.
15
There also is maintenance mode for ARCOS downloads and parameter updates; see next chapter for details.
27
ARCOS
Table 4. ARCOS standard SIP contents
LABEL
DATA
HEADER
2 bytes
byte
BYTE COUNT
TYPE
0x3s
XPOS
int
YPOS
int
THPOS
L VEL
int
int
R VEL
int
byte
BATTERY
STALL AND
BUMPERS
uint╪
int
CONTROL
FLAGS
uint
COMPASS
NUMBER
byte
byte
byte
RANGE
uint
SONAR COUNT
DESCRIPTION
Exactly in order 0xFA (250), 0xFB (251)
Number of data bytes + 2 (checksum), not including
header or byte-count bytes
Motors status; s = 2 when motors stopped or 3 when
robot moving.
Wheel-encoder integrated coordinates in millimeters
(DistConvFactor‡ = 1.0).
Orientation in degrees (AngleConvFactor‡ = 1.0).
Wheel velocities in millimeters per second
(VelConvFactor‡ = 1.0)
Battery charge in tenths of volts (101 = 10.1 volts,
for example)
Motor stall and bumper indicators. Bit 0 is the left
wheel stall indicator, set to 1 if stalled. Bits 1-7
correspond to the first bumper I/O digital input states
(accessory dependent). Bit 8 is the right wheel stall,
and bits 9-15 correspond the second bumper I/O states,
also accessory and application dependent.
Setpoint of the server’s angular position servo in
degrees
Bit 0 motors status; bits 1-4 sonar array status; bits
5,6 STOP; bits 7,8 ledge-sense IRs; bit 9 joystick fire
button; bit 10 auto—charger power-good.
Electronic compass accessory heading in 2-degree units
Number of new sonar readings included in SIP
If Sonar Count>0, is sonar disc number 0-31; readings
follow
Corrected sonar range value in millimeters
(RangeConvFactor‡ = 1.0)
…REST OF THE SONAR READINGS…
GRIP_STATE
ANALOG
byte
byte
byte
DIGIN
byte
DIGOUT
BATTERYX10
byte
int
CHARGESTATE
byte
ANPORT
Gripper state byte.
Selected analog port number 1-5
User Analog input (0-255=0-5 VDC) reading on selected
port
Byte-encoded User I/O digital input
Byte-encoded User I/O digital output
Actual battery voltage in 0.1 V (especially useful for
battery voltages > 25.5)
Version 1.5 and later. Automated recharging state byte;
-1 = unknown; 0=not charging; 1=bulk; 2=overcharge;
3=float.
Packet-integrity checksum
CHECKSUM
int
‡ Client-side data-conversion factor. Consult the ARIA parameter file your robot.
╪ Explicitly, an unsigned integer; all others sign-extended
Keeping the Beat—PULSE
An ARCOS safety watchdog expects that, once connected, your robot receives at least one client
command packet from the attached PC every watchDog seconds, as defined in your robot’s FLASH
(default is two seconds). Otherwise, it assumes the client-server connection is broken and stops the
robot.
Some clients—ARIA-based ones, for instance—use the good practice of sending a PULSE client
command #0 (250, 251, 3, 0, 0, 0) just after OPEN. And if your client application will be otherwise
distracted for some time, periodically issue the PULSE command to let your robot server know that
your client is indeed alive and well. It has no other effect.
If the robot shuts down due to lack of communication with the client, it will revive upon receipt of a
client command and automatically accelerate to the last-specified speed and heading setpoints.
28
MobileRobots Inc.
Closing the Connection—CLOSE
To close the client-server connection, which automatically disables the motors and other functions like
sonar, simply issue the client CLOSE command #2 (250, 251, 3, 2, 0, 2).
Most of ARCOS’ operating parameters return to their FLASH-based default values upon disconnection
with the client.16
CLIENT COMMANDS
ARCOS has a structured command format for receiving and responding to directions from a client for
control and operation of your robot. Client commands are comprised of a one-byte command number
optionally followed, if required by the command, by a one-byte description of the argument type and
then the argument value.
The number of client commands you may send per second depends on the HOST serial baud rate,
average number of data bytes per command, synchronicity of the communication link, and so on.
ARCOS’ command processor runs on a one millisecond interrupt cycle, but the server response speed
depends on the command. Typically, limit client commands to a maximum of one every 3-5
milliseconds or be prepared to recover from lost commands.
Table 5. ARCOS client-side command set
COMMAND
#
ARGS
SYNC0
0
1
2
none
none
none
0
1
2
3
4
5
none
none
none
str
int
int
6
7
8
int
none
int
SYNC1
SYNC2
PULSE
OPEN
CLOSE
POLLING
ENABLE
SETA
SETV
SETO
MOVE
VEL
9
10
11
int
int
int
HEAD
12
int
DHEAD
13
int
SAY
15
str
JOYREQUEST
17
int
CONFIG
ENCODER
18
19
none
int
RVEL
21
int
DCHEAD
22
int
SETRA
23
int
SONAR
28
int
STOP
29
none
ROTATE
SETRV
16
DESCRIPTION
Before Client Connection
Start connection. Send in sequence. ARCOS echoes
synchronization commands back to client, and
robot-specific auto-synchronization after SYNC2.
After Established Connection
Reset server watchdog.
Start up servers.
Close servers and client connection.
Change sonar polling sequence.
1=enable; 0=disable the motors.
Set translation acceleration, if positive, or
deceleration, if negative; in mm/sec2.
Set maximum/move translation velocity; mm/sec.
Reset local position to 0,0,0 origin.
Translate (+) forward or (-) back mm distance at SETV
speed
Rotate (+) counter- or (-) clockwise degrees/sec.
Sets maximum/turn rotation velocity; degrees/sec.
Translate at mm/sec forward (+) or backward (-) (SETV
limit).
Turn at SETRV speed to absolute heading; ±degrees (+
= ccw ).
Turn at SETRV speed relative to current heading; (+)
counter- or (–) clockwise degrees.
Play up to 20 duration, tone sound pairs through User
Control Panel piezo speaker.
Request one or continuous stream (>1) or stop (0)
joystick SIPs
Request a configuration SIP.
Request one, a continuous stream (>1), or stop (0)
encoder SIPs.
Rotate robot at (+) counter- or (–) clockwise;
degrees/sec (SETRV limit).
Adjust heading relative to last setpoint; ± degrees
(+ = ccw)
Change rotation de(-) or (+)acceleration, in
degrees/sec2
1=enable, 0=disable all the sonar; otherwise, use bit
0 to enable (1) or disable (0) a particular array 14, as specified in argument bits 1-4.
Stop the robot; motors remain enabled
VERSION
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.3
1.0
1.0
1.0
1.0
1.0
1.0
1.0
With earlier OSes, the changes persisted between sessions and reverted to the FLASH defaults only after the controller was
reset.
29
ARCOS
DIGOUT
30
2
byte
VEL2
32
2
byte
GRIPPER
33
int
ADSEL
35
int
GRIPPERVAL
36
int
GRIPREQUEST
37
int
IOREQUEST
40
int
TTY2
42
str
GETAUX
43
uint
BUMPSTALL
44
int
TCM2
45
47
int
int
48
50
uint
int
E_STOP
51
52
53
55
int
int
int
none
M_STALL
56
int
GYROREQUEST
58
int
LCDWRITE
59
str
TTY4
60
str
GETAUX3
61
int
TTY3
66
str
GETAUX2
67
int
CHARGE
68
int
int
ROTKP
7080
82
ROTKV
JOYDRIVE
SONARCYCLE
HOSTBAUD
AUX1BAUD
AUX2BAUD
AUX3BAUD
Set (1) or reset (0) User Output ports. Bits 8-15 is
a byte mask that selects, if set (1), the output
port(s) for change; Bits 0-7 set (1) or reset (0) the
selected port(s).
Set independent wheel velocities; bits 0-7 for right
wheel, bits 8-15 for left wheel; in 20mm/sec
increments.
Gripper server commands. See the Gripper or PeopleBot
Manual for details.
Selects the A/D port number for reporting ANPORT
value in standard SIP.
Gripper server values. See Gripper or PeopleBot
Manual for details.
Request one, a continuous stream (>1), or stop (0)
Gripper SIPs.
Request one (1), a continuous stream (>1), or stop
(0) IO SIPs.
Sends string argument to serial device connected to
AUX1 serial port.
Request to retrieve 1-200 bytes from the AUX1 serial
port; 0 flushes the buffer.
Stall robot if no (0), only front (1) while moving
forward, only rear (2) while moving backward, or
either (3) bumpers contacted when robot moving in
related direction.
TCM2 module commands; see TCM2 Manual for details.
1=allow joystick drive from port while connected with
a client; 0 (default) disallows.
Change the sonar cycle time; in milliseconds.
Change the HOST serial port baud rate to 0=9600,
1=19200, 2=38400, 3=57600, or 4=115200.
Change the AUX1 serial port baud rate (see HOSTBAUD).
Change the AUX2 serial port baud rate (see HOSTBAUD).
Change the AUX3 serial port baud rate (see HOSTBAUD).
Emergency stop; very abrupt by overriding
deceleration.
Argument 1=MOTORS button off causes a stall
Request one, a continuous stream (>1), or stop (0)
Gyro SIPs.
Display a message on the LCD accessory: byte
1=starting column (1-19); byte 2=starting row (1-4);
byte 3=1 if clear line contents first, otherwise 0;
bytes 4- = up to 20 chars, NULL-terminated.
Send string argument out to device connected at AUX3
serial port.
Request to retrieve 1-200 bytes from the device
connected at the AUX3 serial port; 0 flushes the
buffer.
Send string argument out to device connected at AUX2
serial port.
Request to retrieve 1-200 bytes from the device
connected at the AUX2 serial port; 0 flushes the
buffer.
0=release; 1=deploy autocharge-docking mechanism.
1.0
1.1
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.3
1.0
1.0
1.0
1.0
1.0
int
Pioneer Arm-related commands. See Arm manual for
details.
Change working rotation Proportional PID value.
1.0
83
int
Change working rotation Derivative PID value.
1.0
ROTKI
84
int
Change working rotation Integral
1.0
TRANSKP
85
int
Change working translation Proportional PID value.
1.0
TRANSKV
86
int
Change working translation Derivative PID value.
1.0
TRANSKI
87
int
Change working translation Integral
1.0
REVCOUNT
88
int
Change working differential encoder count.
1.1
DRIFTFACTOR
89
int
Change working drift factor.
1.0
SOUNDTOG
92
int
0=mute User Control piezo; 1 = enable.
1.0
ARM
30
PID value.
PID value.
1.1
MobileRobots Inc.
TICKSMM
93
int
none
Change working encoder ticks per millimeter tire
travel.
Artificially set the battery voltage; argument in
tens volts (100=10V); 0 to revert to real voltage
Force a power on-like reset of the microcontroller.
BATTEST
250
int
RESET
253
MAINTENANCE
255
1.1
1.0
none
Engage microcontroller maintenance (ARSHstub) mode.
1.0
1.0
Client Motion Commands
The ARCOS motor-control servers accept several different motion commands of two types: either
independent-wheel (VEL2) or translation/rotation movements (VEL, ROT, etc). Actually, VEL2
commands are recomposed at the server into their translation and rotation components and the
corresponding limits and (de)accelerations get applied. The ARCOS servers automatically abandon any
translation or rotation setpoints and switch to independent wheel velocity- or translation/rotation-type
controls when your client issues a command of the opposite type.
Table 6. Client motion-related commands
ROTATION
head (#12)
dhead (#13),
dchead (#22)
rotate (#9)
rvel (#21)
Turn to absolute heading at SETRV max velocity
Turn to heading relative to control point at SETRV max velocity
Rotate at SETRV velocity
Rotate at + (counter) or – (clockwise) deg/sec up to SETRV max
TRANSLATION
vel (#11)
Translate forward/reverse at prescribed velocity
move (#8)
Translate distance at SETV max velocity
INDEPENDENT
vel2 (#32)
(SETV maximum)
WHEEL
Set velocity for each side of robot
Note that once connected, the robots’ motors are disabled, regardless of their state when last
connected. Accordingly, you must either enable the motors manually (white MOTORS button on the
User Control Panel) or send the motors ENABLE client command #4 with the argument value of one.17
Monitor the status of the motors with bit 0 of the Flags integer in the standard SIP.
ROBOTS IN MOTION
When ARCOS receives a motion command, it accelerates or decelerates the robot at the translation
SETA (command #5) and rotation SETRA (command #23) rates until the platform either achieves
its SETV (command #6) maximum translation and SETRV (command #10) maximum rotation speeds
(or VEL2 equivalents), or nears its goal. Accordingly, rotation headings and translation setpoints are
achieved by a trapezoidal velocity function, which ARCOS recomputes each time it receives a new
motion command.18
ARCOS automatically limits VEL2-, VEL-, and RVEL-specified velocities to previously imposed, clientmodifiable SETVEL and SETRV maximums, and ultimately by absolute, platform-dependent, FLASHembedded constants (TOP values). Similarly, the distinct acceleration and deceleration parameters
for both translation and rotation are limited by FLASH constants. ARCOS initializes these values upon
17
18
Alternatively, disable the motors with the ENABLE command argument of zero.
Note that acceleration and deceleration are distinct values, settable via SETA for translation and SETRA for rotation.
31
ARCOS
microcontroller startup or reset from related FLASH parameters. The speed limits, either from FLASH
or when changed by SETV or SETRV commands, take effect on subsequent commands, not on current
translation or rotation. The maximums revert to their FLASH defaults when disconnected from a client.
The orientation commands HEAD (#12), DHEAD (#13), DCHEAD (#22) turn the robot with respect to its
internal dead-reckoned angle to an absolute heading (0-359 degrees), relative to its immediate
heading, or relative to its current heading setpoint (achieved or last commanded heading),
respectively. In general, positive relative heading command arguments turn the robot in a
counterclockwise direction. However, the robot always turns in the direction that will achieve its
heading most efficiently. Accordingly, relative-heading arguments greater than 179 degrees
automatically get reduced to 179 or less degrees with a concomitant change in direction of rotation.
short move,
max velocity
not reached
max velocity
ve lo city
accel
decel
start
positi on
time
position
achieved
position
achieved
Figure 19. Trapezoidal velocity profile
The E_STOP command #55 or the STOP button that is found on some MOBILEROBOTS platforms
override deceleration and abruptly stop the robot in the shortest distance and time possible.
Accordingly, the robot brakes to zero translation and rotation velocities with very high deceleration and
remains stopped until it receives a subsequent translation or rotation velocity command from the
client or until the STOP button is reset. (See E_STOP and E_STALL later in this chapter.)
PID Controls
The ARCOS drive servers use a common Proportional-Integral-Derivative (PID) system with wheelencoder feedback to adjust a pulse-width-modulated (PWM) signal at the motor drivers to control the
power to the motors. The motor-duty cycle is 50 microseconds (20 KHz); pulse-width is proportional 0500 for 0-100% of the duty cycle. The ARCOS drive servers recalculate and adjust your robot’s
trajectory and speed every five milliseconds.
The PID values for translation and rotation and maximum PWM are reconfigurable FLASH parameters
in your robot’s microcontroller. You also may temporarily update the PID values with the ARCOS client
commands #84 through #87. On-the-fly changes persist until the client disconnects. Translation PID
values apply to independent wheel-velocity mode, as well.
The P-term value Kp increases the overall gain of the system by amplifying the position error. Large
gains will have a tendency to overshoot the velocity goal; small gains will limit the overshoot but cause
the system to become sluggish. We’ve found that a fully loaded robot works best with a Kp setting of
around 15 to 30, whereas a lightly loaded robot may work best with Kp in the range of 20 to 50.
The D-term Kv provides a PID gain factor that is proportional to the output velocity. It has the greatest
effect on system damping and minimizing oscillations within the drive system. The term usually is the
first to be adjusted if you encounter unsatisfactory drive response. Typically, we find Kv to work best
in the range of 10 to 30 for lightly to heavily loaded robots, respectively. If your robot starts to vibrate
or shutter, reduce Kv.
The I-Term Ki moderates any steady state errors thereby limiting velocity fluctuations during the
course of a move. At rest, your robot will seek to “zero out” any command position error. Too large of
a Ki factor will cause an excessive windup of the motor when the load changes, such as when climbing
over a bump or accelerating to a new speed. Consequently, we typically use a minimum value for Ki in
the range of 0 to 10 for lightly to heavily loaded robots respectively.
32
MobileRobots Inc.
Position Integration
MOBILEROBOTS platforms track their position and orientation based on dead-reckoning from wheel
motion derived from encoder readings. The ARCOS-based robot maintains its internal coordinate
position in platform-dependent units, but reports the values in platform-independent millimeters and
degrees in the standard SIP (Xpos, Ypos, and Thpos).
0
+X
Front
+90
+Y
+270
+180
Figure 20. Internal coordinate system
Be aware that registration between external
and internal coordinates deteriorates rapidly
with movement due to gearbox play, wheel
imbalance and slippage, and many other realworld factors. You can rely on the deadreckoning ability of the robot for just a short
range—on the order of a few meters and one or
two revolutions, depending on the surface.
Carpets tend to be worse than hard floors.
Also, moving either too fast or too slow tends to
exacerbate the absolute position errors.
Accordingly, consider the robot’s deadreckoning capability as a means of tying
together sensor readings taken over a short
period of time, not as a method of keeping the
robot on course with respect to a global map.
On start-up, the robot is at the origin (0, 0, 0),
pointing toward the positive X-axis at 0 degrees.
Absolute angles vary between 0 and 359.
You may reset the internal coordinates back to 0,0,0 with the SETO command #7.
DriftFactor, RevCount, and TicksMM
Three client commands let you change, albeit momentarily for the current client-server connection,
those values that affect translation, rotation and drift in your robot. TicksMM is the number of
encoder ticks per millimeter tire rotation for translation speed and distance computations. The default
FLASH value can be changed on-the-fly during a client connection session with the TICKSMM client
command #93 and unsigned integer value.
DriftFactor is a signed value in 1/8192 increments that gets added to or subtracted from the left
wheel encoder’s ticks to correct for tire circumference differences and consequent translation and
rotation drift. DriftFactor defaults to its FLASH value on start up or reset, and can be changed onthe-fly with the DRIFTFACTOR client command #89 with signed integer argument.
The RevCount parameter is the differential number of encoder ticks for a 180-degree rotation of the
robot and is used to compute and execute headings. Like DriftFactor and TicksMM, RevCount
defaults to its FLASH value on startup or reset, and can be changed on-the-fly with the REVCOUNT
client command #88 and unsigned integer argument.
SONAR
When connected with and opened by the client, ARCOS automatically begins firing your robot’s sonar,
one disc each simultaneously for each of up to four arrays, as initially sequenced and enabled in your
robot’s FLASH parameters. The sonar servers also begin sending the sonar-ranging results to the
client via the standard SIP.
Enable/Disabling Sonar
Use the SONAR client command #28 to enable or disable all or individual sonar arrays. Set bit zero of
the SONAR argument to one to enable or reset it, or 0 to disable the sonar pinging. Set argument bits
two through four to an individual array number one through four to enable or disable only that array.
Array zero, the form of the original P2OS command, affects all the arrays at once.
33
ARCOS
For example, an argument value of one enables all the sonar arrays, whereas an argument value of six
silences array number three. Monitor the status of the sonar arrays in the FLAGS integer bits 1-4 of
the standard SIP. The respective bit is set if the array is engaged.
Polling Sequence
Each array’s sonar fire at a rate and in the sequence defined in your robot microcontroller’s FLASH
parameters. (Consult the next chapter on how to change the FLASH settings.) Use the sonar
POLLING command #3 to have your client change the firing sequence, and the SONAR_CYCLE
command #48 to change the rate. The changes persist until you restart the client-server connection.
The POLLING command string argument consists of a sequence of sonar numbers one through 32.
Sonar numbers one through eight get added to the polling sequence for sonar array number one;
numbers nine through 16 get added to the sequence for sonar array number two; 17-24 specify the
sequence for array three; and 25-32 are for array four. You may include up to 16 sonar numbers in
the sequence for any single array. Only those arrays whose sonar numbers appear in the argument
get re-sequenced.
You may repeat a sonar number two or more times in a sequence. If a sonar number does not appear
in an otherwise altered sequence, the disc will not fire. If you do repeat a sonar in the sequence, know
that ARIA and related clients ignore the first reading if two sonar ranging data appear in the same SIP.
For compatibility with earlier robot operating systems, if the string is empty, all the sonar in the array
get disabled, but their polling sequences remain unaltered, just as if you had sent the SONAR
command with an argument value of zero.
Polling Rate
For earlier Pioneer microcontroller versions, the sonar polling rate was fixed for each array: one sonar
disc per array got polled every 40 milliseconds. So, for an eight-disc array with a sequential polling
sequence (12345678 by default), any one sonar transducer would be read every 320 milliseconds.
That common cycle timing accommodates ranging out to the maximum of the sonar of over six meters
for general applications, including features recognition and localization. For other applications, such
as close-in obstacle avoidance, a shorter range but faster rate of update is better.
Use the SONAR_CYCLE client command #48 to change the cycle timing on the fly to the command
integer's argument value in milliseconds. Minimum and maximum values are two and 120
milliseconds, respectively. The default value is set in FLASH, normally to the legacy 40 milliseconds.
STALLS AND EMERGENCIES
With a robot equipped with forward and/or rear bumpers, ARCOS may immediately stop the robot and
notify the client of a stall if any one or more of the contact sensors get triggered and the robot is going
in the direction of the bump (forward/front or backward/rear). Send the BUMPSTALL command #44
with an integer argument of zero to disable that bump-stall behavior. Give the argument value of one
to re-enable BUMPSTALL only when a forward bump sensor gets triggered; two for rear-only
BUMPSTALLs; or three for both rear and forward bump contact-activated stalls.
In an emergency, your client may want the robot to stop quickly, not subject to normal deceleration. In
that case, send the E_STOP command (#55).
Like BUMPSTALL, use ARCOS’ built-in E_STALL feature to simulate a stall when someone presses the
robot’s STOP button.19 An integrated switch in the STOP button toggles a dedicated digital I/O port on
the microcontroller, thereby notifying ARCOS of the condition. ARCOS stops the robot’s motors, puts
on the brakes and throws continuous stalls.
19
Available only on some robots.
34
MobileRobots Inc.
Table 7. The FLAGS bits
BIT
0
1
2
3
4
5
6
7
8
9
10
11-15
CONDITION IF SET
Motors enabled
Sonar array #1 enabled
Sonar array #2 enabled
Sonar array #3 enabled
Sonar array #4 enabled
STOP button pressed
E_stall engaged
Far ledge detected (IR)
Near ledge detected (IR)
Joystick button 1 pressed
Recharging “power-good”
Reserved
Unlike other stalls, E_STALL also disables the
motors. You must either re-enable the motors
manually (MOTORS button) or programmatically
(ENABLE command #4).
The E_STALL server notifies your client software
through the stall bytes and in bit 5 of the FLAGS
byte in the standard so that your client may
respond to a STOP E_STALL differently than a
regular stall.
Normally enabled (default was disabled in P2OS),
change E_STALL by sending the ARCOS
command #56. With argument of zero, E_STALL
gets disabled. An argument value of one reenables E_STALL.
ACCESSORY COMMANDS AND PACKETS
Several types of alternative server information packets (SIPs) come with ARCOS to better support the
MOBILEROBOTS community. On request from the client by a related ARCOS command, the ARCOS
server packages and sends one or a continuous stream of information packets to the client over the
HOST serial communication line. Extended packets get sent immediately before (such as GYROpac
and JOYSTICKpac) or after (such as IOpac) the standard SIP that ARCOS sends to your client every
SIP milliseconds.20
The standard SIP takes priority so you may have to adjust the HOST serial baud rate to accommodate
all data packets in the allotted cycle time, or some packets may never get sent.
Packet Processing
Identical with the standard SIP, all ARCOS server information packets get encapsulated with the
header (0xFA, 0xFB; 250, 251), byte count, packet type byte and trailing checksum. It is up to the
client to parse the packets, sorted by type for content. Please consult the respective client application
programming manuals for details.
CONFIGpac and CONFIG Command
Send the CONFIG command #18 without an argument to have ARCOS send back a CONFIGpac SIP
packet type 32 (0x20) containing the robot’s operational parameters. Use the CONFIGpac to examine
many of your robot’s default FLASH_based settings and their working values, where appropriate, as
changed by other client commands, such as SETV and ROTKV.
Table 8. CONFIGpac contents
LABEL
Header
Byte count
Type
Robot type
Subtype
Sernum
4mots
Rotveltop
Transveltop
Rotacctop
Transacctop
PWMmax
Name
SIPcycle
Hostbaud
20
DATA
int
byte
byte
str
str
str
byte
int
int
int
int
int
str
byte
byte
DESCRIPTION
Common packet header = 0xFAFB
Number of following data bytes
ENCODERpac = 0x20
Typically “Pioneer”
Identifies the ActivMedia robot model; e.g. “dxsh”,
Serial number for the robot.
Antiquated (=1 if AT with P2OS)
Maximum rotation velocity; deg/sec
Maximum translation speed; mm/sec
Maximum rotation (de)acceleration; deg/sec2
Maximum translation (de)acceleration; mm/sec2
Maximum motor PWM (limit is 500).
Unique name given to your robot.
Server information packet cycle time; ms.
Baud rate for client-server HOST serial: 0=9.6k, 1=19.2k,
2=38.4k, 3=56.8k, 4=115.2k.
You may have to adjust the HOST serial baud rate to accommodate the additional communications traffic.
35
ARCOS
Auxbaud
Gripper
Front sonar
Rear sonar
Lowbattery
byte
int
int
byte
int
Revcount
int
Watchdog
int
Baud rate for AUX1 serial port; see HostBaud.
0 if no Gripper; else 1.
1 if robot has front sonar array enabled, else 0.
1 if robot has rear sonar enabled, else 0.
In 1/10 volts; alarm activated when battery charge falls below
this value.
Working number of differential encoder ticks for a 180 degree
revolution of the robot.
Joyvel
Joyrvel
Rotvelmax
Transvelmax
Rotacc
Rotdecel
Rotkp
int
int
int
int
int
int
int
Ms time before robot automatically stops if it has not received
a command from the client. Restarts on restoration of
connection.
1 means alternative SIP enable; not used by ARCOS.
Maximum PWM before stall. If > PWMMAX, never.
Ms time after a stall for recovery. Motors lax during this
time.
Joystick translation velocity setting, mm/sec
Joystick rotation velocity setting in deg/sec
Current max rotation speed; deg/sec.
Current max translation speed; mm/sec.
Current rotation acceleration; deg/ sec2
Current rotation deceleration; deg/ sec2
Current Proportional PID for rotation
Rotkv
Rotki
int
int
Current Derivative PID for rotation
Current Integral PID for rotation
P2mpacs
Stallval
Stallcount
byte
int
int
Transacc
Transdecel
Transkp
Transkv
Transki
Frontbumps
Rearbumps
Charger
int
int
int
int
int
byte
byte
byte
Sonarcycle
Autobaud
byte
byte
Hasgyro
byte
Driftfactor
Aux2baud
Aux3baud
Ticksmm
Shutdownvolts
int
byte
byte
int
int
Versionmajor
Versionminor
Chargethreshold
str
str
int
Current translation acceleration; mm/ sec2
Current translation deceleration; mm/ sec2
Current Proportional PID for translation.
Current Derivative PID for translation.
Current Integral PID for translation.
Number of front bumper segments.
Number of rear bumper segments.
1 if P3/PeopleBot or 2 if PowerBot automated charger mechanism
and circuitry installed in robot; otherwise 0.
Sonar duty cycle time in milliseconds.
1 if the client can change baud rates; 2 if auto-baud
implemented.
1 if robot equipped with the gyro heading correction device;
otherwise 0.
Working drift factor value.
Baud rate for AUX2 serial port; see HostBaud.
Baud rate for AUX3 serial port; see HostBaud.
Encoder ticks per millimeter tire motion
DC volts X10 at or below which the onboard PC will shut down
WITH VERSION 1.5...
Null-terminated strings for ARCOS version numbers
DC volts X10 for PowerBot’s charger threshold.
SERIAL
The baud rates for the HOST and AUX serial ports initially are set from their respective FLASH-based
defaults and get reset to those values whenever the microcontroller is reset or upon client
disconnection. For advanced serial port management from the client side, ARCOS provides four client
commands which let your software reset the HOST (HOSTBAUD #50), Aux1 (AUX1BAUD #51), Aux2
(AUX2BAUD #52) and Aux3 (AUX3BAUD #53) serial port baud rates, respectively. Use the integer
command argument values: 0=9600, 1=19.2K, 2=38.8K, 3=57.6K, or 4=115.2K baud, respectively.
With auto-bauding, the HOST serial port automatically reverts to its FLASH default baud rate if, after
being reset by the HOSTBAUD client command, it does not receive a subsequent and valid clientcommand packet within 500 milliseconds.
HOST-to-AUX Serial Transfers
Use the client-side TTY2 command #42 with a string argument to have that string sent out the Aux1
port to the attached serial device, such as a robotic camera. Similarly, use the TTY3 command #66 to
send a string argument out the Aux2 port or TTY4 command #60 to send a HOST-mediated client
string out the Aux3 port.
36
MobileRobots Inc.
ARCOS also maintains three circular buffers for incoming serial data from the respective Aux ports. On
request, ARCOS sends successive portions of the buffer to your client via the HOST serial in the
respective SERAUXpac (type = 176; 0xB0), SERAUX2pac (type = 184; 0xB8) and SERAUX3 (type = 200;
0xC8) SIPs. Use the GETAUX #43 for Aux1, GETAUX2 command #67 for Aux2 and GETAUX3 command
#61 for Aux3.
Use the integer argument value of zero to flush the contents of the respective buffer. Otherwise, use
an argument value of up to 253 bytes to have ARCOS wait to collect the requested number of
incoming AUX-port serial bytes and them send them in the respective SERAUXpac, SERAUX2pac, or
SERAUX3pac SIP.
ENCODERS
Issue the ENCODER command #19 with an argument of one for a single or with an argument value of
two or more for a continuous stream of ENCODERpac (type 144; 0x90) SIPs. Discontinue the packets
with the ENCODER command #19 with an argument of zero.
Table 9. ENCODERpac SIP contents
LABEL
Header
Byte Count
Type
Left Encoder
DATA
integer
byte
byte
integer
DESCRIPTION
Exactly 0xFA, 0xFB
Number of data bytes + 2 (checksum)
0x90
Least significant, most significant portion of the
integer
current accumulated encoder counts from the left wheel
Right Encoder
integer
Least significant, most significant portion of the
integer
current accumulated encoder counts from the right wheel
Checksum
integer
Checksum for packet integrity
BUZZER SOUNDS
Pioneer 3 robots have a piezo buzzer on the User Control Panel that aurally notifies you of system
conditions, such as low batteries or stalls. For stealthy operation, issue the SOUNTOG command #92
with an argument of zero to mute the microcontroller’s buzzer or argument of one to re-enable it. (See
also the SOUNDTOG FLASH parameter in the next chapter to set its default state.)
The SAY command #15 lets you play your own sounds through the buzzer. The argument consists of a
length-specified string of duration and tone pair bytes. The duration is measured in 20 millisecond
increments.
A tone value of zero means silence (musical rest). The next 127 frequencies (1-127) are the
corresponding MIDI notes. The remaining tones are frequencies computed as:
Tone – 127 * 32
equivalent frequencies from 1 to 4096, in 32 Hz increments.
Except for the MIDI notes, you’ll just have to experiment with tones. Here is the sequence that
generates the ARCOS distress wail when the robot stalls or the batteries are low:
50,100,20,0,50,60,0
TCM2
The TCM2 accessory is an integrated inclinometer, magnetometer, thermometer and compass that
attaches to one of the Aux serial ports of the ARCOS microcontroller. When attached and enabled,
special TCM2 compass servers read and report the heading in ±2 degree increments as the compass
byte in the standard SIP. Use the TCM2 command 45 to request additional information from the
device in the form of the TCM2pac. See the TCM2 Manual and supporting software that accompanies
the device for details.
37
ARCOS
ONBOARD PC
Communication between the onboard PC and the robot microcontroller is RS-232 serial through the
respective COM1 (Windows) or /dev/ttyS0 (Linux) and internal HOST ports. Set the HostBaud FLASH
communication rate to match the PC client-software’s serial port rate.
The RI pin 9 on the HOST port initializes to low and goes high when the batteries discharge to below
the FLASH-set ShutdownVolts value. We use the genpowerd software under Linux to detect that lowpower signal and automatically shut down the PC. Windows PCs are a bit more problematic.
The Windows genpowerd-like ups.exe program requires a dedicated serial port and prefers to use the
CTS line to indicate low power. Accordingly, we jumper the RI signal of HOST COM1 to the CTS signal
pin of the adjacent COM2 port of the onboard PC for the feature. For convenience, the Versalogic
VSBC8 PC found onboard most recent Pioneers shares its 20-pin connector on the PC's motherboard
with COM1 and COM2. So, to implement Windows ups.exe-enabled low-power shutdown, we jumper pin
8 (COM1 RI) to pin 16 (COM2 CTS) on that VSBC8 serial connector. Use a similar strategy for other
implementations; the UPS configuration dialog lets you select COM1-4.
Once the port is wired, start up Windows and, as Administrator, go to the Start:Settings:Control
Panel:Power Options dialog and select the UPS tab. Click Select and in the UPS Selection dialog,
select COM2 (or other) port, Generic manufacturer, and Custom model. Then click Next.
In the UPS Interface Configuration On: COM2 dialog, check the Power Fail/On Battery and its
related Position options. Uncheck to disable the Low Battery and UPS Shutdown options. Then click
Finish to save the settings and close the dialog. Click OK or Apply to enable the UPS shutdown
programs.
Change a registry value so that the PC shuts down one minute instead of two minutes after low-power
notification by the microcontroller: Use regedit and navigate to [HKEY_LOCAL_MACHINE\SYSTEM\
ControlSet001\Services\UPS\Config. Change the ShutdownOnBatteryWait dword value to 1
(from 2).
Use the ARCOS client maintenance command #250 to test your genpowerd or ups.exe setup. Send a
bogus battery voltage as its integer argument below ShutdownVolts to simulate the low battery
condition. ARCOS should issue warnings first, then disconnects from the client after about a minute
and set the PC-shutdown signal on RI. Restore to the real battery voltage by sending the #250
command with 0 as its argument. Resetting the microcontroller cancels shutdown, too, unless battery
power really is very low.
Put the microcontroller into maintenance mode and fix your onboard PC settings if the computer
falsely engages genpowerd or ups.exe.
INPUT OUTPUT (I/O)
Your SH2-based microcontroller comes with a number of I/O ports that you may use for sensor and
other custom accessories and attachments. See Appendix A for port locations and specifications.
User I/O
The User I/O connector on the Pioneer 3 microcontroller contains eight digital input (ID0-7) and eight
digital output (OD0-7) ports, as well as an analog-to-digital (AN0) port.21 The bit-mapped states of the
sixteen digital ports and the analog port automatically and continuously appear in the standard SIP in
their respective DIGIN, DIGOUT and ANALOG bytes. When not physically connected, the digital input
and AN port values may vary and change without warning.
Use the ARCOS client command #30 to set one or more of the eight DIGOUT ports on the ARCOS
microcontroller. Electrically, the ports are digital high (1) at ~5 VDC (Vcc) and low (0) at ~0 VDC (GND).
DIGOUT takes a two-byte (unsigned integer) argument. The first byte is a mask whose bit pattern
selects (1) or ignores (0) the state of the corresponding bit in the second byte to set (1) or unset (0)
the digital output port.
21
Many of these ports are used by the Gripper and other accessories. Alternative I/O is available.
38
MobileRobots Inc.
For example, here’s the ARCOS client command to set digital output ports zero and three (OD0 and
OD3), reset port four (OD4), and leave all the rest alone:
250, 251, 6, 30, 27, 25, 9, 55, 36
IO packets
Not all analog and digital I/O appears in the standard SIP. Accordingly, your client software may
request the IOpac SIP (type = 240; 0xF0), which contains all common I/O associated with the
microcontroller and which appear on the various connectors, including user I/O, general I/O, bumpers
and IRs.
Use the ARCOS client IOREQUEST command number 40 with an argument value of zero, one or two.
The argument value one requests a single packet to be sent by the next client-server communications
cycle. The request argument value of two tells ARCOS to send IOpac packets continuously, at
approximately one per cycle depending on serial port speed and other pending SIPs. Use the
IOREQUEST argument value zero to stop continuous IOpac packets.
Table 10. IOpac packet contents
LABEL
Header
Byte count
Type
N DIGIN
DIGIN
Frontbumps*
Rearbumps*
IRs
N DIGOUT
DIGOUT
N AN
AN
DATA
2
1
1
1
1
1
1
1
1
1
1
10
VALUE
DESCRIPTION
0xFA, 0xFB
Common header
22
Number of data bytes + 2
0xF0
Packet type
4
Number of digital input bytes
varies 0-255
ID0-8 bits mapped
varies 0-255
Front bumper bits mapped
varies 0-255
Rear bumper bits mapped
varies 0-255
IR inputs
1
Number of digital output bytes
varies 0-255
Digital output byte(s)
9
Number of A/D values
5 integers varying
Analog ports 0-7 input values at 10-bit
0-1023
resolution: 0-1023 = 0-5 VDC
Battery
2
0-1023
Battery analog input (AN3 Pioneer 3)
Checksum
2
varies
Computed checksum
* Actual, not affected by InvertBumps since bumper bits may be used for other digital input besides bumpers.
Bumper and IR I/O
Two 10-position microfit connectors on the ARCOS microcontroller provide 16 digital input ports that
are normally used for the bumper accessory, but also available for your own attachments. See
Appendix A for connector details.
Similarly, the Motor-Power connector on the microcontroller contains eight digital inputs that we
normally use for IR sensors on the Performance PeopleBot and PowerBot, and whose states are
digitally mapped. See Appendix B for connector details.
Normally pulled high (5 VDC=digital port bit value 1), all the bumper and IR bit-mapped switches go
low (digital 0) when the respective port gets triggered. Bumper inputs also appear with the stall bits in
the standard SIP, but unlike in the IOpac, are modified by the InvertBumps mask. All the bumper
and IR data bits appear in the IOpac packet.
Joystick Packet
Use the ARCOS client JOYREQUEST command number 17 with an argument value of zero, one or two
to request information about the joystick, if it is enabled (see next Chapter). The argument value one
requests a single packet (type = 248; 0xF8) to be sent by the next client-server communications cycle.
The request argument value of two tells ARCOS to send JOYSTICKpac packets continuously, at
approximately one per cycle depending on serial port speed and other pending SIPs. Use the
JOYREQUEST argument value zero to stop continuous JOYSTICKpac packets.
39
ARCOS
LABEL
header
Byte count
type
button0
button1
X-axis
Y-axis
throttle
checksum
DATA
2
1
1
1
1
2
2
2
2
VALUE
0xFA, 0xFB
11
0xF8
0 or 1
0 or 1
varies 0-1023
varies 0-1023
varies 0-1023
varies
DESCRIPTION
Common header
Varies
Packet type
1=button pressed
1=button pressed
Rotation analog
Translation analog
Throttle setting
Computed checksum
Gripper
Please consult the respective Gripper manual for details.
ARCOS supports a GRIPPERpac (type=224; 0xE0) packet type and related GRIPREQUEST command
#37 to retrieve setup and status information from the servers.
Normally disabled, your client program may request one or a continuous stream (command argument
greater than one) of Gripper packets. Send GRIPREQUEST with the argument value zero to stop
continuous packets.
Table 11. GRIPPERpac packet contents
LABEL
header
byte count
type
hasgripper
grip_state
grasp_time
checksum
DATA
int
byte
byte
byte
byte
byte
integer
DESCRIPTION
Exactly 0xFA, 0xFB
Number of data bytes + 2 (checksum)
Packet type = 0xE0
Gripper type: 0=none; 1=Pioneer; 2=PeopleBot
See Table 11 below.
Ms time controls grasping pressure.
Computed checksum
Table 12. GRIPPERpac GRIP_STATE byte
BIT
0
1
2
3
4
5
6
7
FUNCTION
Grip limit
Lift limit
Outer breakbeam
Inner breakbeam
Left paddle
Right paddle
Lift
Gripper
DESCRIPTION
Paddles fully open when 0;
Lift fully up or down when
Obstructed when 0; nothing
Obstructed when 0; nothing
Grasping when 0.
Grasping when 0.
Moving when 1.
Moving when 1.
otherwise between or closed.
0; otherwise in between.
in between when 1.
in between when 1.
Note that the Gripper status information bits 0-5 also may be obtained from the respective DIGIN and
DIGOUT values of the standard SIP as related to the User I/O port states. See Appendix A for
connection details.
Heading Correction Gyro
With the gyroscope accessory, your client software may detect and compensate for robot heading
changes that aren't detected by the wheel encoders, such as from slipping wheels. The
microcontroller supports the gyro via attachment to its AN6 and AN7 analog-to-digital input ports.
ARCOS collects 10-bit (0-1023) gyro rate and 8-bit (0-255) temperature data and will, upon request,
send the collected data to a connected client in a GYROpac (type=0x98) server information packet for
processing. Analysis of the gyro data and subsequent modifications to the robot's heading are done
on the client side, as supported in the latest versions (1.3 and later) of ARIA.
To enable the gyro, you must set the hasGyro FLASH parameter to one using the ARCOScf tool (see
next chapter). Set it to 0 if the gyro isn't attached. Then to acquire gyro data, send the GYRO
command #58 with integer argument of one; zero disables the gyro SIP. The gyro SIP is stopped upon
client disconnection or microcontroller reset, too.
ARCOS collects the gyro rate and temperature readings at the maximum rate of once every 25
milliseconds and reports each of these values to the client, when enabled, in the GYROpac SIP that
40
MobileRobots Inc.
gets sent just before the standard Server Information Packet every sInfoCycle, typically every
100ms. GYROpac consists of a count byte of the rate and temperature data pairs accumulated since
the last cycle (typically 4 for a 100ms cycle time), followed by that number of rate/temperature
integer/byte pairs.
Gyro rates are 10-bit integers of value 0-1023. When not moving, the rate is centered around 512 or
so, depending on the gyro's temperature and other calibration factors which drift with use and should
be corrected on the fly. Values below that center point indicate counter-clockwise rotation rates;
values above the resting center measure clockwise rotation rates.
Table 13. GYROpac SIP contents
LABEL
Header
Byte count
Type
N pairs
FOR N PAIRS
Rate
Temperature
Checksum
DATA
2
1
1
1
VALUE
0xFA, 0xFB
xx
0x98
x
2
1
2
varies 0-1023
varies 0-255
varies
DESCRIPTION
Common header
Varies
Packet type
Number of gyro data pairs
Gyro rate
Gyro temperature
Computed checksum
AUTOMATED RECHARGING SYSTEM
The automated recharging accessory and associated charge-management circuitry on the robot may
be controlled from the robot's microcontroller.
Digital Port Controls
When set digital high (1), the "inhibit" port OD4 on pin 10 of the User I/O connector (see Appendix A)
causes the robot’s power-contact mechanism to disengage, retract from the power platform and
inhibits its future deployment. The "deploy" port OD5 pin 12, when set high with port OD4 low, deploys
the power-contact mechanism with full force to seat it onto the power platform.22
At the fully deployed position, the mechanism is mechanically stabilized and requires much less force
to maintain contact. If in positive contact with the power platform, the robot's onboard circuitry
activates and thereafter maintains the actuated mechanism at that lower force as long as it receives
power. To minimize heat and eventual damage to the actuator, the deploy line should be activated for
only short periods; maximally for 10 seconds at a time.
Your client software may run the automated recharging mechanism by individually activating/
deactivating the digital output ports, such as with the ARCOS DIGOUT command #30. However for
best results, we recommend using ARCOS’ automated recharging servers.
Automated Recharging Servers
To use ARCOS’ automated recharging servers, you must first enable them in your robot's FLASH
parameters. Use the ARCOScf configuration tool and set the Charger parameter value to one (zero to
disable) and save the value (see next Chapter).
Thereafter, for autonomous operation of the robot with the automated recharging system, establish a
client-server connection between an ARIA- or similar client-enabled PC and the robot's microcontroller.
Use the ARCOS CHARGE command #68 with an integer argument of one to automatically halt robot
motion and deploy the power-contact mechanism. The mechanism automatically retracts after five
seconds if the robot does not engage with the power platform, during which time the robot's drive
system is unresponsive. Accordingly, your client should wait at least that long before attempting to
resume activity.
While the motors are engaged, the charging mechanism cannot be deployed, except by the CHARGE
command. For best control and safety, consider also using the ARCOS CHARGE command number 68
with integer argument of zero to gracefully cancel charging and retract the power-contact mechanism.
22
These output ports and the charge-sensing User I/O-based digital input ports (see below) do not interfere with the
Pioneer/PeopleBot Gripper.
41
ARCOS
In addition to the client-mediated commands, you also may cancel recharging and retract the powercontact mechanism manually with the CHARGE DEPLOY button, as described in an earlier chapter.
Note that client-mediated auto-recharging behaviors may act to reverse your actions.
For example, the client may, upon untimely loss of recharging power resulting from someone pressing
the Charge Deploy button, may re-engage the motors and have the robot automatically attempt to
re-engage with the charging platform and restart charging.
Your client software may disengage and re-engage the client-server connection without disrupting
recharging, as long as the robot’s power-contact mechanism remains positively engaged with the
power platform and you don't do anything else to otherwise disrupt charging. Once disengaged from
the client, the rules for manually engaging and disengaging the mechanism and power apply.
Monitoring the Recharge Cycle
Three digital signals indicate battery recharging states with the automated recharging system. All
appear in the standard SIP.
Table 14. Recharging cycle states
CHARGE STATE
OVERCHARGE
(ID7)
~VOLTS
CHARGE CURRENT
SIP CHARGING
STATE BYTE
Unknown
?
?
?
-1
Not charging
0 or 1
Any
0
0
1
discharge-~14V
6A
1
0
~14-14.7
decreases to
~1A
2
1
~13.5
< 1A
3
Bulk
Overcharge
Float
The "power-good" signal appears as both User I/O DIGIN bit 6 and as bit 10 of the FLAGS integer in
the standard SIP, but their states are inversely related: DIGIN bit 6, normally high (1) when not
charging or when the automated recharging system is not installed, goes low (0) when the system is
engaged on the power platform. Conversely, the power-good bit 10 in FLAGS normally is low and goes
high when the robot is charging. For compatibility with future automated docking systems, we
recommend that your client monitor the power-good FLAGS bit and not the DIGIN line to determine if
the robot is getting power from the power platform.
The DIGIN and DIGOUT bytes of the standard SIP also reflect the states of the associated charging
digital input and output bits. DIGOUT bits 4 and 5 are the inhibit and deploy output ports described
earlier. DIGIN bit 7, corresponding to the User I/O connector digital input port ID7 on pin 15, reflects
the battery recharge cycle and, with the Battery SIP value, helps the autonomous robot client
determine immediate battery life and operation times.
The "overcharge" bit ID7 is set (1) when the batteries are well below full charge and the charger is at
full charging current. During this “bulk” charging period, the battery voltage rises to around 13.8-14V.
The overcharge bit ID7 then drops to low (0) while the batteries charge from approximately 80% to
90% of full charge: from ~13.8 to 14.7V. The charger finally reverts to "float", maintaining full charge
at much lower current and charger voltage (~13.5V). In float mode, the overcharge bit ID7 is 0.
ARCOS versions 1.5 and later include a charge state byte at the end of the standard SIP that decodes
these charging states for you. Accordingly, by monitoring the charging state byte or the individual
power-good and overcharge bits, as well as the battery voltage, your client may make recharging
strategy decisions. The thing to remember is that lead-acid batteries last longest when routinely
charged into float mode, typically once per day.
42
MobileRobots Inc.
Chapter 7
Updating & Reconfiguring ARCOS
The ARCOS firmware and a set of operating parameters get stored in your Pioneer 3 microcontroller's
FLASH memory. With special upload and configuration software tools, you change and update ARCOS,
too. No hardware modification is required.
WHERE TO GET ARCOS SOFTWARE
Your Pioneer 3 robot comes preinstalled with the latest version of ARCOS. And the various ARCOS
configuration and update tools come with the robot on CD-ROM. Thereafter, stay tuned to the
pioneer-users newsgroup or periodically visit our support website to obtain the latest ARCOS
software and related documentation:
http://robots.MobileRobots.com
The main utility, ARCOScf, is a multi-functional application for both uploading new ARCOS versions as
well as modifying your robot’s onboard FLASH-based parameters.
ARCOS MAINTENANCE MODE
To connect with and update your robot’s ARCOS servers and its FLASH-based operating parameters,
you need to first connect a serial port on the PC from which you will run ARCOScf to the HOST port of
your robot’s microcontroller:
If you are running from an onboard PC, the computer-to-HOST connection already is made.
If you have an onboard PC, but prefer to use an external computer for maintenance, simply
power down the onboard computer.
If you use radio or Ethernet wireless, switch its power OFF (typically AUX1).
When connecting from an external PC, directly tether (no radios) its serial port to the 9-pin DSUB
SERIAL connector on the User Control Panel.
Enabling Maintenance Mode
You have three ways in which to put the microcontroller into ARCOS maintenance mode:
Start Up
Manual
Automatic
If for any reason your robot’s FLASH parameters get erased or your ARCOS firmware encounters a
code fault, your Pioneer 3 microcontroller automatically reverts to its ARSHstub-based maintenance
mode.23 Or if you attach a PC to the SERIAL port on the User Control Panel, open the port through
software such as by running ARCOScf on that PC, and then reset or otherwise restart the
microcontroller, it will automatically revert into maintenance mode.
Like with previous Pioneer microcontrollers, you may manually engage maintenance ode:
1. Press and hold the white MOTORS button on the User Control Panel
2. Press and release the adjacent red RESET button
3. Release the MOTORS button.
Unlike previous microcontrollers and certainly with much more convenience since you don’t need to be
right next to the robot, ARCOScf automatically engages maintenance mode when run through an
onboard PC. Just start ARCOScf and it forces the microcontroller into maintenance mode. It uses the
ARCOS command #255 to do that.
The STATUS LED on the User Control Panel should flash twice the rate than when in server (“wait”)
mode and the BATTERY LED should shine bright red.
23
ARSHstub is a resident GDB-like interface for FLASH updates and other debugging uses.
43
Updating and Reconfiguring ARCOS
ARCOSCF
The ARCOS update and configuration program, ARCOScf, is part of a collection of utilities and files for
comprehensive management of your Pioneer 3 robot’s onboard servers and FLASH-based operating
parameters. The distribution archive for the software is simply named ARCOSV_v (V and v are the
version major and minor numbers, such as 1_0), with a “.tgz” suffix for Linux-based PCs or “.exe” for
Windows computers.
Install the utilities and files on the PC you plan to use for maintaining your robot’s operating system
and parameters by double-clicking the distribution software’s onscreen icon or otherwise executing
the self-extracting, self-installing package. For Linux, uncompress and untar the files. For example,
% tar –zxvf ARCOS1_0.tgz
The expanded archive creates an ARCOS/ directory in the selected Windows or current Linux path and
stores the ARCOS software within.
STARTING ARCOSCF
ARCOScf is a text-based console application which like demo is built with ARIA. To start it from a
console terminal under Linux, for example, navigate to the ARCOS directory and invoke the program:
% cd /usr/local/ARCOS
% ./ARCOScf <options>
With Windows PCs, you may double-click the ARCOScf icon to automatically open a console window
and start the program without any options. To start up with command-line options, Run the program
from the Start menu, or run Command from the Start menu, then navigate to the ARCOS directory
and start ARCOScf with options.
For example (after invoking the MSDOS-like command window):
C:\> cd Program Files\MobileRobots\ARCOS
C:\Program Files\MobileRobots\ARCOS\> ARCOScf <options>
Normally (without any command-line arguments), ARCOScf starts up expecting to connect with ARCOS
through the PC’s COM1 or /dev/ttyS0 serial port. If successfully connected, the program
automatically retrieves your robot’s FLASH-stored operating parameters and enters interactive mode.
Start Up Arguments
ARCOScf runs in two stages: startup followed by interactive mode. When invoked, you may start
ARCOScf with various ARIA and other command-line options. Preface each option with a dash (“-“),
followed by the argument and argument value, separated by spaces. For example
ARCOScf –n
starts up the program without connecting with the microcontroller, so that you may examine and
maintain disk-based copies of your robot’s operating parameters.
Table 15. ARCOS start-up options
ARGUMENT
VALUE
DESCRIPTION
-b
batch commands
-u
motfile
-l
paramsfile
-n
-rp
-rb
none
serial-device
baudrate
Batch mode executes list of ARCOScf interactive-like
mode commands with arguments, then exits automatically.
Automatically upload an ARCOS (.mot) motfile after
connecting with the microcontroller.
Load the disk-stored params (.rop) file instead of the
robot’s copy
Don’t connect with the microcontroller
Uses specified serial port for connection
Specify the port connection baud rate
On exit from ARCOScf, automatically save the current
parameter values to the named .rop paramsfile
-s
44
paramsfile
MobileRobots Inc.
To start up ARCOScf and make a connection with a serial port other than the default COM1 or ttyS0:
C:\Program Files\MobileRobots\ARCOS> ARCOScf –rp COM3
Similarly, these startup arguments tells ARCOScf to upload a fresh copy of the firmware to your robot’s
microcontroller and then exits:
% ./ARCOScf –d ARCOS1_0.mot –n -b
CONFIGURING ARCOS PARAMETERS
Your robot has several parameters stored in FLASH that ARCOS uses to configure its servers and
auxiliary attachments and to uniquely identify your robot. For instance, the default maximum
translation velocity is stored in the TransVelMax parameter. Its value takes effect when starting
your robot or after resetting the microcontroller, and may be changed temporarily by a client
command. Use ARCOScf’s batch or interactive modes to modify these operating parameters, and
hence your robot’s default operating characteristics.
Start up ARCOScf as described in the previous section. As discussed earlier, ARCOScf normally
downloads the set of operating parameters from your robot’s FLASH for your review and modification.
Or you may load a disk-stored version of those parameters.
Interactive Commands
To operate ARCOScf in interactive mode, simply type a keyword at its command prompt. Some
keywords affect the operation of ARCOScf or the status of the parameters file as a whole. For
instance, to review the list of current ARCOS FLASH variables, type 'v' or ‘view’ followed by a return
(Enter). Each successive return will display additional variable keywords and current values.
Similarly, type '?' or 'help' to see a list of ARCOScf interactive commands.
Changing Parameters
Most keywords refer to the operating parameters themselves. Alone, a parameter’s keyword simply
asks ARCOScf to display the parameter’s value. Provide an value with the parameter keyword
separated by a space to change it. That value may be a string (no quotes or spaces) or a decimal or
hexadecimal ("0xN") number. For example, to change the watchdog timeout to four seconds, type:
> watchdog 4000
or
> watchdog 0xfa0
See the respective control command and parameter Tables nearby for a full description of ARCOScf
operation.
SAVE YOUR WORK
While changing parameter values in ARCOScf interactive mode, you are editing a temporary copy; your
changes are not put into effect in your robot’s FLASH until you explicitly "save" them to the
microcontroller.
Also use the ARCOScf save command to save a copy of the parameters to a disk file for later upload.
We strongly recommend that you save each version of your robot’s parameter values to disk for later
retrieval should your microcontroller get damaged or its FLASH inadvertently erased. Default
parameter files come with each ARCOS distribution, but it is tedious to reconstruct an individual
robot’s unique configuration.
45
Updating and Reconfiguring ARCOS
Table 16. ARCOScf interactive commands
COMMAND
DESCRIPTION
keyword <value>
Alone, a keyword displays current, edited value. Include a
value to change it.
v or view
Display FLASH parameters.
u or upload <motfile>
Upload
specified
microcontroller.
r or restore
<paramsfile>
Restore parameters to values currently stored in FLASH or,
if given, from a paramsfile (.rop) on disk
save <paramsfile>
Saves current
edited values
reference.
q or quit
Exits ARCOScf.
? or help
Displays these commands and descriptions.
ARCOS
image
(.mot)
file
to
the
edited values to FLASH or saves current
to paramsfile (.rop) on disk for later
Table 17. Sample ARCOS FLASH configuration parameters with values for Pioneer 3–DX
KEYWORD
type
subtype
name
DATA
str
str
str
DEFAULT
Pioneer
P3DX-SH
P3-DX
sernum
ticksmm
str
int
Serial
128
revcount
int
16570
driftfactor
int
0
battconv
lowbattery
shutdownvolts
byte
int
0
115
int
108
hostbaud
byte
0
auxbaud1
auxbaud2
auxbaud3
sipcycle
byte
byte
byte
byte
0
0
0
100
watchdog
int
2000
soundtog
sonarcycle
sonar1
byte
byte
str
1
40
12345678
sonar2
sonar3
sonar4
hasgyro
hasbrakes
charger
str
str
str
byte
byte
byte
0
0
0
0
0
0
chargethreshold
gripper
int
byte
0
0
tcm2
byte
0
46
DESCRIPTION
Identifies the robot type.
Identifies the robot model.
Unique name for your robot.
Maximum of 20 characters, no spaces.
Serial number for the robot.
Encoder ticks/mm: (4 x ticks per rev x gear-ratio)/
(wheel_diameter x Π)
The number of differential encoder ticks for a 180degree revolution of the robot.
Value in 1/8192 increments to be added or subtracted
from the left encoder ticks in order to compensate
for tire differences.
0 if a 12V system; 1 if 24V
In 1/10 volts; microcontroller alarm activated when
battery charge falls below this value.
In 1/10 volts; microcontroller disconnects client and
signals onboard PC to shutdown when battery charge
falls below this value.
Baud rate for client-server HOST serial: 0=9.6k,
1=19.2k, 2=38.4k, 3=56.8k, 4=115.2k.
Baud rate for AUX serial port 1; see HostBaud
Baud rate for AUX serial port 2; see HostBaud
Baud rate for AUX serial port 3; see HostBaud
Server information packet cycle time in 1 ms
increments. Default is classic 100 ms.
Ms time before robot automatically stops if it has
not received a command from a client. Restarts on
restoration of connection.
0 disables the buzzer
Sonar cycle time in milliseconds
Ping sequence for sonar array #1. Up to 16 number
characters 1-8; 0 to disable the array
Ping sequence for array #2. See sonar1 above
Ping sequence for array #3. See sonar1 above
Ping sequence for array #4. See sonar1 above
Set to 1 if you have the gyro accessory
1 if your robot has brakes; 0 if not.
Set to 1 if P3/PeopleBot or 2 if PowerBot autocharger
mechanism and circuitry installed; otherwise 0
PowerBot only
Set to 1 if DX/AT Gripper; 2 if Gripper on
Performance PeopleBot
TCM2 module, if connected, specify AUX port number 1,
2, or 3
MobileRobots Inc.
lcd
byte
0
frontbumps
rearbumps
invertbump
byte
byte
byte
0
0
0
bumpstall
byte
0
stallval
stallcount
pwmmax
rotveltop
transveltop
rotacctop
transacctop
rotvelmax
transvelmax
rotacc
rotdecel
rotkp
rotkv
rotki
transacc
transdecel
transkp
transkv
transki
joystick
joyvelmax
joyrvelmax
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
byte
int
int
200
200
500
360
1500
300
2000
100
750
100
100
40
20
0
300
300
40
30
0
0
750
50
LCD module, if attached, specify AUX port number 1,
2, or 3
Number of front bumper segments
Number of rear bumper segments
0=none; 1=front; 2=rear; or 3=invert both; affects
STALL bits in std. SIP only.
0=disable bump stall; 1=enable rear; 2=enable front;
3=enable both front and rear bump stalls
Maximum PWM before stall. If > PwmMax, never.
Ms time motors disabled after a stall for recovery.
Maximum motor PWM (500 maximum).
Maximum rotation velocity; deg/sec
Maximum translation speed; mm/sec
Maximum rotation (de)acceleration; deg/sec2
Maximum translation (de)acceleration; mm/sec2
Max rotation speed; deg/sec.
Max translation speed; mm/sec.
Rotation acceleration; deg/sec2
Rotation deceleration; deg/sec2
Proportional PID for rotation
Differential PID for rotation
Integral PID for rotation
Translation acceleration; mm/sec2
Translation deceleration; mm/sec2
Proportional PID for translation
Differential PID for translation
Integral PID for translation
Joystick type: 0=analog, 1=inductive
Joydrive maximum translation velocity
Joydrive maximum rotation velocity
PID PARAMETERS
The ARCOS configuration parameters include settings for the PID motor controls for translation and
rotation of the robot. The translation values also are used for independent-wheel mode. The default
values are for a lightly loaded robot. Experiment with different values to improve the performance of
your robot in its current environment.
The Proportional PID (Kp) values control the responsiveness of your robot. Lower values make for a
slower system; higher values make the robot "zippier", but can lead to overshoot and oscillation.
The Derivative PID (Kv) dampens oscillation and overshoot. Increasing values gives better control of
oscillation and overshoot, but they also make the robot’s movements more sluggish.
The Integral PID (Ki) adjusts residual error in turning and velocity. Higher values make the robot
correct increasingly smaller errors between its desired and actual angular position and speed.
DRIFTFACTOR, TICKSMM AND REVCOUNT
ARCOS uses the ticksMM and revCount parameters to convert your platform-independent speed and
rotation commands—typically expressed in millimeters or degrees, respectively—into platformdependent units. And it uses driftFactor to compensate for tire differences.
The ticksMM value is the number of encoder pulses (“ticks”) per millimeter of wheel rotation. The
value is, of course, dependent upon the wheel encoder’s resolution, the motor-to-wheel gear ratio and
the wheel’s diameter.
The revCount value is the number of encoder ticks for a 180-degree turn of the robot. It depends on
a number of factors, principally the length of the wheel base which may change due to payload, tire
wear, operating surface and so on.
The driftFactor is a value in 1/8192 units that gets added or subtracted from the left-wheel
encoder count at each motor cycle. In doing so, it compensates for tire difference and thereby
straightens the robot’s translation forward and backward.
47
Updating and Reconfiguring ARCOS
Table 18. Some platform-dependent parameters
VALUES
PARAMETER
P3DX
P3AT
PERF PB
encoder ticks/rev
500
500
500
38.3
49.8
38.3
wheel diam (mm)
195
220
195
encoder ticks/mm
132
138
132
gear ratio
The ticksMM and revCount parameters affect the conversion of your motion command arguments
into platform-dependent values used by ARCOS. Unlike previous firmware, ARCOS also uses ticksMM
and revCount to convert its internal measures into platform-independent position, heading and
velocity values that it sends to the client in the standard SIP, such as X-Pos and Th. Accordingly,
you’ll notice that the respective ARIA client parameters have many conversion factors like
DistConvFactor set to 1.0.
STALLVAL AND STALLCOUNT
An ARCOS stall monitor maintains a running average of PWM values for each wheel over a 500
millisecond integration period. PWM values get added to the sum if the wheel speed is below 100
mm/sec. The average is then compared with the stallVal FLASH value. If it exceeds that value, in
other words the motors are being given lots of power but are barely moving if at all, a stall occurs.
Once stalled, power is removed and the motors relax for the stallWait period, after which power
gets reapplied.
BUMPERS
Use the bumpStall FLASH parameter to set the default for the robots behavior when its front and/or
rear bumper gets triggered. Normally, bumpStall is engaged for both front and rear (default value of
0) bumpers. Reset it to 3 to disengage bump stalls altogether; 1 to trigger stalls only when the rear
bumpers engage; or 2 for front bumps only.
You may over-ride the bumpStall FLASH default with the BUMPSTALL client command #44, although
the command arguments are the reverse: enabling versus disabling the various bumper-stall
combinations. Your robot’s bumpStall behavior reverts to the FLASH default on reset and up
disconnection from the client.
ARCOS implements three FLASH parameters that specify states and numbers of front and rear
bumper segments. Set the frontBumps and rearBumps values to the number of bumper segments
for the front and rear bumpers, respectively; or to 0 if you don't have a particular bumper. The number
of segments is used to isolate the bumper bits, if any, so that a triggered bumper event is reported
correctly in the STALL values of the standard SIP. Use the invertBump FLASH parameter to invert
those bumper-related STALL values, but not the hardware-related states reported in the IOpac.
The frontBumps and rearBumps byte values also are reported near the end of the CONFIGpac. If for
any reason you remove a bumper from your robot, you MUST reset the associated frontBumps or
rearBumps FLASH value. Otherwise, the robot will stall incessantly and ARIA won’t let you drive.
48
MobileRobots Inc.
Chapter 8
Calibration & Maintenance
Your MOBILEROBOTS platform is built to last a lifetime and requires little maintenance.
TIRE INFLATION
Maintain even tire inflation for proper navigation of your Pioneer 3-AT. We ship with each pneumatic
tire inflated to 23 psi. If you change the inflation, remember to adjust the driftFactor, ticksMM,
and revCount FLASH values.
CALIBRATING YOUR ROBOT
Your robot comes with FLASH parameters adjusted for operation on smooth, flat surfaces with its
original payload. If you operate your robot on some different surface and with lighter or heavier loads,
you probably will need to recalibrate many of its operating parameters, such as driftFactor,
revCount, ticksMM and the PIDs.
The ARIA demo program has two modes to help you do that. In ‘p’osition mode, demo displays current
heading and position. Press the ‘r’ key to reset these to 0 at any time. Press the right or left arrow
key to have the robot rotate 90 degrees either clockwise or counterclockwise, respectively. The up
and down arrow keys tell the robot to advance forward or backward one meter, respectively.
ARIA demo’s ‘d’irect mode lets you change the variety of operating parameters on-the-fly by letting you
send an ARCOS client command number and value to be used during the current session. To replace
the default values in FLASH, use ARCOScf.
Accordingly, to properly calibrate your robot, first use ARCOScf and record and save on disk the
current values for the respective parameters, such as for driftFactor and revCount. Then connect
with the ARIA demo and engage position mode to move the robot. As accurately as possible, measure
its actual motion and position and use demo’s direct mode to adjust the reported values for your
robot’s current configuration and operating environment.
For example, start with driftFactor since its value affects both ticksMM and revCount. Draw a
line on the floor parallel to the robot’s translation travel and drive the robot forward or back at least
five meters. Adjust driftFactor (command #89) to minimize the robot’s drift off that line.
Then drive the robot forward or back one or more meters and compare its actual translation distance
you accurately measure with demo’s ARCOS-reported distance (x) in millimeters. Adjust ticksMM
(command #93) so that the numbers match.
Likewise, rotate your robot and compare your measured rotation angle to the reported heading (th).
Adjust revCount--the measure of differential encoder ticks to achieve 180-degrees rotation-accordingly (command #88).
Finally, drive the robot around and adjust its PID, velocity and acceleration values to achieve the
desired performance for the operating configuration.
When you are satisfied that the robot moves and rotates the proper distances and headings, and
drives with the proper performance, commit those new values into their related FLASH parameters in
your robot with ARCOScf and don’t forget to save a copy in a .rop file for later reference.
DRIVE LUBRICATION
Pioneer 3 drive motors and gearboxes are sealed and self-lubricating, so you need not fuss with
grease or oil. An occasional drop or two of oil on the axle bushings between the wheels and the case
won’t hurt. And keep the axles clear of carpet or other strings that may wrap around and bind up your
robot’s drive.
49
Calibration & Maintenance
BATTERIES
Lead-acid batteries like those in your Pioneer 3 robot last longest when kept fully charged. In fact,
severe discharge is harmful to the battery, so be careful not to operate the robot if the battery voltage
falls below 11 VDC.
Changing Batteries
CAREFUL!
The Batteries slide in
TERMINALS LAST!
Except for those equipped with the automated recharging system, your Pioneer robot has a special
battery harness and latched doors for easy access to the onboard batteries. Simply unlatch the rear
door, swing it open and locate the one to three onboard batteries inside.
To remove a battery, simply grasp it and pull out. We provide a suction-cup tool to help. Spring-loaded
contacts eliminate the need to detach any connecting wires.
Similarly, insert batteries by simply sliding each one into a battery box compartment. Load the
batteries so that their weight gets distributed evenly across the platform: Center a single battery and
place two batteries one on each side.
Hot-Swapping the Batteries
You may change the batteries on your Pioneer 3 without disrupting operation of the onboard systems
(except the motors, of course): Either connect the charger, which powers the robot's systems while
you change the battery or batteries. Or, if you have two or three batteries, swap each with a freshly
charged one individually, so that at least one battery is in place and providing the necessary power.
Charging the Batteries
If you have the standard charger accessory, insert it into a standard 110 or 220 (Europe/South
America/Asia) VAC wall power receptacle. (Some users may require a special power adapter.) Locate
the round plug at the end of the cable that is attached to the charger and insert it into the charge
socket that is just below your robot’s Main Power switch. The LEDs on the charger indicate charge
status, as marked on its case.
It takes fewer than 12 hours—often just a few hours, depending on the level of discharge—to fully
charge a battery using the accompanying charger (roughly, three hours per volt per battery). Although
you may operate the robot while recharging, it restricts the robot’s mobility.
Automated Docking/Charging System
The automated docking/charging system accessory optimally conditions power to charge the three 21Ahr, 12 VDC lead-acid batteries (6 A charging current max) and provides sufficient power (up to 5A) for
operation of all onboard systems.
The charging mechanism and onboard power conditioning circuitry can be retrofitted to all Pioneer 3
and some Pioneer 2 and PeopleBot robots. All require return to the factory.
Alternative Battery Chargers
The center post of the charger socket is the positive (+) side of the battery; the case is the negative (-)
side. A diode protects against the wrong charger polarity. Nonetheless, if you choose to use an
alternative battery charger, be sure to connect positive to positive and negative to negative from
charger to robot.
An alternative AC to DC converter/battery charger should sustain at least 0.75A at 13.75 to 14 VDC
per battery, and not more than 2-2.5 amperes per battery. The High-Speed Charger accessory, for
example, is a four ampere charger and should be used with at least two of the standard batteries.
50
MobileRobots Inc.
An alternative charger also should be voltage-and current-limited so that it cannot overcharge the
batteries.
TIGHTENING THE AT DRIVE BELT
Occasionally, particularly after heavy use,
the Pioneer 3- or 2-AT drive belts that
mechanically link the front and rear motors
on each side will loosen and slip, resulting
in a load popping noise. To tighten them,
start with a 3mm hex key to loosen, but not
remove, the three screws on the side of the
robot near the front wheel. One screw is
partly behind the wheel, so with our parts
kit, we included a 3mm hex key with a
shortened “L” section to fit behind the
wheel.
Figure 21. Loosen the AT drive belt retainer screws first.
Remove the small plastic plug which is
near the hinge on the top plate and near
the edge by the wheel. Under it, you will
see the head of a large hex bolt. This bolt
tightens (clockwise) or loosens (counterclockwise) the drive belt for that side of the
robot. Turn it using a 5mm hex key
probably not more than 1 full rotation.
Avoid over tightening.
Test to make sure that it is tight enough by
holding the wheel while running the self
test.
When adjusted satisfactorily, retighten the screws on the side and replace
the plug.
Figure 22. Locations of the P3-AT's belt-tensioning bolts
GETTING INSIDE
We discourage you from opening up your robot. However, on occasion, you may need to get inside, for
instance to access the user power connections on the Motor-Power board and attach your custom
electronics. Or you may need to get to your onboard computer and its accessories.
We describe here how to remove your robot’s nose to get at the onboard computer. And we describe
how to access the contents of the body of your Pioneer 3 robot.
Removing the Nose
The Pioneer 3-DX and –AT onboard computer
sits just behind the robot’s nose. And you may
have to remove the nose to access the front
sonar array’s gain adjustment pot. Two screws
hold the nose to the front sonar (or blank)
array. The AT also has a screw at the bottom of
the nose that attaches to the body; the DX’s
nose is hinged at the bottom.
Remove all nose retaining screws with the 3mm
hex wrench supplied with your robot. Unlike
earlier Pioneer 2 models, you do not have to
remove the Gripper or the front bumper
accessories.
Figure 23. Remove indicated screws to access
the front plate of Pioneer 3-DX and -AT robots.
51
Calibration & Maintenance
Once loosened, the DX nose pivots down on a hinge. For the AT model, four pins along the nose’s
back edges guide it onto the front of the robot. Simply pry the nose out and away from the body.
Figure 24. Remove indicated screws from Pioneer 3-DX or -AT rear deck to open plate.
Careful: The computer’s hard-drive, fan, and speaker have attached wire harnesses that you need to
relieve before completely detaching the nose from the body. We recommend unplugging the speaker
wire and simply rotating the nose out of the way to access the onboard computer.
Opening the Deck
All Pioneer 3 robots have a center hinge in the deck which let you easily open and access internal
components without completely removing the top plate. Simply remove the indicated 3mm screws
shown in the Figures nearby from the section of the deck that you want to access. You may need to
first remove any accessories that are bolted to the top plate through the indicated holes.
Remove the batteries BEFORE opening the robot.
FACTORY REPAIRS
If, after reading this manual, you’re having hardware problems with your Pioneer 3 robot and you’re
satisfied that it needs repair, contact us:
http://robots.MobileRobots.com/techsupport
Tell us your robot’s SERIAL NUMBER
Describe the problem in as much detail as possible. Also include your robot’s serial number
(IMPORTANT!) as well as name, email and mail addresses, along with phone and fax numbers. Tell us
when and how we can best contact you (we will assume email is the best manner, unless otherwise
notified).
Use MOBILEROBOTS authorized parts ONLY;
warranty void otherwise.
We will try to resolve the problem through communication. If the robot must be returned to the factory
for repair, obtain a shipping and repair authorization code and shipping details from us first.
We are not responsible for shipping damage or loss.
52
MobileRobots Inc.
Appendix A
MICROCONTROLLER PORTS & CONNECTORS
This Appendix contains pin-out and electrical specifications for
the external and internal ports and connectors on the SH2-based
microcontroller for the Pioneer 3, PeopleBot and PowerBot,
including motor-power interface and User Control boards.
Note that layered connectors are numbered differently,
depending on the socket type. IDC ones are odd and even
layers; microfit connectors use successive-position numbering.
Figure 25. Mini- and microfit style connector
numbering
See the Figures nearby for examples.
Figure 26. IDC-type connector
numbering
SH2 MICROCONTROLLER
Figure 27. Connectors on the SH2-based controller
Main Power
The power connector is a 3-pin microfit socket that delivers 12 and 5 VDC to the microcontroller,
including power ground.
Table 19. Microcontroller Power Connector
PIN
1
2
3
DESCRIPTION
12 VDC (battery)
GND
5VDC
53
Appendix A: Controller Ports and Connections
Serial Ports
One DSUB-9 and three 5-position microfit sockets provide the HOST and Aux1-Aux3 auxiliary serial
ports for the SH2 microcontroller. All are RS-232 compatible. The HOST port is shared on the User
Control Panel’s SERIAL port and is for ARCOS client-server and maintenance connections. The HOST
serial connector also has signal lines for detecting an attached device (DTR pin 4) and for notifying the
attached PC of low-power condition (DSR pin 6 and HRNG pin 9). The HOST serial connectors are
wired DCE for direct connection (straight-through cable, not NULL-modem) to a standard PC serial port.
See the nearby Tables for details.
The Aux1 through Aux3 serial ports are for RS232-compatible serial device connections, such as for
the TCM2 accessory or any of several pan-tilt-zoom robotic systems.24
The serial ports operate at any of the common data rates: 9.6, 19.2, 38.4, 57.8, or 115.2 kilobits per
second, and with eight data bits, one stop bit, no parity or hardware handshaking.
Table 20. HOST serial ports on microcontroller and on User Control (*) (DSUB-9 socket)
PIN
DESCRIPTION
PIN
SIGNAL
DESCRIPTION
1
3
nc
*RCV
Signal in
2
4
*TXD
DTR
5
*GND
Common
6
*DSR
Signal out
Input detects attached device
and switches TxD and RxD into
the uC
Output when microcontroller
powered
7
9
nc
†HRING
8
nc
†
SIGNAL
Output lowered to
signal PC shutdown
Shared on User Control Board interface
Table 21. Aux1, Aux2, and Aux3 serial ports (5-pos microfit sockets)
PIN
1
3
5
SIGNAL
DESCRIPTION
DTR
RCV
GND
Aux1 only
Signal in
Common
PIN
2
4
SIGNAL
DESCRIPTION
TXD
DSR
Signal out
Output active
User I/O, Gripper and Automated Recharger
A 20-pin latching IDC socket on the microcontroller provides the digital, analog and power ports for
user connections and for the Gripper and automated recharging accessories, if installed. Indicated
ports (*) are shared on other connectors. Digital inputs are buffered and pulled high (digital 1);
outputs are buffered and normally low (digital 0).
Table 22. User I/O – Gripper (20-pos latching IDC)
PIN
1
SIGNAL
OD0
3
OD1
5
OD2
7
OD3
9
ID4
11
ID5
13
ID6
15
ID7
17
19
*AN0
Vpp
24
DESCRIPTION
DIGOUT bit 0;
Gripper enable
DIGOUT bit 1;
Gripper direction
DIGOUT bit 2;
Lift enable
DIGOUT bit 3;
Lift direction
DIGIN bit 4;
Left paddle contact
DIGIN bit 5;
Right paddle contact
DIGIN bit 6;
”power good”
DIGIN bit 7;
”overcharge”
Analog port 0
Battery 12VDC < 1A
PIN
2
SIGNAL
ID0
4
ID1
6
ID2
8
ID3
10
OD4
12
OD5
14
OD6
16
OD7
18
20
Vcc
Gnd
DESCRIPTION
DIGIN bit 0;
Paddles open limit
DIGIN bit 1;
Lift limit
DIGIN bit 2;
Outer breakbeam IR
DIGIN bit 3;
Inner breakbeam IR
DIGOUT bit 4;
“inhibit”
DIGOUT bit 5;
“deploy”
DIGOUT bit 6;
User only
DIGOUT bit 7;
User only
5VDC < 1A
Signal/power common
Note that on some original boards the Aux ports 1 and 2 were mislabeled. The Figure is correct for all boards.
54
MobileRobots Inc.
Motors, Encoders and IRs
A 26-position latching IDC connector on the microcontroller provides interface to the Motor-Power
Board (Appendix B). Line descriptions also can be found in the following Motor-Power Interface
section.
Table 23. Motors, encoders, and IRs interface (26-pos latching IDC)
PIN
SIGNAL
DESCRIPTION
PIN
1
LPWM
Left motors PWM
2
3
RPWM
Right motors PWM
4
5
MEN
Motors enable
6
7
E-STOP
E-Stop detect input
8
9
RPWR
Aux1 power enable
10
11
APWR
Aux2 power enable
12
13
CHRG
Charge port detect
14
15
IR7
IR input bit 7
16
17
IR5
IR input bit 5
18
19
IR3
IR input bit 3
20
21
IR1
IR input bit 1
22
23
Gnd
Signal common
24
25
Gnd
Signal common
26
* Board versions C and earlier pin 24 HOST RI and pin 26 ground.
SIGNAL
LDIR
RDIR
LEA
REA
REB
LEB
IR6
IR4
IR2
IR0
VBAT
AN1*
AN2*
DESCRIPTION
Left motors direction
Right motors direction
Left encoder channel A
Right encoder channel A
Right encoder channel B
Left encoder channel B
IR input bit 6
IR input bit 4
IR input bit 2
IR input bit 0
Battery voltage
Analog input
Analog input
Joystick
An 8-position microfit socket provides signal lines for connection to the inductive joystick accessory.
Indicated lines (*) are shared on other connectors.
Table 24. Joystick connector (8-pos microfit)
PIN
1
SIGNAL
Vcc
DESCRIPTION
5 VDC
PIN
*AN4
*AN3
*AN0
Turn Y-axis
Drive X-axis
Throttle
SIGNAL
FB0
DESCRIPTION
Fire button 0
AGND
FB1
Analog GND
Fire button 1
nc
2
3
5
7
4
6
8
Bumpers
Two 10-position latching IDC connectors provide general-purpose digital inputs, typically used for the
robot’s bumpers. All inputs are buffered and pulled high (digital 1).
Table 25. Bumper ports (10-pos latching IDC)
PIN
1
3
5
7
9
SIGNAL
BP0
BP2
BP4
BP6
Gnd
DESCRIPTION
Bumper bit 0
Bumper bit 2
Bumper bit 4
Bumper bit 6
Common
PIN
2
4
6
8
10
SIGNAL
BP1
BP3
BP5
BP7
Gnd
DESCRIPTION
Bumper bit 1
Bumper bit 3
Bumper bit 5
Bumper bit 7
Common
Sonar
Four connectors—two latching 10-pos IDC and two 10-pos microfits—provide signal and power for the
four sonar arrays SONAR1 through SONAR4, respectively.
Table 26. Sonar
PIN
1
3
5
7
9
SIGNAL
A0
A2
INIT
VCC
SGND
DESCRIPTION
disc address
disc address
starts sonar ping
5 VDC
Common
PIN
2
4
6
8
10
SIGNAL
A1
BINH
VCC
SGND
ECHO
DESCRIPTION
disc address
inhibits return signal
5 VDC
Common
Goes high if echo threshold reached
55
Appendix A: Controller Ports and Connections
User Control Board
A 16-position latching IDC connector provides interface with the User Control Panel board and
functions. See description in a following section.
Table 27. User Control Panel interface
PIN
1
3
5
7
9
11
13
15
SIGNAL
Vcc
RST
RPWR
DESCRIPTION
5 VDC power
RESET button
Radio power switch
PLED
Vpp
Gnd
HDSR
Main power
Battery 12 VDC
Signal/power common
HOST serial enabled
PIN
2
4
6
8
10
12
14
16
SIGNAL
Vcc
MOT
APWR
BZR
SLED
Gnd
HTXD
HRCV
DESCRIPTION
5 VDC power
MOTORS button
Aux power switch
Buzzer PWM
Status
Signal/power common
HOST serial transmit
HOST serial receive
Heading Correction Gyro
The heading-correction gyro accessory attaches directly with the microcontroller through its respective
6-position microfit connector. Indicated lines (*) are shared on other connectors.
Table 28. Heading correction gyro connector
PIN
1
3
5
SIGNAL
nc
RATE
AGND
DESCRIPTION
PIN
2
4
6
AN6
Analog gnd
SIGNAL
VCC
TEMP
GND
DESCRIPTION
5 VDC power
AN7
Power ground
Tilt/Roll
Another six-position connector provides signal and power for an accelerometer-based tilt/roll
accessory. Indicated lines (*) are shared on other connectors.
Table 29. Tilt/roll accessory connector
PIN
1
3
5
SIGNAL
nc
XAXIS
AGND
DESCRIPTION
PIN
2
4
6
Pitch AN4
Analog gnd
SIGNAL
VCC
YAXIS
GND
DESCRIPTION
5 VDC power
Roll AN5
Power gnd
I2C
A six-position microfit contains the signals and power to interface with I2C bus-enabled devices, such
as the 4-line x 20-character LCD accessory.
Table 30. I2C bus connector
PIN
1
3
5
56
SIGNAL
SDA
VCC
CGND
DESCRIPTION
Data
5 VDC power
Shield gnd
PIN
2
4
6
SIGNAL
nc
SCL
GND
DDESCRIPTION
Clock
Power/signal
gnd
MobileRobots Inc.
Appendix B
Motor-Power Distribution Board
MOBILEROBOTS’ original Pioneer 2 robots had two separate boards which interface with their respective
microcontroller to provide power for the motors as well as conditioned power and signal paths for the
standard and accessory onboard electronics. Pioneer 3s have just a single Motor-Power Board.
Consult Appendix A for microcontroller and User Control Panel interface details.
MOTOR-POWER BOARD
The Motor-Power Board contains all the features of the two-board legacy system and lots more.
Figure 28. Pioneer 3 Motor-Power Board
Microcontroller Power
Individual 26-pos IDC connectors and cables provide signal for the H8S- and SH2-based
microcontrollers or for the legacy C166-based microcontrollers. A separate cable and connector
provides for the SH2 microcontroller and sonar power. Power and signal are shared on the C166
microcontroller connector.
Table 31. Power connector (5-pos microfit)
PIN
1
2
3
4
5
FUNCTION
DESCRIPTION
Vbat
Battery power
Gnd
Vcc
Vcc
nc
Power common
5 VDC for sonar
5 VDC for sonar
No connection
Radio, Auxiliary and User Power Connectors
Various connectors provide conditioned 5 VDC @ 1.5A total and unconditioned battery power for the
variety of accessories and custom user attachments. Some are AUX1 and AUX2 power switched from
the User Control Panel. Use the 12-position latchlock connector for legacy installations. Otherwise,
57
Appendix B: Motor-Power Distribution Board
screw-down auxiliary user-power connectors make custom attachments easy. Four-position microfit
connectors also provide AUX power for standard accessories.
Table 32. User Control Panel-switched AUX1 (formerly RADIO) power connector (3-pos microfit)
PIN
1
2
3
FUNCTION
DESCRIPTION
Vpp
AUX1
VDC
Gnd
Vcc
Power common
AUX1 (formerly radio) switched 5 VDC
(formerly radio) switched battery 12
Table 33. User Control Panel-switched and unswitched Aux power connectors (4-pos microfits and
screw-down terminal blocks)
PIN
1
2
3
4
FUNCTION
DESCRIPTION
Vpp
Vcc
Gnd
Gnd
Aux switched battery 12 VDC
Aux switched 5 VDC
Power common
Power common
Table 34. User Power connector (12-pos latchlock; unswitched)
PIN
1
2
3
4
5
6
FUNCTION
Vcc
Gnd
Vpp
Vcc
Gnd
Vpp
PIN
7
8
9
10
11
12
FUNCTION
Vcc
Gnd
Vpp
Vcc
Gnd
Vpp
IR Signal and Power
Four connectors provide power and signal for fixed-range IR sensors. A separate connector provides
signal path for an additional four IR sensors.
Table 35. IR power and signal connectors (3-pos microfits)
PIN
1
2
3
FUNCTION
DESCRIPTION
Vpp
IRn
Gnd
Battery 12 VDC
Switching signal
Power/signal ground
Table 36. Additional IR connector (8-pos latchlock 0.1 header)
58
PIN
SIGNAL
DESCRIPTION
1-4
5-8
IR4-7
GND
IR signals
Signal common
MobileRobots Inc.
Appendix C
SPECIFICATIONS
Pioneer 3-DX
Pioneer 3-AT
Performance PeopleBot
Physical Characteristics
Length (cm)
44.5
50.1
47
Width (cm)
39.3
49.3
38
Height (cm)
23.7
27.7
124
Clearance (cm)
6.0
8.4
3.5
Clearance bumpers
(cm)
3.5
5.4
3.5
Weight (kg)
9
14
21
Payload (kg)
25
40
11
3
3
3
Charge (wtt-hrs)
252
252
252
Run time (hrs)
8–10
4-6
8-10
3-4
2-3
3-4
6
6
6
2.4
2.4
2.4
Power
Batteries 12VDC
lead-acid
with PC (hrs)
Recharge time
hr/battery
std charger
High-Speed
(3 batteries)
Mobility
Wheels
2 foam-filled
4 pneumatic
2 foam-filled
tread
knobby
wave
knobby
diam (mm)
195.3
220
195.3
width (mm)
47.4
75
50
75
na
75
Differential
Skid
Differential
Gear ratio
38.3:1
49.8:1
38.3:1
Swing (cm)
26.7
34
33
0
0
0
Translate speed
max (mm/sec)
1,400
700
900
Rotate speed
max (deg/sec)
300
140
150
Traversable step
max (mm)
20
89
15
Traversable gap
max (mm)
89
127
50
25%
40%
11%
Wheel-chair accessible
Unconsolidated.
No carpets!
Wheel-chair accessible
Caster (mm)
Steering
Turn (cm)
Traversable slope
max (grade)
Traversable
terrains
59
Appendix C: Specifications
Sensors
Pioneer 3-DX
Pioneer 3-AT
Performance PeopleBot
Sonar Front Array
(one each side, six
forward @ 20°
intervals)
8
8 optional
8
Rear Sonar Array
(one each side, six
rear @ 20°
intervals)
8 optional
8 optional
8
Top Deck Sonar
(one each side, six
forward @ 20°
intervals)
na
na
8
Rear Deck Sonar
(one each side, six
forward @ 20°
intervals)
na
na
8 optional
76,600
34,000
76,600
Encoders (2 ea)
counts/rev
counts/mm
counts/rotation
Bumpers
128
49
128
33,500
22,500
33,500
Optional
Optional
Standard
Controls and Ports
Main Power
Standard
Standard
Charge
Standard
Standard
Standard
Joydrive
Optional
Standard
Standard
Motor Stop
Optional
Standard
Standard
Aux1 Power
5 & 12 VDC sw’d
5 & 12 VDC sw’d
5 & 12 VDC sw’d
Aux2 Power
5 & 12 VDC sw’d
5 & 12 VDC sw’d
5 & 12 VDC sw’d
System Serial
Standard
Standard
Standard
Motors
Standard
Standard
Standard
Microcontroller
Reset
Standard
Standard
Standard
60
Standard
Warranty & Liabilities
Your MobileRobots platform is fully warranted against defective parts or assembly for one year after it
is shipped to you from the factory. Accessories are warranted for 90 days. Use only MobileRobots
authorized parts or warranty void. This warranty also explicitly does not include damage from shipping
or from abuse or inappropriate operation, such as if the robot is allowed to tumble or fall off a ledge,
or if it is overloaded with heavy objects.
The developers, marketers and manufacturers of MobileRobots products shall bear no liabilities for
operation and use of the robot or any accompanying software except that covered by the warranty and
period. The developers, marketers or manufacturers shall not be held responsible for any injury to
persons or property involving MobileRobots products in any way. They shall bear no responsibilities or
liabilities for any operation or application of the robot, or for support of any of those activities. And
under no circumstances will the developers, marketers or manufacturers of MobileRobots products
take responsibility for support of any special or custom modification to MobileRobots platforms or their
software.
19 Columbia Drive
Amherst, NH 03031
(603) 881-7960
(603) 881-3818 fax
http://www.MobileRobots.com