Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Research PatrolBot 3rd Generation
User's Guide
Rev. A
(via 10247-000 Rev. B)
January 24, 2012
Copyright Notice:
The information contained herein is the property of Adept Technology, Inc., and shall not be reproduced in whole or in part without prior written
approval of Adept Technology, Inc. The information herein is subject to change without notice and should not be construed as a commitment by Adept
Technology, Inc. The documentation is periodically reviewed and revised.
Adept Technology, Inc., assumes no responsibility for any errors or omissions in the documentation. Critical evaluation of the documentation by the
user is welcomed. Your comments assist us in preparation of future documentation. Please submit your comments to: [email protected].
Copyright by Adept Technology, Inc. All rights reserved.
Adept, the Adept logo, the Adept Technology logo, AdeptVision, AIM, Blox, Bloxview, FireBlox, Fireview, Meta Controls, MetaControls, Metawire,
PatrolBot, Seekur, Soft Machines, and Visual Machines are registered trademarks of Adept Technology, Inc.
Brain on Board is a registered trademark of Adept Technology, Inc. in Germany.
Adept ACE, ACE PackXpert, Adept 1060 / 1060+, Adept 1850 / 1850 XP, Adept 540, Adept 560, Adept AnyFeeder, Adept Award, Adept C40, Adept
C60, Adept CC, Adept Cobra 350, Adept Cobra 350 CR/ESD, Adept Cobra 550, Adept 550 CleanRoom, Adept Cobra 600, Adept Cobra 800, Adept
Cobra i600, Adept Cobra i800, Adept Cobra PLC Server, Adept Cobra PLC800, Adept Cobra s600, Adept Cobra s800, Adept Cobra s800 Inverted,
Adept Cobra Smart600, Adept Cobra Smart800, Adept DeskTop, Adept FFE, Adept FlexFeeder 250, Adept IC, Adept iSight, Adept Impulse Feeder,
Adept LineVision, Adept MB-10 ServoKit, Adept MC, Adept MotionBlox-10, Adept MotionBlox-40L, Adept MotionBlox-40R, Adept MV, Adept MV-
10, Adept MV-19, Adept MV-4, Adept MV-5, Adept MV-8, Adept OC, Adept Python, Adept Quattro s650, Adept Quattro s650H, Adept Quattro
s650HS, Adept Quattro s800H, Adept sDIO, Adept SmartAmp, Adept SmartAxis, Adept SmartController CS, Adept SmartController CX, Adept
SmartModule, Adept SmartMotion, Adept SmartServo, Adept sMI6, Adept sSight, Adept Viper s650, Adept Viper s850, Adept Viper s1300, Adept
Viper s1700, AdeptCartesian, AdeptCast, AdeptForce, AdeptFTP, AdeptGEM, AdeptModules, AdeptMotion, AdeptMotion Servo, AdeptMotion VME,
AdeptNet, AdeptNFS, AdeptOne, AdeptOne-MV, AdeptOne-XL, AdeptRAPID, AdeptSight, AdeptSix, AdeptSix 300, AdeptSix 300 CL, AdeptSix 300
CR, AdeptSix 600, AdeptTCP/IP, AdeptThree, AdeptThree-MV, AdeptThree-XL, AdeptTwo, AdeptVision AGS, AdeptVision AVI, AdeptVision GV,
AdeptVision I, AdeptVision II, AdeptVision VME, AdeptVision VXL, AdeptVision XGS, AdeptVision XGS II, AdeptWindows, AdeptWindows
Controller, AdeptWindows DDE, AdeptWindows Offline Editor, AdeptWindows PC, AIM Command Server, AIM Dispense, AIM PCB, AIM
VisionWare, AmigoBot, A-Series, FlexFeedWare, HyperDrive, IO Blox, MicroV+, MobileEyes, MobilePlanner, MobileSim, MotionBlox, MotionWare,
ObjectFinder, ObjectFinder 2000, PackOne, PalletWare, PowerBot, sAVI, S-Series, UltraOne, V, V+, and VisionTeach are trademarks of Adept
Technology, Inc.
Any trademarks from other companies used in this publication
are the property of those respective companies.
Created in the United States of America
10 Columbia Drive • Amherst, NH 03458 • USA • Phone +1 603.881.7960 • Fax+1 603.881.3818
www.mobilerobots.com www.adept.com [email protected]
Table of Contents
Chapter 1: Introduction .................................................... 1
1.1 Product Description .................................................................................................... 1
1.2 Software Overview ..................................................................................................... 2
1.3 How Can I Get Help?.................................................................................................. 5
Chapter 2: Safety .............................................................. 7
Chapter 3: Installation and Setup ................................... 11
3.1 Transport and Storage .............................................................................................. 11
3.2 Unpacking the Robot ................................................................................................ 11
3.5 Repacking for Relocation ......................................................................................... 12
3.6 Operating Environment ........................................................................................... 12
Chapter 4: Getting Started .............................................. 13
4.1 Assembly and Start Up ............................................................................................. 13
Chapter 5: Connectivity .................................................. 17
5.2 Available Power Connections ................................................................................. 17
5.3 Available I/O Connections ....................................................................................... 18
5.4 I/O Connections ......................................................................................................... 19
5.5 I/O Pinouts ................................................................................................................. 21
Chapter 6: Operation ...................................................... 25
6.1 Operating Environment ........................................................................................... 25
6.3 Power and Charging ................................................................................................. 26
6.4 Indicators and Manual Controls ............................................................................. 28
6.5 Onboard Computer. ................................................................................................... 31
6.6 Sonar ........................................................................................................................... 32
6.7 Laser Range Finder ................................................................................................... 32
Chapter 7: Maintenance .................................................. 35
7.2 Cleaning ...................................................................................................................... 36
7.3 Replacing Periodic Parts .......................................................................................... 37
7.4 Replacing Non-Periodic Parts ................................................................................. 39
8.1 Dimension Drawings ................................................................................................ 51
8.2 Robot Specifications .................................................................................................. 53
Chapter 9: Robot Programming and Configuration ......... 57
ARIA .................................................................................................................................. 57
Client-Server Communication Packet Protocol ........................................................... 57
Updating & Reconfiguring µARCS ............................................................................... 76
Appendix A: Internal Component Connection Diagram ... 85
Appendix B: PCB Layouts ................................................ 87
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 1 of 96
Chapter 1: Introduction This manual covers the setup, operation, and user maintenance for the Adept MobileRobots
Research PatrolBot.
This manual does not cover the installation or configuration of user-supplied accessories.
1.1 Product Description
The Adept MobileRobots Research PatrolBot is a general-purpose, 2-wheel differential-drive,
indoor mobile robot, designed and sized to carry payloads up to 40 kg while working around
people. The robot's size and drive assembly are designed to work in any wheelchair-accessible
environment.
Research PatrolBot 3rd Generation is an update of the previous 1st and 2nd generation Research
PatrolBots. The 3rd Generation is based on the same design as Adept mobile robot platforms
used for commercial and industrial applications. The 3rd Generation of the Research PatrolBot
differs from the prior 2nd generation Research PatrolBot by its white body color instead of the
previous gray color, the addition of useful power and IO connector wells recessed in the top
plate, and other internal improvements.
PatrolBot combines hardware and development software libraries to provide an intelligent
mobile platform upon which you can deploy your mobile robotic research applications. Using
the Adept MobileRobots Pioneer Software Development Kit you can write software that simply
controls robot motion, or uses advanced localization and navigation capabilities to know
where it is within an indoor workspace, and to drive safely and autonomously to any accessible
destination within that workspace, continuously and without human intervention. This
autonomous navigation capability may also be used to automatically self-charge with its
dedicated charging station.
The primary sensor is a laser rangefinder. The laser is backed up by rear-facing sonar, and front
and back sensing bumpers.
The Adept MobileRobots Research PatrolBot provides a variety of interfaces, power options,
and systems support needed for development and deployment of application-specific sensors
and accessories. See "Connectivity".
Body and Drive
The Adept MobileRobots Research PatrolBot is relatively small, lightweight, and highly
maneuverable. It has a strong aluminum body and solid construction that makes it very
durable, and is insulated against water splashes and dust.
The robot is a two-wheel, differential-drive vehicle, with passive casters front and rear, and
independent drive-wheel spring-suspension for balance. Its solid, foam-filled wheels are at the
center of rotation so that the robot turns in place. Each of the robot's two drive wheels are
driven by a brushless motor with planetary gear reduction for high reliability.
Chapter 1: Introduction
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 2 of 96
What's Included - Basic Components (all robots)
One fully-assembled robot with fully-charged batteries
Integrated microcontroller with μARCS firmware (installed in robot)
Integrated Single Board Computer (SBC) running either Debian Linux or Windows XP
Embedded. (installed in robot)
Joystick
Integrated wired and wireless Ethernet (installed in robot)
Integrated scanning laser range finder (installed in robot)
Integrated audio output with speaker (installed in robot)
CD-ROM containing licensed copies of Adept software and documentation
ARIA, ARNL, μARCS, and other software is also pre-loaded on the robot.
Documentation
Optional Components and Attachments (partial list)
Automated charging (docking) station
External power supply, PN 10484-000
Spare sealed lead-acid battery pack, PN 10702-000
Low-obstacle Detection Laser (URG), PN 10896-000 (installed in robot)
Pan/tilt/zoom Camera
Stereo Camera
Manipulator Arm
See www.mobilerobots.com for more
1.2 Software Overview
The robot comes with the following software. If ordered with an onboard computer, all
software has been installed on the onboard computer as well as provided on CD, and is
available for download (including any updated versions) at http://robots.mobilerobots.com. All
software is available for Windows and Linux.
μARCS
At the lowest level, a microcontroller running μARCS firmware handles the details of mobility,
including maintaining the robot’s drive speed and heading over uneven terrain, as well as
acquiring sensor readings, such as from the encoders, gyroscope, and sonar, and managing the
robot’s power and emergency stop systems, batteries, and bumpers. The μARCS controller
computes and reports the robot’s odometry (X, Y, and heading), sonar readings, and a variety
of other low-level operating conditions via an RS-232 serial channel. See Chapter 9 for details
on this protocol, more information on how µARCS operates, and details on its behavior via
configuration parameters stored by the robot.
µARCS updates are available for download at http://robots.mobilerobots.com/wiki/µARCS.
uARCScf
uARCScf is the utility used to configure various μARCS parameters stored by the robot in
nonvolatile “FLASH” memory. It can also be used to upgrade the version of μARCS. uARCScf
is included with the µARCS firmware packages, which can be found in /usr/local/µARCS on
Linux or C:\Program Files\MobileRobots\µARCS on Windows.
Chapter 1: Introduction
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 3 of 96
Onboard Computer Operating System
The robot’s onboard computer (if present) has been configured with either a Linux or Windows
XP Embedded operating system, along with all drivers and software needed for devices
included with the computer.
ARIA
ARIA is the core development library or SDK for use with the PatrolBot. It is a C++ library
(with wrapper libraries also available for Python and Java).
ARIA is available with all robots.
On Linux is can be found at /usr/local/Aria, and on Windows at C:\Program
Files\MobileRobots\Aria and in the Start Menu. ARIA includes full API reference
documentation in its doc subdirectory, as well as example programs in the examples directory,
and full source code distributed as free software under the terms of the GNU General Public
License.
ARIA updates and additional information are available for download at
http://robots.mobilerobots.com/wiki/ARIA.
ARNL
ARNL is a development library or SDK for including accurate laser localization and flexible,
reliable autonomous navigation capabilities in your software.
ARNL is included with all robots ordered with the Laser Navigation package.
ARNL can be found installed on Linux at /usr/local/Arnl, and on Windows at C:\Program
Files\MobileRobots\ARNL. The ARNL installation includes the localization and navigation
libraries, as well as compatible ARIA libraries. It includes a full API reference manual in the
doc subdirectory, as well as example programs in the examples directory. Refer to ARNL’s
README.txt file and API reference manual for more information on getting started using it.
ARNL updates and additional information are available for download at
http://robots.mobilerobots.com/wiki/ARNL.
Mapper3
Mapper3 is an application used for converting and editing maps for use with ARNL and
MobileSim.
Mapper3 is available for download at http://robots.mobilerobots.com/wiki/Mapper3.
MobileSim
MobileSim is the MobileRobots simulator. If you run MobileSim first, ARIA will automatically
connect to MobileSim instead of the real robot. This allows software to be tested with the
simulator on any computer before using the real robot, without recompilation or any changes.
MobileSim is available for download at http://robots.mobilerobots.com/wiki/MobileSim.
Chapter 1: Introduction
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 4 of 96
MobileEyes
MobileEyes is a graphical application for remote visualization, teleoperation, and software
configuration. It communicates with onboard robot software via the wireless network and the
ArNetworking system (included with ARIA), and can run on any PC or laptop.
MobileEyes is available for download at http://robots.mobilerobots.com/wiki/MobileEyes.
Software for Accessory Devices
Development libraries for use with some accessory devices are provided by the original
manufacturer of the device. This includes the Cyton arm, the Bumblebee stereo camera, the
Focus nDepth stereo processor (used with MobileRanger), and some other devices. These
libraries can be downloaded from http://robots.mobilerobots.com/wiki/Software. All other
accessory devices are supported in ARIA.
Speech Synthesis and Recognition Libraries
MobileRobots provides repackaged versions of free speech recognition and synthesis software,
as well as the optional Cepstral higher quality speech synthesis library (included when the
optional Speech packages are ordered with a robot). These can be found at
http://robots.mobilerobots.com/wiki/ArSpeech
Chapter 1: Introduction
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 5 of 96
1.3 How Can I Get Help?
MobileRobots provides a customer support website at http://robots.mobilerobots.com. This website provides
downloads of all manuals, software and device drivers, a searchable knowledge base of information, tips and
answers to frequently asked questions.
For questions and public discussions on use of ARIA and other MobileRobots-provided software with users
of MobileRobots platforms, MobileRobots provides the aria-users mailing list. See
http://robots.mobilerobots.com/wiki/aria-users for archives of past discussions and instructions on joining
the mailing list.
For questions and public discussions on robot hardware and general robotics topics with other users of
MobileRobots platforms, MobileRobots provides the pioneer-users mailing list. See
http://robots.mobilerobots.com/wiki/pioneer-users for archives of past discussions and instructions on
joining the mailing list.
To contact MobileRobots’ customer support specialists regarding any questions not answered in this
documentation, or to troubleshoot problems with your robot, visit
http://robots.mobilerobots.com/wiki/Contact_Support, or email [email protected] describing your
problem. Include your robot’s serial number.
Factory Repairs
If after reading this manual, you are having hardware problems with your Adept MobileRobots Research
PatrolBot and are sure that it needs repair, contact us at:
In the body of your e-mail message, provide your robot’s serial number and describe the problem you are
having in as much detail as possible.
Tell us when and how we can best contact you. We will assume e-mail is the best format, unless otherwise
notified. We will try to resolve the problem through communication. If the robot must be returned to the factory
for repair, obtain a Repair Authorization Code and shipping instructions from us first.
Chapter 1: Introduction
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 6 of 96
Chapter 2: Safety
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 7 of 96
Chapter 2: Safety
2.1 Dangers, Warnings, Cautions, and Notes
There are six levels of special alert notation used in Adept manuals. In descending order of
importance, they are:
DANGER: This indicates an imminently hazardous electrical situation which,
if not avoided, will result in death or serious injury.
DANGER: This indicates an imminently hazardous situation which, if not
avoided, will result in death or serious injury.
WARNING: This indicates a potentially hazardous electrical situation which, if
not avoided, could result in serious injury or major damage to the equipment.
WARNING: This indicates a potentially hazardous situation which, if not
avoided, could result in serious injury or major damage to the equipment.
CAUTION: This indicates a situation which, if not avoided, could result in
minor injury or damage to the equipment.
NOTE: Notes provide supplementary information, emphasizes a point or
procedure, or gives a tip for easier operation.
Chapter 2: Safety
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 8 of 96
2.2 Qualification of Personnel
This manual assumes that all personnel have been trained and have a working knowledge of
the system. The user must provide the necessary additional training for all personnel who will
be working with the system.
As noted in this user’s guide, certain procedures should be performed only by skilled or
instructed persons. For a description of the level of qualification, Adept uses the standard
terms:
Skilled persons have technical knowledge or sufficient experience to enable them to
avoid the dangers, electrical and/or mechanical.
Instructed persons are adequately advised or supervised by skilled persons to enable
them to avoid the dangers, electrical and/or mechanical.
All personnel must observe sound safety practices during the installation, operation, and
testing of all electrically powered equipment. To avoid injury or damage to equipment, always
remove power by disconnecting the AC power from the source before attempting any repair or
upgrade activity. Use appropriate lockout procedures to reduce the risk of power being
restored by another person while you are working on the system.
DANGER: Any person who programs, teaches, operates, maintains, or repairs
the robot system must be trained and must demonstrate the competence to
safely perform the assigned task.
DANGER: The user must get confirmation from every entrusted person before
they start working with the robot that the person:
Has received the user's guide.
Has read the user's guide.
Understands the user's guide.
Will work in the manner specified by the user's guide.
2.3 Safety Aspects While Performing Maintenance
Only skilled persons with the necessary knowledge about the safety and operating equipment
are allowed to maintain the robot.
DANGER: During maintenance and repair, the power to the charging station
must be turned off. Unauthorized third parties must be prevented, through the
use of lockout measures, from turning on power.
DANGER: During maintenance and repair, disconnect the batteries of the
robot as soon as possible. Avoid shorting the terminals of the batteries.
Chapter 2: Safety
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 9 of 96
2.4 Important Safety Instructions
Read the installation and operation instructions before using the equipment.
Do not ride on the robot.
Do not exceed the maximum payload.
Limit operation to a 20% slope (12% for payloads over 10 kg up to 25 kg).
Do not drop the robot, run it off a ledge, or otherwise operate it in an irresponsible
manner.
Do not get the robot wet. Do not expose the equipment to rain or moisture.
Do not use power extension cords unless properly rated.
Do not continue to run the robot after hair, clothing, wires, string, or any other items
have become wound around the robot’s axles or wheels.
Never access the interior of the robot with the charger attached.
Immediately disconnect the battery pack when removing the battery pack cover.
Do not use parts not authorized by Adept.
Do not use any charger not supplied by Adept.
Do not turn on the robot without the antennas in place.
The installation and use of Adept products must comply with all safety instructions and
warnings in this manual. Installation and use must also comply with all applicable local and
national requirements and safety.
The Adept MobileRobots Research PatrolBot is intended for use on level floors, for payloads
under 40 kg (88 lbs.).
The body of the PatrolBot must not come into contact with liquids. The drive wheels can
tolerate damp floors, but the body of the robot must remain dry.
The Adept equipment is not intended for use in any of the following situations:
In hazardous (explosive) atmospheres
In mobile, portable, marine, or aircraft systems
In life-support systems
In residential installations
In temperatures over 40° C (104° F) or humidity over 95% (or condensing).
CAUTION: The instructions for installation, operation, and maintenance given
in this manual must be strictly observed.
Non-intended use of an PatrolBot can:
Cause injury to personnel
Damage the robot or other equipment
Reduce system reliability and performance
All persons that install, commission, operate, or maintain the robot must:
Have the necessary qualifications
Chapter 2: Safety
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 10 of 96
Read and follow exactly the instructions in this manual
If there is any doubt concerning the application, ask Adept to determine if it is an intended use
or not.
Take precautions to ensure that these situations do not occur.
Purposely defeating any aspect of the safety E-Stop system
Improper installation or programming of the robot system
2.5 Safety Standards
The following table lists standards that the robot system has been evaluated to meet.
Table 2-1. Standards Met by Robot
Standard
TUV-tested to UL standards 1740:1998 (charging station)
FCC part 15
2.6 Safety Requirements for Additional Equipment
If the robot is to be used in an EU or EEA member country, all accessories used with the robot
must comply with the safety requirements in the European Machine Directive 89/392/EEC (and
subsequent amendments) and related harmonized European, international, and national
standards. For robot systems, these include: EN 775/ISO 10218, sections 5,6; EN 292-2; and EN
60204.
In other countries, Adept strongly recommends, in addition to complying with the
applicable local and national regulations, that a similar level of safety be attained.
In the USA, applicable standards include ANSI/RIA R15.06 and ANSI/UL 1740.
In Canada, applicable standards include CAN/CSA Z434.
2.7 What to Do in an Emergency Situation
Press the E-Stop button (red push-button) and then follow the internal procedures of your
company or organization for an emergency situation. If a fire occurs, use CO2 to extinguish the
fire.
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 11 of 96
Chapter 3: Installation and Setup
3.1 Transport and Storage
The PatrolBot must be shipped and stored in a temperature-controlled environment, within the
range 5° to 40° C (41° to 104° F). The recommended humidity range is 5 to 90 percent, non-
condensing. It should be shipped and stored in the Adept-supplied shipping container, which
is designed to prevent damage from normal shock and vibration. You should protect the
container from excessive shock and vibration.
In particular, ensure the bottom of the robot is fully supported by packing material.
The robot must always be stored and shipped in an upright position in a clean, dry area that is
free from condensation. Do not lay the container on its side or any other non-upright position.
This could damage the robot.
The PatrolBot weighs 38 - 45 kg (84 - 99 lbs.) with no options installed.
Battery Pack
Batteries should be stored in a cool environment to prevent self-discharge. The manufacturer
recommends +5° to +25° C (41° to 77° F) if storing for more than 7 days. For storage under 7
days, +5° to +40° C (41° - 104° F) is acceptable.
In any case, the batteries should start storage fully charged. If the batteries have been stored
for more than 3 months at +25° C (77° F) or 1.5 months at +35° C (95° F), they will require up to
5 charge cycles before they reach full capacity.
NOTE: If you purchased spare battery packs, this section applies to them, also.
3.2 Unpacking the Robot
Carefully inspect all shipping containers for evidence of damage during transit. If any damage
is indicated, request that the carrier’s agent be present at the time the container is unpacked.
Before signing the carrier’s delivery sheet, compare the actual items received (not just the
packing slip) with your equipment purchase order. Verify that all items are present and that
the shipment is correct and free of visible damage.
If the items received do not match the packing slip, or are damaged, do not sign the receipt.
Contact Adept as soon as possible.
If the items received do not match your order, please contact Adept immediately.
Retain all containers and packaging materials. These items may be necessary to settle claims or,
at a later date, to relocate the equipment.
The PatrolBot comes packed in foam in a cardboard box.
Open the box to reveal the robot
Remove the tie-down and foam to fully-expose the robot.
Chapter 3: Installation and Setup
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 12 of 96
The charging station is shipped in a separate box, along with the joystick.
Refer to Chapter 4: Getting Started for further assembly and set up steps.
3.5 Repacking for Relocation
If the robot or other equipment needs to be relocated, reverse the steps in the installation
procedures in this chapter. Reuse all original packing containers and materials and follow all
safety notes used for installation. Improper packaging for shipment will void your warranty.
The robot must always be shipped in an upright orientation.
3.6 Operating Environment
The Adept MobileRobots Research PatrolBot is designed to operate in an environment that is
wheelchair accessible. Care must be taken to avoid:
glass doors/walls
pits without railings or low bumpers
floors with access panels removed
loose cables, hoses, etc.
large, highly-reflective objects
Floors must provide good traction, typical of good walking conditions.
Slopes 20% with up to a 10 kg payload
(requires a 50 cm transition area)
12% with up to a 25 kg payload
Step traversal up to 15 mm
Gap traversal up to 15 mm
Temperature 5° - 40° C (41° - 104° F)
Humidity 0 - 95%, non-condensing
The PatrolBot is not intended for use in hazardous environments (explosive gas, water, dust, oil
mist). It has an IP rating of IP-42.
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 13 of 96
Chapter 4: Getting Started This chapter describes how to quickly set up, test, and operate your new PatrolBot. For more
mapping and integration details, refer to the ARIA API Reference Manual, the ARNL API
Reference Manual, and the ARNL Quick Start Guide
4.1 Assembly and Start Up
Your PatrolBot comes fully-assembled, battery pack fully-charged, and ready for out-of-the-box
operation. You may need to attach some accessories that were shipped separately or detached
for safety.
JoyDrive Only Mode
JoyDrive Only mode lets you quickly move the robot to its destination without waiting for all
its components (such as onboard computer, sensors, etc.) to start up. This can be used to drive
it from the shipping dock to its automated charge station or a demonstration site.
WARNING: The PatrolBot does not avoid anything when in JoyDrive Only
mode, so YOU are completely responsible for its safe operation.
NOTE: The following procedure must start with the robot powered off.
1. Plug the joystick into its port inside the right power-I/O bay.
2. Disengage both robot E-stop buttons (red locking pushbuttons) by turning clockwise.
3. Hold the joystick with handle and cable facing you.
4. Press and hold the joystick’s green GO button.
5. While continuing to hold the joystick GO button, press and hold the robot PWR ON
button for three seconds, then release.
6. Continue to hold the joystick GO button for about five seconds or until the ‘JoyDrive
only…’ message appears on the LCD.
7. Release the joystick GO button.
8. To drive the robot, press and hold the GO button while moving the joystick handle
forward/back to translate, and left/right to rotate the robot.
Note that only the robot microcontroller and LCD start up in this mode. You will have to PWR
OFF and then PWR ON again to start up normally including onboard computer, software and
devices. Also note that, if you use JoyDrive Only mode to drive the robot away from where it
has been operating normally with ARNL localization, and restart it there, it will become lost
and you will have to relocalize it.
Chapter 4: Getting Started
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 14 of 96
Figure 4-1. Joystick and GO Button; and LCD display showing JoyDrive only mode.
Installing the Charging Station
The automated charging station can be used for either manual or automated charging of your
robot's batteries.
The charging station sits on the floor, but its back side needs to be against a wall. (This prevents
the station from moving when the robot docks.)
Clearance
Locate the charging station near a 110 or 240 VAC outlet with 1 - 2 meters of clear space in front
to ease the robot’s maneuvers, especially automated ones, onto the station.
Power
Install the power cord and switch the automated charging unit to ON. The power switch is just
above the power cord. The green power LED indicator should light.
The charging station requires 110-240 VAC, 50-60 Hz, 8 A.
Its maximum ambient operating temperature is 40° C (104° F).
Attach Wireless Ethernet Antennas
Carefully screw both Wifi antennas to the SMA screw connectors on each side of the robot near
the I/O wells. Antennas must be attached before powering on the robot.
Install Accessories
Some external accessories, such as cameras, manipulator arm, etc. may have been shipped
unattached to the robot. Some may have been shipped in separate packaging. Carefully
unpack and install these accessories. Refer to accessory documentation, as well as Chapter 5:
Connectivity in this manual for more information. Contact MobileRobots support if you have
any questions.
Chapter 4: Getting Started
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 15 of 96
Powering On The Onboard Computer
To power on the onboard computer, push the Scroll rocker switch in the right hand control
panel well next to the LCD display until you reach the PC Power OFF screen. You will need to
press Scroll several times (either up or down). When the screen displays PC Power OFF, open
the left hand control panel well and press the Select switch to turn the onboard computer on.
When the power has been switched on to the onboard computer, the LCD panel will display
PC Power ON and a C will appear in the upper display line. You can configure the robot to
turn the computer and other devices on at startup. See Chapter 9 for configuration details.
To turn off the onboard computer, first shut down the operating system. Then either use the
LCD panel to switch PC power off, or simply turn the robot off using the red PWR OFF button.
More details on robot operation are given in Chapter 6.
Chapter 4: Getting Started
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 16 of 96
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 17 of 96
Chapter 5: Connectivity
5.1 Available Power Connections
The following power connections are available in the right power I/O bay:
5 VDC x 1 (switched)
12 VDC x 3 (switched)
24 VDC x 1 (switched)
20 - 30 VDC x 2 (switched)
20 - 30 VDC E-Stop-controlled x 1
Each supply has an associated LED which, when lit, indicates that the port is actively powered.
Each receptacle comes with mating connectors that mask out1 any power ports which have
been allocated to other devices inside the PatrolBot. Accordingly, for safe operation, use those
accompanying connectors to attach your own devices.
Table 5-1. Power Port Limits
Nominal Voltage
Port # Actual Voltage
Maximum Current
Normal Shutoff Response Time
5 V 6 5.0 ± 0.2 VDC 2 A 29 ms
12 V 7 12.0 ± 0.5 VDC
2 A 29 ms
12 V 8 12.0 ± 0.5
VDC
2 A 29 ms
12 V 10 12.0 ± 0.5 VDC
2 A 29 ms
20 - 30 V 12 25 ± 5 VDC 1.125 A 21 ms
20 - 30 V 13 25 ± 5 VDC 4.5 A 21 ms
24 V 14 24 ± 1 VDC 4 A 21 ms
20 - 30 V E−Stop 25 ± 5 VDC 7.5 A 21 ms
Port #9 is visible outside, but epoxy-filled and not user-available.
NOTE: Port # corresponds to the software-switched port numbers you can address.
The three 12 VDC ports are limited to a total of 5 A.
The E-Stop 20 - 30 VDC supply automatically gets disconnected when the E-Stop button is
pressed, just like motor power.
1The ports that are masked out are actually filled with epoxy to prevent them from being used.
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 18 of 96
The state of switched power connections are software controlled. See Chapter 9 for details.
5.2 Available I/O Connections
These connections are available for use with Adept- and user-supplied accessories.
Figure 5-2. Left I/O Bay Figure 5-1. Right Power-I/O Bay
Right Power I/O Bay
Ethernet port ETH 1, wired crossover
Optional Firewire connector
VGA Monitor connector for onboard computer
USB connector for onboard computer
Optional analog video connector for camera
Left I/O Bay
Digital Inputs x 8 (connected to onboard computer)
Inverse logic: 0 V = logical TRUE (ON); 5 V = logical FALSE (OFF)
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 19 of 96
Digital Outputs x 8 (connected to onboard computer)
Inverse logic: 0 V = logical TRUE (ON); 5 V = logical FALSE (OFF)
Analog Input x 6 (connected to onboard computer)
Auxiliary Bumpers x 8 – labeled AUX BUMP
Serial ports x 2 (RS-232) - COM2 and COM4
PS/2 Keyboard and Mouse connectors – labeled KB and MOUSE
CPU Power LED - labeled SBC PWR
IDE LED - labeled HD
Onboard computer hard reset button – labeled SBC RESET
Connector for optional pan/tilt/zoom camera control
RCA audio connectors (optional)
The 10-bit analog ports are configured for 0 - 5 VDC analog, corresponding to 0 - 1023 data,
respectively.
The digital output ports may source only up to 24 mA each at 5 VDC.
The AUX BUMP ports are intended for use as payload bumpers. They are digital inputs,
normally pulled high, that can be toggled with GND. Their positions, relative to the robot's
body, can be configured in the ARIA *.p file. (See below for details)
Left User Control Well
POWER OFF button
SELECT controls for the LCD
Maintenance Serial Port
Ethernet Port (ETH 0)
Right User Control Well
EXTERNAL CHARGER port
POWER ON button
SCROLL buttons, for controlling the LCD
Joystick port
Lockable user well doors are available as an option. Contact Adept for information.
5.3 I/O Connections
Power port specifications are given in Power Port Limits on page 17.
Table 5-2. I/O Connections
Description Specification
Ports
MAINTAINENCE
Serial
Serial port for external connection to robot microcontroller
VGA/Monitor VGA console monitor for onboard computer
USB Onboard computer USB host, use with any USB device or
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 20 of 96
Description Specification
hub
Video Analog video signal from camera to onboard computer
Keyboard, Mouse PS/2 keyboard and mouse to onboard computer
Eth1, Eth2 wired RJ-45 (cross-over) to onboard computer
Firewire Optional; onboard computer IEEE-1394 interface
COM2, COM4 RS-232 Serial, onboard computer COM2 and COM4
Camera Control For P/T/Z camera, RS-232 Serial to microcontroller
auxiliary serial port.
Audio Not connected by default, may be connected to onboard
computer. (contact support)
Analog In 6 x 10-bit @ 0-5 VDC input (0-1024 data). Connected to
Versalogic Cobra onboard computer.
Digital Input 8 digital input (normally high)
0V=logical 1, 5V=logical 0. Connected to Versalogic Cobra
onboard computer.
Digital Output 8 output (24 mA @ 5 VDC; normally OFF). Connected to
Versalogic Cobra onboard computer.
Aux Bump 8 digital input (normally high) that trigger extra uARCS
bumper signals.
Joystick Inductive-drive joystick input to microcontroller
Manual Charge port
Charge port for external power supply
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 21 of 96
5.4 I/O Pinouts
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
AUX
5 VDC
PHOENIX
1755736
PHOENIX
1873058
1 PORT6_PWR Right Bay
2 PORT6_RTN
AUX
12 VDC
PHOENIX
1881613
PHOENIX
1881383
1 PORT7_PWR Right Bay
2 PORT7_RTN
3 PORT8_PWR
4 PORT8_RTN
5 PORT9_PWR
6 PORT9_RTN
7 PORT10_PWR
8 PORT10_RTN
AUX
24 VDC &
20-30 VDC
PHOENIX
1755794
PHOENIX
1873113
1 24 V PORT14_PWR Right Bay
2 PORT14_RTN
3 20-30 V PORT13_PWR
4 PORT13_RTN
5 20-30 V PORT12_PWR
6 PORT12_RTN
7 20-30 V E-Stop_PWR
8 ESRB_ARM_RTN
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Digital I/O
#1
Digital I/O
#2
WEIDMULLER
1729000000
WEIDMULLER
1727690000
1 DIO_0 Left I/O Bay
2 DIO_1
3 DIO_2
4 DIO_3
5 DIO_4
6 DIO_5
7 DIO_6
8 DIO_7
9 -
16
GND
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 22 of 96
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Analog
Input
WEIDMULLER
1728980000
WEIDMULLER
1727670000
1 AN0 Left I/O Bay
2 AN1
3 AN2
4 AN3
5 AN4
6 AN5
7 -
12
GND_Analog
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Bumpers WEIDMULLER
1728970000
WEIDMULLER
1727660000
1 GND Left I/O Bay
2 IR1
3 IR3
4 IR5
5 IR7
6 GND
7 IR0
8 IR2
9 IR4
10 IR6
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
ETH 1
ETH 0
L-COM
ECF504-SC6
RJ-45 1 Transmit
+
Right Bay
Left User Well 2 Transmit
3 Receive +
4 -
5
N/C
6 Receive
7 -
8
N/C
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 23 of 96
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
COM 2 AMP
5747871-4
DB-9 Female
Pin
1 DCD Left I/O Bay
2 RXD
3 TXD
4 DTR
5 GND
6 DSR
7 RTS
8 CTS
9 RI
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
COM 4 AMP
5747871-4
DB-9
Female Pin
1 DCD Left I/O Bay
2 RXD/TX+
3 TXD
4 DTR/RXD-(485-)
5 GND
6 DSR
7 RTS/TXD
8 CTS
9 RI/RXD+(485+)
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Charge
Port
Anderson
Power
Products
PP30
Anderson
Power
Products
PP30
Red +
Voltage
Right User Well
Black Ground
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Joystick Lumberg
B-81
8 Position DIN
Lumberg
0131 08-1
1 Ground Right User Well
2 X-Axis
3 N/C
4 Enable
Chapter 5: Connectivity
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 24 of 96
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
5 Goal
6 Gain/Speed
7 Y-Axis
8 +5 V
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
Maintenance
Port
DB-9
Female
DB-9
Male
1 N/C Left User Well
2 TX
3 RX
4 DTR
5 Ground
6 -
9
N/C
Connector
Name
Robot
Connector
Mating
Connector
Pin Function Location for
PATROLBOT
802.11
Antenna 1
SMA
Female
SMA
Male
1 Right I/O Bay
Shield
802.11
Antenna 2
SMA
Female
SMA
Male
1 Left I/O Bay
Shield
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 25 of 96
Chapter 6: Operation This chapter provides an overview of the operation of the PatrolBot.
Figure 6-1. Location of Parts on the PATROLBOT Robot
6.1 Operating Environment
The Adept MobileRobots Research PatrolBot is designed to operate in an environment that is
wheelchair accessible. Care must be taken to avoid:
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 26 of 96
glass doors/walls
pits without railings or low bumpers
floors with access panels removed
loose cables, hoses, etc.
large, highly-reflective objects
Floors must provide good traction, typical of good walking conditions.
Slopes 20% with up to a 10 kg payload
(requires a 50 cm transition area)
12% with up to a 25 kg payload
Step traversal up to 15 mm
Gap traversal up to 15 mm
Temperature 5° - 40° C (41° - 104° F)
Humidity 0 - 95%, non-condensing
The PatrolBot is not intended for use in hazardous environments (explosive gas, water, dust, oil
mist). It has an IP rating of IP-42.
6.3 Power and Charging
The PatrolBot comes with two 12 VDC sealed lead-acid batteries wired in series. Batteries are
sealed and safe, including for shipment by air.
Battery recharging is managed by the robot. With ample power, such as is provided by the
automated charging station or the power-supply accessory, all onboard systems function
continuously while the batteries recharge.
The interactive LCD, shows voltage for lead-acid batteries.
Run and recharge times will vary significantly depending on modes of operation (opportunity
charging, continuous motion, and so on) and accessory power consumption The typical run-to-
recharge ratio for lead-acid batteries is about 1:1.
Recharging the Batteries
During autonomous operation of PatrolBot, software using ARIA and/or ARNL may be used to
send the robot automatically to its automated charging station and dock.
Alternatively, to manually recharge its batteries, attach the accessory power supply at the
EXTERNAL CHARGER port or position the robot on its automated charging station and
manually engage the recharging system with the button on the top of the dock.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 27 of 96
You should maintain your PatrolBot’s batteries in a charged state above 22.7 VDC.
Recharge the batteries when they fall below 24, even though the robot may continue
to operate below that. The LCD will flash a warning when the voltage falls below 24
VDC. The system will be automatically shut off if the voltage falls below a critical level to avoid
deep-discharge damage. Adept recommends that you fully recharge the batteries at least once
every two to three days.
Automated Charging Station
The automated charging station (also called a “dock” or “docking station”) is both a manual
and an automated means for recharging your PatrolBot batteries.
To manually operate the automated charging station, push the PatrolBot (PWR OFF or engage
E-STOP) so that the robot slides onto the charge plates under the station’s contact shield. To
engage the charger, press and hold down the station’s yellow manual-charge button on top of
the unit. This applies power to the station’s charge plates. Release the manual charge button
after three seconds. If the PatrolBot’s onboard charging system gets power from the plates, it
activates an electromagnet, which maintains the station’s power supply to the robot. If the
robot does not activate its electromagnet, the charge station will shut off power. Reposition the
robot if the yellow charging-indicator LED does not stay lit, and retry.
Powering ON or OFF the robot, or connecting and disconnecting the robot with network and
onboard clients will not disturb the charging state. (Moving the robot will.) The station supplies
ample power for all onboard systems while charging its batteries, so you can continue
operating the PatrolBot, other than driving it, while charging.
To implement fully autonomous recharging, use the ARIA or ARNL software development kit.
Refer to the ARNL Reference Manual for information on using its docking modes to
autonomously navigate to and enter the dock.
PWR ON and PWR OFF
PWR ON and PWR OFF pushbuttons switch main power to the robot's onboard systems via
relays on the ESRB. Also on the ESRB, a relay provides motor-power switching that ensures
removal of power from the motors in an emergency.
PWR OFF removes power from all systems immediately except the charging hardware circuits.
The PWR ON pushbutton is also used to enable motor power after an E-Stop.
Power Distribution
A Power Distribution Board (PDB) provides conditioned 5, 12, and 24 VDC, and raw (battery)
20 - 30 VDC power to the robot’s and accessory electronics, including the onboard computer
and Laser Range Finder (LRF), all under software-switched control by the μARCS firmware.
To specify which accessories are powered on by default at startup, or to assign AUX power to
your own accessories, modify their related power flash parameters on the microcontroller. You
can also control power from a client connected with the μARCS microcontroller.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 28 of 96
6.4 Indicators and Manual Controls
Interactive LCD
Between the user wells is the interactive LCD. It is your window to the μARCS microcontroller.
Besides providing status messages, its top line has several indicators of systems-related states.
A spinning line segment in the middle indicates that the microcontroller is active. The robot’s
battery voltage or SOC appears on the right side of the display and flashes when the charge or
voltage is low. Also, power indicator characters appear when microcontroller-mediated power
is switched ON for the onboard computer (‘C’), LRF (‘L’), auxiliary 5 (‘<’), 12 (‘*’) and 24 (‘>’)
Volt ports.
An animated icon appears in the upper-left corner of the display when the drive motors are
engaged, such as when the robot is driving autonomously or being driven with a joystick. The
icon’s wheels appear to spin when the robot moves, in addition to the flashing blue-LED drive-
lamp indicators just below the top plate of the robot. An ‘S’ character replaces one or both
wheel characters depending on which side is stalled. Similarly, a ‘B’ indicates a bumper-related
stall (left is front), if the BumpStall behavior is enabled in flash (it is enabled by default).
An ‘E’ character appears and flashes when the robot’s E-Stop is engaged. And, finally, a ‘G’
character appears and flashes if the integrated gyro is disabled for some reason.
Symbol Meaning
Power C onboard computer power ON
L LRF power ON
< 5 VDC ON
* 12 VDC ON
> 24 VDC ON
Errors S Wheel(s) stalled
B Bumper(s) activated
E (flashing) E-Stop engaged
G (flashing) Gyro disabled
The Scroll and Select rocker switches located on each side of the provide a means for you to
check on additional systems status and to change some states manually. Press Scroll up or
down to scroll through the status messages and, if available, options to change their states.
Press the Select switch either up or down to change the system state, when given an option.
The display automatically reverts after five seconds of inactivity.
Some options only appear if the related flash parameter is set. For example, if you don’t assign
an option for a device on the auxiliary 5 V port, then the option won’t appear in the LCD
interactive display sequence.
E-Stop
When pressed, the red latching pushbutton at the rear of the robot immediately removes power
from the robot’s motors.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 29 of 96
To reset E-Stop:
1. Twist the E-Stop button until it pops up. Ensure both buttons have been released in
this way.
2. Then press the PWR ON button inside the right user well to re-enable power to the
motors.
Drive Lamps
Blue LEDs underneath the top section of the PatrolBot glow and flash just before the robot
begins to move and while it is in motion.
Joystick
Press and hold the green GO button to drive with the joystick.
Figure 6-2. Joystick GO Button
Use the joystick to drive the robot manually. The Joystick connection port is in the right power-
I/O bay. Hold down the GO button to drive. The cart icon appears on the LCD, if connected,
when driving.
NOTE: The Joystick handle should be facing you, not away from you.
Push the handle forward or back to make the robot move in that direction. Push the handle to
the side to make the robot rotate in that direction. Diagonal positions of the handle drive the
robot in an arc.
The PatrolBot slows to a stop when you release the GO button. To stop more quickly, continue
to hold the GO button down and pull or push the joystick handle to its limit in the opposite
direction of the robot’s travel.
The joystick’s GOAL button may be used by client software for any purpose. (When scanning
an environment with ARNL to make a map, it is used to record locations for goals in the map.)
Software Joystick Control
ARIA is able to request software joystick control mode. In this mode, the PatrolBot sends
joystick data to the software instead of directly driving the robot. Your software may use this
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 30 of 96
joystick data for any purpose, or apply ARIA’s limiter actions to perform guarded control of
the robot.
JoyDrive Only Mode
The robot can also start up in a special mode: JoyDrive Only. This mode allows the operator to
have full control of the robot. This is useful for maintenance, or for quickly moving the robot
from one location to another. To start JoyDrive Only mode, press and hold the green GO button
while powering on the system.
WARNING: You are in full control when driving in JoyDrive Only or Unsafe
Mode.
Figure 6-3. The LCD Screen for JoyDrive Only Mode
Maintenance Serial Port
The 9-pin DSUB serial connector inside the left user well is for external access to the
microcontroller, typically for μARCS flash maintenance. The port is shared, as are its functions,
by the onboard computer’s /dev/ttyS0 (COM1) connection with the microcontroller’s internal
HOST serial port. Use a common, pass-through serial cable from your PC to the robot's serial
connector.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 31 of 96
6.5 Onboard single-board computer (SBC)
An industrial single-board computer (SBC) is mounted internally to the robot. Either Debian
Linux or Windows Embedded have been preinstalled by MobileRobots, along with all
MobileRobots and accessory development libraries and required computer device drivers. The
computer’s COM1 RS-232 serial connection is used for software control of the robot.
Computer power is switched on and off via the interactive LCD screen (see Chapter 6, section
6.4). uARCS may also be configured to automatically turn computer power on at startup. See
chapter 9 for details on configuring uARCS parameters.
To access the computer for maintenance, you must remove the front of the robot. See Chapter
7, Section 7.4 for more information.
More technical information including a manual is available from the MobileRobots support
website: http://robots.mobilerobots.com/wiki/Onboard_Computers
Connectors
PS/2 keyboard and mouse connectors are available in the left I/O bay. Video monitor and USB
connectors are available in the right I/O bay. A USB hub may be used if more than one USB
connection is required. A connector for the primary ETH 0 ethernet interface is the left user
well. An additional connection for the secondary ETH 1 interface is in the right power I/O bay.
COM2 and COM4 RS-232 serial ports are available in the left I/O bay. (COM3 is used for
communication with the laser rangefinder.)
Logging In
The onboard computer operating system may be accessed by attaching keyboard, monitor and
mouse, or by remote connection over the network. If the onboard computer is running Linux,
several startup options are provided. The default option is a text-only mode. The X-Windows
graphical environment may be started from the text-only mode by running startx.
If the onboard computer is running Linux, you can log in as guest (normal unprivileged user)
or root (privileged administrative account). The default passwords are mobilerobots. Please
change these passwords. Passwords are changed in Linux using the passwd command. New
users can be added using the adduser command or the “Users and Groups” utility in the
“Administration” section of the “System” menu.
If the onboard computer is running Linux, a remote login connection can be made using ssh
(Secure Shell). Files may be copied using sftp (Secure FTP) or scp (Secure Copy).
If the onboard computer is running Windows, a remote connection can be made using Remote
Desktop.
Networking
Networking is preconfigured for a Class-C network (netmask for all ports 255.255.255.0).
Ethernet port ETH 0 is set to IP address 10.0.125.32. The wireless interface comes set with IP
10.0.126.32 with an access-point based (“managed”) network SSID of “Wireless Network”,
unsecured.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 32 of 96
Please consult with your network systems administrator for the appropriate settings for these
network interfaces.
More information about changing operating system networking settings is available from the
MobileRobots support website:
http://robots.mobilerobots.com/wiki/Onboard_Computer_Network_Configuration
6.6 Sonar
The PatrolBot’s sonar are for obstacle sensing while backing up. The maximum possible range
is up to 5 m (16 ft.), though the typical accurate range is only up to 3 m (10 ft.).
Details of sonar operation can be changed using uARCScf (see chapter 9) via the RearSonar
parameter. (FrontSonar is not used on PatrolBot).
6.7 Laser Range Finder
The onboard SICK LMS-200 Laser Range Finder (LRF) is a very precise scanning sensor. The
LRF normally provides 181 readings in a 180 degree field of view, with an accuracy of ±18 mm
out to a typical maximum range of 16 m (52.5 ft.). Various laser operating parameters may be
changed during use with ARIA. The LRF operates in a single plane, positioned at about 30 cm
(12 in.) above the floor. It is mounted in the center of the robot.
NOTE: On Research PatrolBot, laser power is additionally controlled by serial
port state; the laser will automatically switch off if software closes its serial
port connection to the laser. (This forces configuration reset of the laser
between uses, and conserves battery power when no software is using it.)
In most environments, the sensor will provide highly-accurate data, but glass, mirrors, and
other highly-reflective objects cannot be reliably detected by the laser. Caution must be
exercised when operating the robot in areas that have these types of objects. If the robot will
need to drive in close proximity of these objects, then it is recommended to use a combination
of markings on the objects, such as tape or painted strips, and also use forbidden sectors in the
map, so that the robot knows to plan paths safely around these objects.
On optional URG-04LX laser rangefinder is also available mounted beneath the front bumpers
of the robot for additional ground-level sensing.
6.8 User Digital and Analog I/O
The digital and analog I/O ports in the top PatrolBot I/O wells are connected to the general
purpose digital and analog I/O interface on the onboard computer. The I/O states may be read
and set via ARIA’s ArVersalogicIO class, if the amrio Linux operating system kernel driver
module is loaded.
In PatrolBots shipped after January 2010, Linux has been configured to automatically load the
amrio driver module at boot. The amrio Linux kernel driver module may be downloaded at
http://robots.mobilerobots.com if you need to reinstall it.
Chapter 6: Operation
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 33 of 96
More information about the computer’s digital and analog I/O interface is available in the
Versalogic Cobra EBX-12 Manual, available for download from http://robots.mobilerobots.com.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 34 of 96
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 35 of 96
Chapter 7: Maintenance This chapter covers periodic maintenance and user-serviceable parts replacement.
7.1 Periodic Maintenance Schedule
The following tables give a summary cleaning procedures and parts replacement for heavy duty
operation of the PatrolBot, which includes continuous driving operation of the robot every day, including
periodic use of the automatic charging (docking) station. For light duty, less frequent use, you may
perform this maintenance at reduced frequency or only as needed.
The drive motors and gearbox are sealed and permanently lubricated, so they do not require periodic
maintenance.
Cleaning and Inspection Schedule:
Table 7-1. Cleaning
Item Period, Heavy Duty Use
Period, Light Duty Use
Reference
Clean charging station contacts
3-6 months 12 months Charging Station Contacts on page 37
Clean axles and tires
As needed As needed Tires on page 36
Clean laser (LRF) lens -
wipe clean
6 months/ as needed
As needed Laser Range Finder on page 36
Clean fan grills/filters
3 months/as needed
3 months/as needed
Robot Fan Grills, Battery Vents on page 37
Clean battery
vent holes
3 months/as
needed
3 months/as
needed
Robot Fan Grills, Battery Vents on page 37
Parts Replacement Schedule:
Table 7-2. Parts Replacement
Item Period, Heavy Duty
Use
Period, Light Duty Use
Reference
Batteries 3 – 4 months As needed Batteries on page 37.
Fuses As needed As needed Fuse Summary on page 44
Charging As needed As needed Robot Charging Contacts on page 41
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 36 of 96
Item Period,
Heavy Duty
Use
Period, Light
Duty Use
Reference
Contacts
Bumper Panel As needed As needed Replacing a Bumper Panel on page 49
Charging Station Contacts
As needed As needed Charging Station Contact Board on page 42
NOTE: The frequency of these procedures will depend on the particular system, its operating
environment, and amount of usage. Use the intervals in this section as guidelines and modify the
schedule as needed. The battery replacement estimate of 3-4 months assumes continuous daily
operation of the robot. Occasional usage will only require battery replacement as needed (when their
run time begins to be noticeably reduced.)
DANGER: Lockout and tagout power before servicing.
DANGER: Only skilled or instructed persons, as defined in Qualification of Personnel on
page 8, should perform the procedures and replacement of parts covered in this section.
The access covers on the robot and charging station are not interlocked – turn off and
disconnect power if covers are to be removed.
7.2 Cleaning
The frequency of the following cleaning procedures is dependent on the conditions in which the robot
operates. Operating in an environment with a lot of dust or dirt will require more frequent cleaning.
Tires
Occasionally clean the tires with a mild soapy solution. Remove any dirt or debris that may accumulate
on the tires, because these can degrade the robot’s performance.
This applies to both the drive wheels and to the casters.
Axles
Keep the axles free of carpet, hair, string, or anything that may wrap around and bind up the robot’s
drive.
Laser Range Finder
Occasionally clean the lens of the laser range finder. Use only alcohol-based, non-abrasive cleaners, and
wipe thoroughly.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 37 of 96
Robot Fan Grills, Battery Vents
Fans grills must be kept clear. This is best done by blowing compressed air directly behind the bumpers.
The compressed air should be blown down the top of the grills, toward the bottom of the robot.
On the rear bumper panels, fans are located behind the two panels that do not have foam at their top
edges.
The vent holes on the bottom of the battery compartment should be kept clear. Refer to Figure 7-2.
Charging Station Fan Filters
There are two fans on the charging station. The cover for each is held in place with two tabs. Pull up on
the tabs, and the square grill will come off. The foam filter is immediately under the grill. You can use
either compressed air to blow the foam filters clean, or you can wash them in soap and water. If you
choose to wash them, ensure that they are completely dry before reinstalling.
Charging Station Contacts
The two charging station contacts occasionally need to be cleaned. The suggested interval is 3 – 6 months,
depending on frequency of charging.
WARNING: Unplug power from the charging station before starting.
1. Slide the contact shield of the charging station back, to expose the contact board.
2. Clean the contacts with denatured alcohol. The contacts will be shiny when clean.
7.3 Replacing Periodic Parts
There is a spare parts list at the end of this chapter.
Batteries
Lead-acid Battery Packs
Lead-acid batteries last longest when kept fully-charged. Severe discharge is harmful to the batteries. Do
not operate the robot if the combined voltage falls below 23 volts. (The robot is programmed to shut
down at 22.7 volts). Adept recommends battery replacement after approximately 500 charge cycles,
which is typically 3 months of continuous all-day full-time use.
Keep your robot on the charging station when it is not in use.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 38 of 96
Figure 7-2. Bottom of Base, showing Battery Pack Cover
Time to Perform Procedure
10 minutes
Frequency of Procedure
Lead-acid battery: 500 cycles (approximately 3 months of all-day continuous full-time use)
Dispose of the battery according to all local and national environmental regulations regarding
electronic components.
DANGER: Follow appropriate ESD (electro-static discharge) procedures during the
removal/replacement phases.
1. Turn off the robot.
2. Tip the robot onto its front bumper, exposing the battery compartment cover.
3. Remove the six Phillips-head screws with a #2 Phillips screwdriver. Refer to Figure 7-2.
4. Carefully slide the battery pack out of the body.
The battery pack is attached to the battery cover, so the cover will not come off by itself.
5. Disconnect the power and temperature-sensor cables from the old battery pack.
6. Remove the old battery pack assembly.
7. Attach the power and temperature-sensor connectors of the new battery.
8. Lift the new battery pack into the robot body and carefully slide it in.
9. Secure the assembly with the accompanying screws.
The battery pack may need to be maneuvered past the bolts inside the battery compartment. It will line
up best if you start the two lower screws first.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 39 of 96
Figure 7-3. Removing the Battery Pack and Cover
7.4 Replacing Non-Periodic Parts
The following parts are replaced on an as-needed basis.
There is a spare parts table at the end of this chapter.
Removing Robot Front Cover
Removing the front cover provides access to the optional onboard computer, and fuses for all 5 V power
(micro-controller and I/O). It also gives you access to the individual front panels, should they need to be
replaced.
Support the chassis such that you have enough room under it to remove the front cover while the robot
remains in an upright position.
One means of accomplishing this is with a support T consisting of a 13.5 in. 4x4 screwed to an 18 in. 2x4
with three 3 in. deck screws.
1. Remove the four socket-head cap screws from the bottom edge of the front cover, using a 3 mm
Allen wrench.
2. Pull the bottom edge of the front cover forward, away from the robot chassis.
3. With the bottom edge still pulled forward, lift the front cover straight up.
Support the front cover to protect the cables still connected.
Be careful around the onboard computer, which is now exposed.
4. Disconnect the fan power cable.
5. Disconnect the low obstacle detection power cable, if present.
6. Disconnect the low obstacle detection serial cable, if present.
7. Disconnect the bumper cable.
The front cover is removal is now complete.
On the left side of the chassis, there are two fuses for the onboard computer, and a third fuse for all 5 V
for the robot. This includes the microcontroller and I/O.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 40 of 96
Removing Robot Rear Cover
Removing the rear cover provides access to the micro-controller, the back of the power distribution bus
(PDB), main power relay bus (ESRB), both rear exhaust fans, and the gyroscope. It also gives you access
to the individual rear panels, should they need to be replaced.
Support the chassis such that you have enough room under it to remove the rear cover screws and the
battery cover screws, while the robot remains in an upright position.
One means of accomplishing this is with a support T consisting of a 13.5 in. 4x4 screwed to an 18 in. 2x4
with three 3 in. deck screws.
If you do not use a support T, you should support the battery pack with one M3 x 5 screw in the middle
top hole of the battery pack cover.
1. Remove the four M4 screws from the bottom edge of the rear cover, using a 3 mm Allen
wrench.
2. Remove the four outer (closest to the outside surface of the robot) #2 Phillips screws from the
battery cover.
3. Remove the cable cover, using a 2 mm Allen wrench. Refer to the following figure. Save the
screws for reassembly.
Figure 7-4. Unscrewing the Cable Cover
Push the cable cover in towards the center of the robot.
Slide the inner edge of the cable cover back, so it slides free. The inner edge of the cable
cover has a lip to keep it in place.
The rear cover of the robot in now held in place with a lip at the top edge.
4. Lift the rear cover at each side, and slide it back and off the chassis.
5. Hang the rear cover on the bottom edge of the chassis.
6. Remove the bumper wire connector from the micro-controller board (hemostats are useful for
this). This is on the left side of the robot.
7. Remove the fan cable from the ESRB PCB (right side of robot).
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 41 of 96
Robot Charging Contacts
Time to Perform Procedure: 15 minutes
This procedure covers how to replace a charging contact on the robot. There are two charging contacts,
and their replacement procedure is the same.
1. Remove the three M4 screws holding in the contact. Use a 2.5 mm Allen wrench. Save the screws
for reassembly. Refer to the following figure.
Figure 7-5. Removing the Contact Screw
2. Slide the Allen wrench into the slot on the side of the contact facing the other contact. Pry the
contact down and out.
3. Work the wire and connection out of the robot body.
4. Carefully cut the heat shrink tubing off of the connection with small diagonal cutters.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 42 of 96
Figure 7-6. Cutting the Heatshrink Tubing
5. Pull the connection apart, being careful that the wire does not slip back into the robot body.
6. Connect the connector of the replacement contact. Ensure that the heatshrink tubing (which comes
as a part of the replacement contact), is over the wire.
7. Slide the heatshrink tubing over the connection.
8. Heat the heatshrink tubing with an electric heat gun. Take care that you don’t apply much heat to
the foam behind the bumper panels.
9. Tuck the connector and wire back into the robot body.
10. Secure the contact to the robot, using the three M4 screws that were removed when disassembling.
Charging Station Contact Board Replacement
Time to Perform Procedure: 15 minutes
This procedure covers how to replace the contact board on the charging station of an PatrolBot.
Removing Contact Board
WARNING: Unplug power from the charging station before starting.
1. Remove AC power from the charging station.
2. Slide back the contact shield, and use masking tape at one side to keep it retracted.
3. Unscrew the M3 x 8 mm screw from the divider that separates the two contacts.
Retain this screw for reassembly.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 43 of 96
Figure 7-7. Moving the Contact Divider
4. Swing the divider clear of the contact board. See the previous figure.
5. Remove the eight M3 x 6 mm screws that hold down the contact board.
Retain these screws for reassembly.
6. Lift the board out of the charging station and turn it upside-down.
7. Disconnect the power wire from the contact board.
8. Disconnect the Relay and Power connector (5-pin).
9. Disconnect the Fan connector (4-pin).
10. Disconnect the Switches and LEDs connector (8-pin).
11. Remove the ground wire.
Using a 2.5 mm Allen wrench and 7 mm box wrench or socket, remove the ground nut, bolt, and
washer.
Retain these parts for reassembly.
Installing Contact Board
1. Replace the ground wire, using a 2.5 mm Allen wrench and 7 mm box wrench or socket, to install
the ground nut, bolt, and washer.
Ensure that this wire comes through the center hole in the charging station.
2. Reconnect the Switches and LEDs 8-pin connector.
Ensure that this wire comes through the right-most hole in the station.
3. Reconnect the 5-pin Relay and Power connector.
Ensure that this wire comes through the left-most hole in the station.
4. Reconnect the 4-pin Fan connector.
Ensure that this wire comes through the left-most hole in the station.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 44 of 96
5. Reconnect the main power line.
Ensure that the red wire matches the connecting red wire, and that this wire comes through the
center hole in the station.
6. Reinstall the contact board, ensuring that wires are not pinched, and the center slide under the
board is clear of wires.
7. Reinstall the center divider, using the M3 x 8 mm screw that you removed earlier.
8. Reinstall the eight M3 x 6 mm screws, removed earlier, to hold down the contact board.
9. Remove the masking tape used to hold the contact shield back.
Testing Charging Station
1. Plug in the charging station’s AC power. The green power light should come on. If not, make sure
the charging station is turned on.
2. Press and hold the yellow button on the top of the charging station. The yellow light should come
on, and the station should make an audible click. The light will go out when you release this
button if no robot is attached.
3. Attach a robot to the charging station.
4. Press the yellow button. The yellow light should come on and stay on.
Fuse Summary
The following table lists the location, use, type, and rating of fuses on the PATROLBOT.
Protects Amps Location Fuse Type Number of
Fuses
Charging Station 8 (250 V) Above charging station power switch
Ceramic cylinder
2
onboard computer 8 (250 V) Behind front cover In-line 2
5 V (onboard computer, microcontroller, I/O)
7.5 Behind front cover Mini ATO 1
Left Drive Motor 7.5 R. side, battery
compartment
Mini ATO 2
Right Drive Motor 7.5 R. side, battery compartment
Mini ATO 2
E-Stop power through I/O port 7.5 R. side, battery compartment
Mini ATO 1
Charging circuit 10 R. side, battery
compartment
Mini ATO 1
12 V power (Laser, I/O)
7.5 Behind rear cover Mini ATO 1
24 V power 7.5 Behind rear cover Mini ATO 1
Lead-acid Battery Pack 30 Between batteries Mini ATO 1
Mini-ATO type fuses are commonly used in automobiles, and can be found at most hardware and auto-
supply stores.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 45 of 96
Charging Station Power Switch Fuse Replacement
Time to Perform Procedure: 10 minutes
These are the only fuses on the charging station. They are located just above the power switch.
Symptoms: When switched on, the green power light does not come on. (Verify that the unit is plugged
into AC power.)
WARNING: Unplug power from the charging station before starting.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 46 of 96
1. Use a small flat-bladed screwdriver to pry out the top edge of the black cover immediately above
the power switch.
The cover will flip down and open, revealing the red fuse holder. Refer to the following
illustration.
Figure 7-8. Opening the Charging Station Switch Cover
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 47 of 96
2. Use a small flat-bladed screwdriver to pry out the red fuse holder.
There are two fuses in the fuse holder – one on each side.
Figure 7-9. Removing the Charging Station Fuse Holder
3. Remove and replace the faulty fuse.
A good fuse will have a resistance of < 1 Ohm. If the resistance across the two ends of the fuse if
higher than this, replace it.
Note the location of the fuses in the fuse holder. They do not span both clips, as might be expected.
When installed, the fuses need to be as far towards the center of the charging station as possible.
Refer to the following illustration.
Figure 7-10. Fuse in Fuse Holder
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 48 of 96
4. Insert the fuse holder into the charging station chassis, above the power switch.
5. Snap the fuse cover back into place.
Fuses Behind Front Cover
Time to Perform Procedure: 10 minutes
In the cutout on the left side of the chassis, behind the front cover, there are two fuses for the onboard
computer and another fuse for all 5 V power to the robot, which includes power for the onboard
computer, microcontroller, and I/O.
The two onboard computer fuses are in-line, on wires in fuse cases. The 5 V fuse is board-mounted.
To access these fuses:
1. Remove the Front Cover.
2. For the onboard computer fuses, open the fuse shell, and remove the fuse. For the 5 V fuse, remove
the fuse from the PC board.
3. Replace the fuse with a new fuse.
4. Close the fuse shell (for the onboard computer fuses).
5. Reinstall the Front Cover.
Fuses Behind Rear Cover
Time to Perform Procedure: 10 minutes
On the right side of the robot, to the right of the ESRB board, are the 12 and 24 V fuses. These protect any
regulated power, including power to the laser and I/O power.
To access these fuses:
1. Remove the Rear Cover.
2. Remove the fuse from the board.
The fuse puller in the battery compartment can be accessed from the top after the rear cover is
removed.
3. Replace the fuse with a new fuse.
4. Reinstall the Rear Cover.
Fuses in Battery Compartment
Time to Perform Procedure: 10 minutes
A fuse puller is mounted in the left rear of the battery compartment.
Inside the rear-most cavity on the right side of the compartment are six fuses.
The top four are 7.5 A mini ATO fuses. Two protect each drive motor.
The last fuse in that compartment is also a 7.5 A mini ATO fuse. It protects the E-Stop power that is
provided through the I/O port.
For lead-acid batteries only: the other cavity on the right side of the compartment holds a 10 A
mini ATO, which protects the charging circuit.
To replace any of these fuses:
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 49 of 96
1. Remove the battery pack. See Batteries on page 37.
2. Replace any burned-out fuses. See Fuse Summary on page 44
3. Re-install the battery pack. See Batteries.
Fuse on Battery
Time to Perform Procedure: 10 minutes
For lead-acid batteries, the wire between the two batteries contains a 30 Amp ATO fuse.
Replacing a Bumper Panel
Time to Perform Procedure: 15 minutes
Bumper panels can occasionally become dented. If the dent is deep enough, it can keep the bumper panel
switch in a depressed state. At this point, you must replace the panel.
To verify that the panel needs replacement, press on the panel. You should be able to hear the switch
actuate. If the switch doesn’t actuate, replace the panel.
1. Remove the front or back cover.
2. Unscrew the four M3 x 6 mm screws in the damaged panel, using a 2 mm Allen wrench.
3. Lift off the panel.
4. Reach under the cover, and press the panel support frame into position.
Studs in the two outer rear bumper panels are not attached to a frame, so they have to be pressed
through the panel individually.
The four internally-threaded studs should be sticking through the cover. Refer to the following
figure.
Figure 7-12. Bumper Panel Removed
5. Place the new bumper panel over the studs, and attach it with four M3 screws. The circular foam
on the inside of the new bumper panel must go over the bumper panel switch, and the four studs
go through the holes in the foam.
Table of Contents
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 50 of 96
Table 7-3. Spare Parts List
Description Part Number
Sealed Lead-acid Battery Pack 10702-000
Bumper - Full
Bumper - Right
10290-000
Bumper - Left
10291-000
Joystick 10809-000 10292-000
Tire 10477-000
Caster 10287-000
Charging Station Filter 10167-000
Charging Station 10126-000
Charging Station Contact, Left Side (Black wire) - Negative 10601-000
Charging Station Contact, Right Side (Orange wire) - Positive 10602-000
Contact [email protected] to verify and order these or any other parts for your robot. Include
your robot’s serial number in your email.
Chapter 8: Technical Specifications
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 51 of 96
Chapter 8: Technical Specifications
8.1 Dimension Drawings
Figure 8-1. PatrolBot Top and Side Dimensions
Chapter 8: Technical Specifications
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 52 of 96
See also Maintenance, for a parts-location figure.
Figure 8-2. Charging Station Dimensions
Chapter 8: Technical Specifications
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 53 of 96
Figure 8-3. Charging Station Details
Refer to Connectivity on page 17 for drawings of the I/O and Power Bay connections.
8.2 Robot Specifications
Description Specification
Physical
Length 589 mm (23.2 in.)
Width 483 mm (19.0 in.)
Height (body) 378 mm (14.9 in.)
Body clearance 51 mm (2.0 in.)
Weight 45 kg (99 lb.) with lead-acid batteries
Payload – level surface 40 kg (88 lb.)
Construction/Rating
Body Aluminum
Chassis 1.6 mm (0.06 in.) aluminum
Assembly Allen hex screws (metric)
IP Rating IP-42
Chapter 8: Technical Specifications
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 54 of 96
Description Specification
Batteries
Battery 2x12 V lead-
acid
Run time 1-3 hours, approx. 13.6 kg (30 lbs.)
Recharge ratio 1:1
Performance
Drive wheels 2 grey non-marking foam-filled rubber, with 4 casters
Wheel diameter 200 x 50 mm (7.9 in. nominal)
Steering Differential
Gear ratio 28.9:1
Pushing force 22 kg (48.5 lb.)
Swing radius 290 mm (11.4 in.)
Turn radius 0 mm
Translate speed max 1800 mm/sec (67 in./sec)
Rotational speed max 300 degrees/sec
Traversable step max 15 mm (0.6 in.)
Traversable gap max 15 mm (0.6 in.)
Climb grade max 20% up to 10 kg (22 lb.) - requires 50 cm (19.7 in.)
transition area
12% up to 25 kg (55 lb.)
Traversable terrain All wheelchair accessible
Sensors
Laser Range Finder 1 at front of robot
Sonar 4 at rear of robot
Position encoders 2 x 1024 quadrature (one each wheel)
Analog gyroscope 320 degree/sec max rotation
Microcontroller
firmware
Adept µARCS
Description Specification
Controls, Ports and Indicators
Motion LEDs flash when in motion
Maintenance Serial and Ethernet ports for external connection with
microcontroller. Ethernet port wired RJ-45 (cross-over)
Applications Ethernet port for applications; wired RJ-45 (cross-over)
Single Board Computer
Software
Debian Linux or Windows Embedded; Pioneer Software
Development Kit including ARIA and ARNL libraries
Communications 1 802.11 a/b/g/Auto wireless
RS-232 2
Chapter 8: Technical Specifications
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 55 of 96
Description Specification
Analog 6 x 10-bit @ 0-5 VDC input (0-1024 data)
Digital1
8 digital input (normally high)
8 output (24 mA @ 5 VDC; normally OFF)
Aux. bumpers 8 digital input (normally high)
The following controls apply only to the Closed Architecture variant
Interactive LCD 4 lines x 20 characters per line status display
SCROLL Rocker switch
SELECT Rocker switch
Power PWR ON green pushbutton
PWR OFF red pushbutton
ESTOP Lock-down pushbutton (twist to release)
The following controls apply only to the Open Architecture variant
ESTOP port Two-pin port for user-supplied E-Stop
LCD port Port for user-supplied or optional LCD
Power Control port (ON/OFF)
Port for supplied ON/OFF cable/buttons
Power Control cable Cable with ON and OFF buttons
1Inverse logic: 0 V = logical TRUE (ON); 5 V = logical FALSE (OFF)
Power port specifications are given in Chapter 5: Connectivity.
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 56 of 96
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 57 of 96
Chapter 9: Robot Programming and
Configuration All MobileRobots platforms use a client-server architecture. The robot’s microcontroller with embedded
μARCS (“micro-ARCS”) firmware manages all the low-level details of the mobile robot’s systems
including implementing velocity control of the robot platform, operating the motors and receiving
encoder data, integrating encoder and gyro data to determine an estimate for robot position, firing the
sonar and receiving sonar data, managing power to all components, and more. µARCS unifies the robot
into a single system with one interface channel through which software on the onboard computer can
communicate and control the robot.
ARIA
Software communicates with µARCS via a simple packet-based protocol (described below) via an RS-232
serial connection to the robot’s onboard computer, or to a laptop mounted on the robot, or bridged over a
wireless network to an offboard computer.
To support development of software, MobileRobots provides a C++ development library called ARIA
which implements this protocol, provides interfaces to many accessory devices, and also includes many
useful tools for robotics and cross-platform programming. It is also possible to use ARIA in Python and
Java via wrapper libraries. ARIA installation packages can be found on the CD included with your robot,
preinstalled on the onboard computer and the latest version as well as all future updates can be
downloaded at http://robots.mobilerobots.com/wiki/ARIA. ARIA can be used on Linux with the
standard GNU C++ compiler and linker (g++), or on Windows with Microsoft Visual C++ (either Visual
Studio 2003, 2008 or 2010). ARIA is provided as open-source software, under the terms of the GNU
General Public License (GPL). Full reference documentation is included.
In addition to the ARIA library, MobileRobots provides additional development libraries, including the
ArNetworking framework for network programming over TCP and UDP, speech synthesis and speech
recognition libraries, and the ARNL intelligent navigation libraries. Useful applications for robot
development also include the MobileSim simulator, and the MobileEyes user interface application. This
software can be found on the CD provided with the robot, and at
http://robots.mobilerobots.com/wiki/Software.
ARIA automatically handles all communication with the robot and many accessory devices, including
but not limited to laser rangefinders, the robot’s built in sonar and bumper sensors, pan/tilt cameras and
pan/tilt units, GPS receivers, and more. To communicate with the robot, ARIA sends and receives
messages with the robot’s embedded firmware. The rest of this chapter describes this protocol in detail.
When using ARIA or other development software, however, you do not need to implement this protocol
directly (though some of the information included below regarding the behavior of uARCS, as well as
how to configure its parameters, will be useful to the ARIA programmer.)
Client-Server Communication Packet Protocol
All MobileRobots mobile robot platforms implement the same Pioneer protocol and are fully compatible.
All versions of firmware are backwards-compatible with previous versions.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 58 of 96
The protocol is a bidirectional byte stream, in which sequences of byte packets represent individual
commands (when sent from client to µARCS server), or sets of robot state information (when sent from
µARCS to the client; these packets are sometimes referred to as Server Information Packets, or SIPs).
Packets consist of five main elements: a two-byte header, a one-byte count of the number of subsequent
packet bytes, a one-byte command or packet type identifier followed by packet data, and finally a two-
byte checksum.
General Packet Format
Component Bytes Value Description
header 2 0xFA, 0xFB Packet header; same for client and server
byte count 1 Number of command/argument bytes plus Checksum’s two
bytes, but not including Byte Count itself or the header bytes.
Maximum of 249.
Packet type or
command
identifier
1 0 - 255 Packet type or command identifier (see below for lists).
data n Command argument data (if any) or SIP data (depends on
type of SIP)
checksum 2 Packet integrity checksum
Packet data is divided into one or more value fields. The meaning and sequence of fields are specific to
each packet or command type. Each field has a data type which determines the size of that field (in
bytes). Integer data values contained in a packet may be signed and unsigned, and are 16-bit (2-byte)
integers, least-significant byte first. Single-byte values are one 8-bit byte. Strings may be either length-
prefixed or NULL terminated (depending on packet type).
Packet Checksum
Calculate the client-server packet Checksum by successively adding data byte pairs (most-significant 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.
NOTE: The checksum integer is 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.
// packetBuf is a character buffer char[] containing one data packet
// read from the robot.
int i;
unsigned char n;
int c = 0;
i = 3;
n = packetBuf[2] - 2; // data length
while (n > 1) {
c += ((unsigned char)packetBuf[i]<<8) | (unsigned char)packetBuf[i+1];
c = c & 0xffff;
n -= 2;
i += 2;
}
if (n > 0)
c = c ^ (int)((unsigned char) packetBuf[i]);
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 59 of 96
ARIA automatically verifies packet checksums when receiving and parsing robot packets from µARCS,
and automatically provides correct checksums with client commands sent to µARCS.
Server Information Packets
Once a client establishes a connection and sends the OPEN command, µARCS automatically and
periodically sends one or more Server Information Packets (SIPs) over the HOST serial port back to the
connected client. The default SIP period is 100ms (10Hz), but may be changed via the SIPcycle parameter
or client command. One type of SIP, the Standard SIP (also historically referred to as a “Motors Packet”),
is always sent after OPEN. The Standard SIP informs the client about a number of operating states and
readings, using format described in the table below.
In addition to the standard SIP, other types of information packets may be requested via client commands
to include accessory or additional data. These packets get sent immediately before or after the standard
SIP that µARCS sends to your client every SIPcycle milliseconds (typically set to 100). The standard SIP
has priority, it will always be sent every cycle.
Standard SIP contents
“byte” indicates a single byte value (usually unsigned). “int” indicates a signed 16-bit (2-byte) integer
value (LSB). “uint” indicates an unsigned 16-bit (2-byte) integer value (LSB).
Field Size Description
Packet Header 2 bytes Exactly 0xFA (250), 0xFB (251)
Packet Byte Count byte Number of packet bytes that follow, which includes 2 bytes for
checksum (does not include preceding header or this byte count)
Packet Type byte 0x32 when motors stopped or 0x33 when robot moving.
XPOS int Wheel-encoder and optional gyro integrated coordinates in
millimeters (DistConvFactor2 = 1.0).
YPOS int
THPOS int Orientation in angular units (AngleConvFactor2 = 0.001534 radians per
angular unit = 2π/4096).
L VEL int Wheel velocities in millimeters per second (VelConvFactor2 = 1.0)
R VEL int
BATTERY byte Battery charge in tenths of volts (e.g. 101 = 10.1 V) (see also
BATTERYX10 and STATEOFCHARGE fields below)
STALL AND
BUMPERS
uint Motor stall and bumper indicators:
Bit Condition if set (1)
0 Left wheel stalled
1-7 Bumper triggered
8 Right wheel stalled
9-15 Bumper triggered
unused int unused
2 ARIA stores conversion factors in robot parameter file researchPB.p and automatically applies the conversion when SIP is received
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 60 of 96
FLAGS uint General status flags:
Bit Condition if set (1)
0 Motors enabled
1 Sonar array #1 enabled
2 Sonar array #2 enabled
3 Sonar array #3 enabled
4 Sonar array #4 enabled
5 Stop button pressed
6 E-stall engaged
7 (unused in PatrolBot)
8 (unused in PatrolBot)
9 Joystick button 1 is pressed
10 Recharging “power-good”
11-15 Reserved
unused byte unused
Sonar Readings
Count
byte If sonar is available and enabled, then this is the number of new sonar
readings included in this SIP. If sonar is unavailable or disabled, it
will be 0 and no reading data will follow.
Sonar Reading
Number
byte If Sonar Readings Count is 0, then this byte is omitted. Otherwise, it
indicates which sonar disc number 0-31 the range reading is from.
This allows a partial or out of order set of readings to be included in
each SIP.
Sonar Reading
Range
uint If Sonar Readings Count is 0, these readings are omitted. Otherwise,
sonar range values in millimeters (RangeConvFactor2 = 1.0) follow.
…Rest Of The Sonar Readings…
GRIP_STATE byte Pioneer gripper state (unused in PatrolBot)
ANPORT byte Selected Pioneer analog I/O Port (see ADSEL command) (unused in
PatrolBot)
ANALOG byte Pioneer analog input value (0-255=0-5 VDC) (unused in PatrolBot)
DIGIN byte Pioneer digital input (unused in PatrolBot)
DIGOUT byte Pioneer digital output (unused in PatrolBot)
BATTERYX10 int Actual battery voltage in 0.1 V (especially useful for battery voltages >
25.5)
CHARGESTATE byte Automated recharging state byte; -1 = unknown; 0=not charging;
1=bulk; 2=overcharge; 3=float.
ROTVEL int Current rotational velocity in degrees X 10 per sec.
FAULTFLAGS uint Fault flags:
Bit Condition if set (1)
0 PDB laser status read failure
1 high temp
2 general PDB failure
3 low battery
4 gyro fault
5 unused in PatrolBot
6 unused in PatrolBot
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 61 of 96
7 encoder degraded warning
8 encoder failure
9 critical driving fault (encoder failure)
10-14 reserved
15 Jodrive safe mode indicator set
LATVEL int Not used.
TEMPERATURE byte Reading from internal temperature sensor, in deg. C, or -127 if
unavailable.
STATEOFCHARGE byte Amount of remaining battery charge, 0-100% (not applicable in
PatrolBot)
CHECKSUM 2 bytes checksum
Client Commands
Client commands are packets sent from client software to µARCS. The packet ID indicates the command,
and depending on the command, argument data may follow.
A command’s argument may be a two-byte (16-bit) integer, ordered as least-significant byte first (little
endian). The integer absolute value is provided in the packet; whether it should be interpreted as a
positive or negative number is indicated by the argument type byte (0x3B or 0x1B). The argument may
also be a string or buffer of up to a maximum of 200 bytes, prefaced by a length byte and may or may not
be NULL terminated. Some commands have other command-specific argument formats as well. How
exactly a command’s argument should be interpreted is documented with commands is specified in the
list of commands below.
The number of client commands it is possible to send per second depends on the client-server serial baud
rate, average number of data bytes per command, synchronicity of the communication link and so on.
μARCS’ command processor runs on a one millisecond interrupt cycle, but a particular command’s
response 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.
Command Packet Format Component Bytes Value Description
header 2 0xFA, 0xFB Packet header; same for client and server
byte count 1 Number of command/argument bytes plus Checksum’s
two bytes, but not including Byte Count itself or the
header bytes. Maximum of 249.
packet type or
command
identifier
1 0 - 255 Packet type or command identifier (see below for lists).
data type 1 0x3B (positive
integer),
0x1B (negative or
unsigned integer),
0x2B (string)
0x3B indicates that a 16-bit (2-byte) integer follows.
0x1B indicates that a 16-bit (2-byte) integer follows, whose
value should be negated
0x2B indicates that a length-prefixed string follows. The
length prefix is one byte.
data n Argument data
checksum 2 Packet integrity checksum
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 62 of 96
µARCS client command list
“byte” indicates a single byte value (usually unsigned). “int” indicates a signed 16-bit (2-byte) integer
value (LSB). “uint” indicates an unsigned 16-bit (2-byte) integer value (LSB).
Command # Args Description
Before Client Connection:
SYNC0 0 none Start connection. Send in sequence. ARCOS echoes
SYNC1 1 none synchronization commands back to client, and
SYNC2 2 none robot-specific auto-synchronization after SYNC2.
After Established Connection:
PULSE 0 none Reset server watchdog timeout.
OPEN 1 none Start sending data.
CLOSE 2 none Stop sending data and close client connection.
POLLING 3 str Change Sonar polling sequence.
ENABLE 4 int 1=enable; 0=disable the motors.
SETA 5 int If positive, set acceleration used for VEL, MOVE and VEL2 commands.
If negative, set deceleration used for VEL, MOVE and VEL2 commands.
Argument is desired acceleration or deceleration in mm/sec2.
SETV 6 int Set maximum/move translation velocity limit; mm/sec.
SETO 7 none Reset local position estimate to 0,0,0..
MOVE 8 int Translate (+) forward or (-) back mm distance at SETV speed
ROTATE 9 int Rotate (+) counter- or (-) clockwise degrees/sec at SETRV limited speed.
Deprecated. See RVEL.
SETRV 10 int Sets maximum/turn rotation velocity; degrees/sec.
VEL 11 int Translate at mm/sec forward (+) or backward (-) (SETV limited speed).
HEAD 12 int Turn at SETRV speed to absolute heading; ±degrees (+ = counterclockwise).
DHEAD 13 int Turn at SETRV speed relative to current heading; (+) counter- or (–) clockwise
degrees.
SAY 15 str Not available on PatrolBot
JOYREQUEST 17 int Request one or continuous stream (>1) or stop (0) joystick packets
CONFIG 18 none Request a configuration SIP.
ENCODER 19 int Request one, a continuous stream (>1), or stop (0) encoder SIPs.
RVEL 21 int Rotate robot at (+) counter- or (–) clockwise; degrees/sec (SETRV limit). (Replaces
ROTATE; commands are equivalent.)
DCHEAD 22 int Adjust heading relative to last setpoint; ± degrees (+ = ccw)
SETRA 23 int If positive, set rotation acceleration used for RVEL, ROTATE, HEAD, DHEAD and
DCHEAD commands, in degrees/sec2
If negative, set rotation deceleration used for RVEL, ROTATE, HEAD, DHEAD and
DCHEAD commands, in degrees/sec2
SONAR 28 int 1=enable, 0=disable all the sonar; otherwise, use bits 1-3 to specify an individual array
number 1-4.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 63 of 96
STOP 29 none Stop the robot (0 velocities); motors remain enabled
DIGOUT 30 2 byte Set (1) or reset (0) Pioneer digital 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).
Unused in PatrolBot.
SETPBIOPORT 31 2 byte Turn a PatrolBot PDB power port on or off. First byte indicates which port address,
second byte indicates state (1=on, 0=off). See Chapter 5 for locations of power output
connectors. PatrolBot only.
Address Function Device
0 Computer power 0 is computer power off, 1 is computer power on.
1 System kill 0 is normal, 1 to kill system.
4 5V #1 Floor (URG) laser
5 5V #2 motion lights enable/disable
6 5V #3
7 12V #1
8 12V #2 Cameras
9 12V #3 Audio Amplifier & Microphone
10 12V #4 Microphone Record Light
11 24V #1 Laser
13 24V #3
14 24V #4
15 Soft-triggered estop
VEL2 32 2 byte Set independent wheel velocities; bits 0-7 for right wheel, bits 8-15 for left wheel; in
20mm/sec increments.
GRIPPER 33 int Not available
ADSEL 35 int Selects ANPORT Pioneer analog I/O port number. (Not available in PatrolBot)
GRIPPERVAL 36 int Pioneer gripper request. Not available in PatrolBot.
GRIPREQUEST 37 int Pioneer gripper request. Not available in PatrolBot.
GYROCALCW 38 uint Set the clockwise rotation calibration value for the gyro.
GYROCALCCW 39 uint Set the counterclockwise rotation calibration value for the gyro.
IOREQUEST 40 int Request one (1), a continuous stream (>1), or stop (0) Pioneer IO packets. Not used
with PatrolBot.
TTY2 42 str Sends string argument to serial device connected to AUX1 serial port.
GETAUX 43 uint Request to retrieve 1-200 bytes from the AUX1 serial port; 0 flushes the buffer.
BUMPSTALL 44 int 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 45 int TCM2 module commands; 0=module off, no readings; 1=compass only, readings in
standard SIP; 2=send one TCM2 packet; 3=send continuous (each cycle) TCM2
packets; 4=user calibration; 5=auto calibration; 6=stop auto-calibration, send one
packet, revert to mode 1; 7=soft reset.
JOYDRIVE 47 int 1=allow joystick drive from port while connected with a client; 0 (default) disallows.
SONARCYCLE 48 uint Change the sonar cycle time; in milliseconds.
HOSTBAUD 50 int Change the HOST serial port baud rate to 0=9600, 1=19200, 2=38400, 3=57600, or
4=115200.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 64 of 96
AUX1BAUD 51 int Change the AUX1 serial port baud rate (see HOSTBAUD).
AUX2BAUD 52 int Change the AUX2 serial port baud rate (see HOSTBAUD).
AUX3BAUD 53 int Change the AUX3 serial port baud rate (see HOSTBAUD).
E_STOP 55 none Emergency stop; very abrupt by overriding deceleration.
M_STALL 56 int 1=motor button off causes a stall, 0=does not.
GYROREQUEST 58 int If client-side (HasGyro 1), request one, a continuous stream (>1), or stop (0) Gyro
SIPs. If server-side (HasGyro 2), 0 disable or 1 to enable the gyro.
LCDWRITE 59 str Display a message on the LCD accessory: byte 0=starting column (1-19); byte
1=starting row (1-4); byte 2=1 if clear line contents first, otherwise 0; bytes 3- = up to
20 chars, NULL-terminated.
TTY4 60 str Send string argument out to device connected at AUX3 serial port.
GETAUX3 61 int Request to retrieve 1-200 bytes from the device connected at the AUX3 serial port; 0
flushes the buffer.
TTY3 66 str Send string argument out to device connected at AUX2 serial port.
GETAUX2 67 int Request to retrieve 1-200 bytes from the device connected at the AUX2 serial port; 0
flushes the buffer.
CHARGE 68 int 0=release; 1=deploy autocharge-docking mechanism.
ARM 70-80 int Pioneer arm commands. Not available in PatrolBot.
ROTKP 82 int Change working rotation Proportional PID value.
ROTKV 83 int Change working rotation Derivative PID value.
ROTKI 84 int Change working rotation Integral PID value.
TRANSKP 85 int Change working translation Proportional PID value.
TRANSKV 86 int Change working translation Derivative PID value.
TRANSKI 87 int Change working translation Integral PID value.
REVCOUNT 88 int Change working differential encoder count.
DRIFTFACTOR 89 int Change working drift factor.
SOUNDTOG 92 int 0=mute User Control piezo; 1 = enable. Unused in PatrolBot.
TICKSMM 93 int Change working encoder ticks per millimeter tire travel.
BATTEST 250 int Artificially set the battery voltage; argument in tens volts (100=10V); 0 to revert to real
voltage
DIGTEMPTEST 251 Int Artificially set the digital temperature; argument in degrees C; 0 to revert to real
temperature.
ANTEMPTEST 252 Int Artificially set the analog temperature; argument in degrees C; 0 to revert to real
temperature.
RESET 253 none Force reset of the microcontroller.
MAINTENANCE 255 none Engage microcontroller maintenance mode.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 65 of 96
Command Packet Errors
µARCS 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 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.
Establishing the connection
When first started or reset, µARCS is in a special wait state, listening for communication packets to
establish a client-server connection. To establish a connection, the client application must send a series of
three synchronization packets containing the SYNC0, SYNC1 and SYNC2, waiting for response from
µARCS after each packet, before sending the next. µARCS echoes each SYNC packet 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 response.
The response from µARCS to the last synchronization packet, SYNC2, also includes robot identifying
information as three NULL-terminated character strings: robot name, robot class or type, and robot
subclass or subtype. You may set the name to any string using uARCScf (see next section). For the
Research PatrolBot, the class is always “Pioneer” and the subclass is always “researchPB”. Clients use
these identifying strings to configure their own operating parameters. ARIA, for instance, uses the
Subclass to identify and load PatrolBot’s “researchPB.p” parameter file found in the Aria/params
directory, followed by a robot parameter file corresponding to the robot name, if one exists.
Client
Software
SYNC0 [250, 251, 3, 0, 0, 0]
SYNC0 [250, 251, 3, 0, 0, 0]
SYNC1 [250, 251, 3, 1, 0, 1]
]0]
SYNC2 [250, 251, n, 2, name,
type, subtype, c]
SYNC2 [250, 251, 3, 2, 0, 2]
µARCS
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 66 of 96
Opening the session—OPEN
Once you’ve established a connection with µARCS, your client should send the Open command #1 (250,
251, 3, 1, 0, 1, which causes µARCS to perform a few housekeeping functions, start its various processes,
such as the motor controllers, and begin transmitting information to the client.
Note that when 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 via the
interactive LCD, or have your client send an Enable client command #4 with an integer argument of one.
(See Client Commands below).
Keeping the Beat—PULSE
A µARCS safety watchdog expects that, once connected, it receives at least one command packet from the
client program every WatchDog seconds, as defined in the robot’s FLASH configuration. (default is 2
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, have it 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.
Closing the connection—CLOSE
To close the client-server connection, which automatically disables the motors and other server functions,
simply issue the CLOSE command #2. Most of the controller’s operating parameters return to their
configured default values upon disconnection with the client.
Robots in Motion
When your µARCS firmware receives a motion command, it accelerates or decelerates the robot
according to acceleration or deceleration parameters previously set by SETA (command #5, for
translation) and SETRA (command #23, for rotation) until the platform either achieves the requested
speed (for VEL and RVEL commands) or nears the requested movement distance (when performing
MOVE, HEAD and DHEAD commands). Rotation headings and translation setpoints are achieved by a
trapezoidal velocity function, which µARCS recomputes each time it receives a new motion command.
µARCS automatically limits velocities, acceleration and deceleration to client-modifiable maximum limits
(set via SETV, SETRV, SETA and SETRA) and ultimately by absolute “Top” constants. µARCS initializes
these limits upon startup or reset from its FLASH parameters.
Limits set via SETV, SERV, SETA commands and SETRA take effect on subsequent commands, not on the
current translation or rotation activity, and are reset when the client disconnects or uARCS is reset.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 67 of 96
v e l o c i t y
t i m e
m a x v e l o c i t y
a c c e l d e c e l
p o s i t i o n a c h i e v e d
s h o r t m o v e ,
m a x v e l o c i t y n o t
r e a c h e d
p o s i t i o n a c h i e v e d
s t a r t p o s i t i o n
The orientation commands Head (#12), DHEAD (#13) and 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.
The STOP command is equivalent to requesting both translation and rotation velocities of 0; the robot
will decelerate to 0. The E-STOP command #55 overrides normal deceleration and abruptly stops your
PatrolBot in the shortest distance and time possible. Accordingly, the robot brakes to zero translational
and rotational velocities with very high deceleration and remains stopped until it receives a subsequent
translation or rotation velocity command from the client.
PID controls
µARCS uses a Proportional-Integral-Derivative (PID) control system to adjust the PWM pulse width at
the motor drivers to smooth the power to the motors. The motor-duty cycle is 50 microseconds (20 KHz);
pulse-width is proportional 0-500 (FLASH PwmMax) for 0-100% of the duty cycle. µARCS recalculates
and adjusts your robot’s trajectory and speed every five milliseconds based on feedback from the wheel
encoders.
The default PID values for translation and rotation and maximum PWM are stored as FLASH parameters
in your robot’s controller and may be changed. You also may temporarily update the PID values with the
µARCS client commands #84 through #87. On-the-fly changes persist until the client disconnects.
Translation, but not the rotation PID values apply during independent wheel-velocity mode.
The P-term 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 5 to 15.
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 3 to 10 for lightly to heavily loaded robots, respectively. If your robot starts to vibrate or
shutter, reduce Kv.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 68 of 96
Front
180°
0°
-90° 270° +90°
X
Y
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 0 value for PatrolBot’s Ki, but
consider a value from 1 to 5 for heavily loaded robots.
DriftFactor, RevCount and TicksMM
Three client commands let you change, albeit momentarily for the current client-server connection, those
values that affect encoder-based translation, rotation and drift in your robot. The DriftFactor is a signed
value in 1/8192 increments that gets added to or subtracted from the left wheel encoder 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 on-the-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.
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.
Position integration
MobileRobots platforms track their position and orientation based on dead-reckoning from wheel motion
derived from encoder readings and from the integrated gyroscope accessory when attached and enabled
with HasGyro mode 2 (server-side integration).
µARCS maintains its internal coordinate position in platform-dependent units, but reports the values in
platform-independent millimeters and
angular units (2π/4096 radians) in the
standard SIP (XPos, YPos and THPos).
Conversion from the angular units to
degrees is automatically performed by
ARIA when received.
Be aware that registration between
external and internal coordinates
deteriorates rapidly with movement due
to gearbox play, wheel imbalance,
slippage and many other real-world
factors. You can rely on the dead-
reckoning ability of the robot for 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.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 69 of 96
Also, moving either too fast or too slow tends to exacerbate the absolute position errors. Accordingly,
consider the robot’s dead-reckoning 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 position is initialized to (0, 0, 0), pointing along the positive X-axis at 0 degrees.
Absolute angles vary between 0 and ±4096 angular units (+180 to -179 degrees).
You may reset the internal coordinates back to 0,0,0 with the SETO command #7.
Sonar
When connected with and opened by the client, μARCS automatically begins firing your PatrolBot’s
sonar, one disc at a time from each array simultaneously, as initially sequenced and enabled in your
robot’s FLASH parameters, and provides data in the standard SIP.
Enabling and disabling sonar
Use the SONAR client command #28 to enable or disable the sonar. Use an argument of 1 to enable all
sonar, or 0 to disable all sonar.
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 SONARCYCLE 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 ranging values from the same sonar appear in the
same SIP.
(For compatibility with other robots, if the POLLING command string is empty, all the sonar in the array
get disabled, just as if you had sent the Sonar command with an argument value of zero.)
Polling Rate
Use the SONARCYCLE client command #48 to change the sonar cycle timing on the fly for the current
client session. The SONARCYCLE command takes one integer argument, the cycle interval between
reading each of the sonar transducers in milliseconds. It can take up to 40 ms for a sonar transducer to
sense the return signal at the maximum 5 meter range; reducing the cycle time therefore limits the
effective maximum sensing range to less than 5 meters, though it provides a faster update rate of range
data for the application. The default value may be set in FLASH parameters, and is normally 40 ms.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 70 of 96
Bumper Stalls and Emergencies
µARCS may immediately and quickly stop the robot and notify the client of a stall if any one or more of
the bumper contact sensors get triggered and the robot is going in the direction of the bump
(forward/front or backward/rear). From the client-side, you also may change the BunpStall behavior with
BUMPSTALL command #44 and an integer argument: zero to disable BumpStall; a value of one to re-
enable BunpStall only when a forward bump sensor gets triggered; two for rear-only BumpStalls; or three
for both rear and forward bump contact-activated stalls. Set the BumpStall uARCS configuration
parameter to specify default behavior.
In an emergency, your client may want the robot to stop quickly, not subject to normal deceleration. In
that case, send the ESTOP command (#55).
Extended Bumpers
In order to protect accessories and attachments outside the normal protective envelope of the robot, such
as a platform on top of the robot, µARCS 4.1 and later now supports extended bumpers—digital switches
(e.g. bumper switches, IR breakbeams, etc.) that can mimic a bump event. Simply connect the digital
switch to one of the eight extended bumper digital inputs (see chapter 5) and then, in FLASH
configuration using uARCScf (see below), associate that switch with a front and/or rear bumper.
Consequently, when activated, the switch causes a bump event just as if the associated bumper(s) had
been contacted.
See Chapter 6, Updating & Reconfiguring µARCS, for FLASH configuration details.
CONFIGpac Packet and CONFIG command
Send the CONFIG command #18 without an argument to have µARCS send back a CONFIGpac packet
type 32 (0x20) containing the robot’s current 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.
CONFIGpac contents
Label Data Description
Packet Header int Common packet header = 0xFAFB
Packet Byte count byte Number of following data bytes
Packet type byte CONFIGpac = 0x20
Robot type str “Pioneer”
Subtype str “researchPB”
Sernum str Serial number for the robot.
4mots byte unused
Rotveltop int Maximum rotation velocity; deg/sec
Transveltop int Maximum translation speed; mm/sec
Rotacctop int Maximum rotation (de)acceleration; deg/sec2
Transacctop int Maximum translation (de)acceleration; mm/sec2
PWMmax int Maximum motor PWM (limit is 500).
Name str Unique name given to your robot (can be changed using uARCScf).
SIPcycle byte Server information packet cycle time; ms.
Hostbaud byte Baud rate for client-server HOST serial: 0=9.6k, 1=19.2k, 2=38.4k, 3=56.8k, 4=115.2k.
Auxbaud byte Baud rate for AUX1 serial port; see HostBaud.
Gripper int 0 if no Pioneer Gripper; else 1. Always 0 on PatrolBot.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 71 of 96
Front Sonar int 1 if robot has front sonar array enabled, else 0. Always 0 on 3rd gen. PatrolBot.
Rear Sonar byte 1 if robot has rear sonar enabled, else 0.
Lowbattery int In 1/10 volts; alarm activated when battery charge falls below this value.
Revcount int Working number of differential encoder ticks for a 180 degree revolution of the
robot.
Watchdog int Ms time before robot automatically stops if it has not received a command from the
client. Restarts on restoration of connection.
P2mpacs byte Unused.
Stallval int Maximum PWM before stall. If > PWMMAX, never.
Stallcount int Ms time after a stall for recovery. Motors lax during this time.
Joyvel int Joystick translation velocity setting, mm/sec
Joyrvel int Joystick rotation velocity setting in deg/sec
Rotvelmax int Current max rotation speed; deg/sec.
Transvelmax int Current max translation speed; mm/sec.
Rotacc int Current rotation acceleration; deg/ sec2
Rotdecel int Current rotation deceleration; deg/ sec2
Rotkp int Current Proportional PID for rotation
Rotkv int Current Derivative PID for rotation
Rotki int Current Integral PID for rotation
Transacc int Current translation acceleration; mm/ sec2
Transdecel int Current translation deceleration; mm/ sec2
Transkp int Current Proportional PID for translation.
Transkv int Current Derivative PID for translation.
Transki int Current Integral PID for translation.
Frontbumps byte Number of front bumper segments.
Rearbumps byte Number of rear bumper segments.
Charger byte Autocharger type. 0=none; 1 = Pioneer/PeopleBot; 3 = PatrolBot; 4 = PowerBot
SonarCycle byte Sonar duty cycle time in milliseconds.
Autobaud byte 1 if the client can change baud rates; 2 if auto-baud implemented.
HasGyro byte 1 or 2 if robot equipped with the gyro heading correction device; otherwise 0.
Driftfactor int Working drift factor value.
Aux2baud byte Baud rate for AUX2 serial port: 0=9.6k, 1=19.2k, 2=38.4k, 3=56.8k, 4=115.2k.
Aux3baud byte Baud rate for AUX3 serial port: 0=9.6k, 1=19.2k, 2=38.4k, 3=56.8k, 4=115.2k.
Ticksmm int Encoder ticks per millimeter tire motion
Shutdownvolts int DC volts X10 at or below which the onboard PC will shut down
Firmware Version str
Null-terminated string containing firmware version identifier.
GyroCW int Gyro calibration factor clockwise
GyroCCW int Gyro calibration factor counterclockwise
KinematicsDelay byte Time delay (ms) between acquisition and reporting of rotation
Packet checksum 2bytes Packet checksum
Host Serial Communications
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 controller is reset or upon client disconnection. For
advanced serial port management from the client side, µARCS provides four commands which let your
client software reset the HOST (HOSTBAUD command #50), Aux1 (AUX1BAUD #51), Aux2
(AUX2BAUD #52) and Aux3 (AUX3BAUD #53) serial port baud rates, respectively. Use the integer
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 72 of 96
command argument value to specify the rate, where 0 = 9600, 1 = 19200 K, 2 = 38400, 3 = 57600, or 4 =
115200 baud.
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 client-
command packet within 500 milliseconds.
Robot Auxiliary Serial Ports
The robot microcontroller contains additional RS-232 serial ports, to which serial devices may be
connected in addition to the onboard computer’s serial ports. (For example, the pan/tilt/zoom control of a
camera.)
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. Similarly, use the TTY3 command #66 to send a string argument out the
Aux2 port, or TTY4 command #60 to send data out the Aux3 port.
µARCS also maintains three circular buffers for incoming serial data from the respective Aux ports. On
request, µARCS sends successive portions of the buffer to your client via SERAUXpac (type = 176),
SERAUX2pac (type = 184) and SERAUX3pac (type = 200) packets.. Use the GETAUX command #43 to
request SERAUXpac with Aux1 data, GETAUX2 command #67 for Aux2 and GETAUX3 command #61
for Aux3. Include an integer argument value of zero to flush the contents of the respective buffer.
Otherwise, the argument indicates the amount of data to return (up to 253 bytes). µARCS will wait to
collect the requested number of bytes before sending the return packet.
Encoder Data
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.
ENCODERpac Packet contents Label Data Description
Packet Header int Exactly 0xFA, 0xFB
Packet Byte Count byte Number of data bytes + 2 (checksum)
Packet Type byte 0x90
Left Encoder int Least significant, most significant portion of the
int current accumulated encoder counts from the left wheel
Right Encoder int Least significant, most significant portion of the
int current accumulated encoder counts from the right wheel
Packet Checksum 2bytes Checksum for packet integrity
Heading Correction Gyro
A heading correction gyroscopic sensor (“gyro”) may be used to improve the accuracy of the uARCS’
estimated position. The gyro can be used in two modes, set via the HasGyro configuration parameter.
With HasGyro set to 2, uARCS automatically uses the gyro to improve its estimated position (XPos, YPos
and THPos returned in the Standard SIP). With HasGyro set to 1, uARCS does not use the gyro data, but
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 73 of 96
client software can request gyro data with the GYROREQUEST command. The gyro can by disabled by
setting HasGyro to 0.
In all cases, µARCS collects and averages the gyro (Z-axis) rate and temperature over a 25 millisecond
time period—the bandwidth of the gyro. What happens next depends on the HasGyro setting.
Server-Side Automatic Analog Gyro Handling (HasGyro = 2)
With the FLASH parameter HasGyro set to 2, µARCS manages the analog gyro internally. uARCS
averages analog readings over a 25 millisecond cycle time. µARCS fuses the gyro and encoder readings
to compute the XPos, YPos and ThPos position estimate provided in the standard SIP. uARCS
automatically detects the gyro center point and compensates for drift. Two calibration factors, GyroCW
and GyroCCW may be set in uARCS configuration or for the current session only via GYROCW and
GYROCCW client commands. These calibration factors determine actual rates clockwise and
counterclockwise and need to be set for each robot/gyro pair—something typically done at the factory,
but may be recalibrated if necessary. These calibration factors are both typically at or near 950.
Due to noise effects and consequent drift, the gyro is not used to compute the robot’s pose if the gyro’s
measured rate falls below a threshold, which may be set via the GyroRateLimit configuration parameter.
If this parameter value is zero, the default rate limit is 2.0 degrees per second is used. Set the parameter
to tenths of degrees per second; for example, the value 20 is 2.0 degrees/sec.
You can temporarily disable the gyro during a client-server session by sending client command #58 with
an argument of 0. Re-enable it with an argument of 1.
Client-Side Analog Gyro Handling (HasGyro = 1)
With HasGyro set to 1, µARCS simply collects the averaged analog gyro readings every 25 milliseconds
and, upon request by the client with command GyroRequest #58 and argument 1 (0 to cancel), sends the
collected data just before the standard SIP to a connected client in a GYROpac (type = 0x98) packet for
processing. Analysis of the gyro data and subsequent modifications to the robot's heading may then be
done on the client side. ARIA version 1.3 and later includes an ArAnalogGyro class for accessing the
received gyro data and automatically performing the heading correction. Note that the client-side gyro
calibration/correction factor is found as the GyroScaler value in your robot’s Aria/params/*.p parameter
file and should be calibrated for the particular robot and gyro.
GYROpac consists of a count of the averaged rate and temperature data pairs accumulated since the last
cycle, followed by that number of rate/temperature pairs.
GYROpac packet contents
Field Field size Value Description
Packet Header 2 0xFA, 0xFB Standard uARCS packet header
Packet Byte Count 1 Number of following packet data bytes
Packet Type 1 0x98 Packet type
Number of gyro data
pairs
1 N Number of gyro data pairs in this packet
Then for each of N gyro data pairs:
Rate 2 Varies 0-1023 Gyro rate in 25ms interval units
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 74 of 96
Temperature 1 Varies 0-255 Gyro temperature during this reading
…
Packet checksum 2 Packet checksum bytes
Low Battery Voltage PC Shutdown (Linux only)
The RI pin 9 on the HOST serial port (used for robot control) is set low when the robot powers on.
µARCS sets RI to high when the batteries discharge to below the FLASH-set ShutdownVolts value. The
Linux genpowerd daemon can monitor RI and begin shutting down the OS when set. PatrolBots with
onboard computers running Linux have been preconfigured to do this.
Use the µARCS client maintenance command #250 to test genpowerd or software behavior on low battery
voltage. This command sets an artificial battery voltage that replaces the real voltage. Reset behavior to
reflect real battery voltage by sending command 250 with a value of 0.
Accessory Power Control
Use the SETPBIOPORT command #31 to switch power to devices. This command takes two bytes as
arguments; the first byte indicates the power port #, the second the desired state (1 for on, 0 for off).
See Chapter 5 for the location of power connectors on the robot.
Port # Function Typical Device
0 Computer power 0 is computer power off, 1 is computer power on.
1 System kill 0 is normal, 1 to kill system.
4 5V #1 Floor (URG) laser
5 5V #2 motion lights enable/disable
6 5V #3
7 12V #1
8 12V #2 Cameras
9 12V #3 Audio Amp & Microphone
10 12V #4
11 24V #1 Laser
13 24V #3
14 24V #4
15 Soft-trigger estop
FLASH parameters let you specially map power ports to some common uses, and have µARCS manage
their start up states. Once specially mapped, dedicated µARCS commands automatically address those
ports for you. Command #95, for example, with an argument of zero will initiate a gentle shutdown of
the PC. Note that command #31 with integer argument zero will immediately cut power to the PC, while
the PC-related command #95 initiates a gentle shutdown as if in a ShutdownVolts condition.
Similarly, commands #96-99 let you directly address the ports allocated in FLASH to the LRF and to the
auxiliary 5 VDC, 12 VDC and 24 VDC switched power connectors. Once mapped, these ports also appear
and may be changed from the LCD control panel.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 75 of 96
Joystick Packet
Use the JoyRequest command #17 with an argument value of 0, 1 or 2 to request information about the
joystick, if it is enabled in the µARCS configuration. 1 requests a single JOYSTICKpac packet (type = 248)
to be sent by the next client-server communications cycle. 2 has JOYSTICKpac SIPs sent continuously
after the standard SIP, at approximately one per cycle depending on serial port speed and other pending
SIPs. Use argument value 0 to stop continuous JOYSTICKpac packets.
JOYSTICKpac contents
Automated Recharging
To use the PatrolBot’s automated recharging docking station system, it must be enabled in the µARCS
Charger parameter (see below). Thereafter, for autonomous operation of the robot with the recharging
system, use ARNL, ARIA or other software to slowly drive the robot into the docking station. Make sure
the robot stops when one of the front bumper switches is triggered. Use the µARCS Charge command
#68 with an integer argument of 1 to automatically halt robot motion if necessary, disable the motors, and
deploy the electromagnet.
ARNL includes modes that will automatically drive to a dock location from the map, drive into the dock,
and begin charging; see the code provided in ArDocking.cpp and ArDocking.h.
To stop charging, send the Charge command #68 with integer argument of zero to gracefully cancel
charging.
Your client software disconnect and reconnect to µARCS without disrupting recharging, as long as the
robot’s power-contacts remain positively engaged with the charger and you don't do anything else to
otherwise disrupt charging, such as move the robot.
Monitoring the Recharge Cycle
µARCS versions 2.4 and later include a Charging state byte near 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.
Meaning of Charging state field values:
SIP Charging
State Field
Charge State Overcharge Volts Charge Current
Label Data Value Description
Packet header 2 0xFA, 0xFB Common header
Byte count 1 11 Varies
type 1 0xF8 Packet type
button0 1 0 or 1 1=button pressed
button1 1 0 or 1 1=button pressed
X-axis 2 varies 0-1023 Rotation analog
Y-axis 2 varies 0-1023 Translation analog
throttle 2 varies 0-1023 Throttle setting
Packet checksum 2 varies Computed checksum
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 76 of 96
Value
-1 Unknown ? ? ?
0 Not Charging 0 or 1 Any 0
1 Bulk 1 14 6A
2 Overcharge 0 14-14.7 Decreases to 1A
3 Float 1 13.5 <1A
Updating & Reconfiguring µARCS
µARCS firmware and a set of operating parameters get stored in your PatrolBot microcontroller’s
FLASH. With special upload and configuration software tools, you change and update µARCS and its
operating parameters. No hardware modification is required.
Where to Get µARCS Software
Your PatrolBot comes installed with the latest version of µARCS. And the various µARCS 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 µARCS software and related documentation:
http://robots.MobileRobots.com
The main utility, uARCScf, is a multi-functional application for both uploading new µARCS versions as
well as modifying your robot’s onboard FLASH-based parameters.
µARCS Maintenance Mode
To connect with and update µARCS and its configuration parameters, you need to first connect a serial
port from an offboard PC to the MAINTENANCE serial port of your PatrolBot, or effect the changes
directly from the onboard PC. For the former option, make sure the onboard PC is OFF.
Enabling Maintenance Mode on the Controller
If for any reason your robot’s FLASH parameters get erased or your μARCS software encounters a code
fault, your PatrolBot’s microcontroller automatically reverts to Maintenance Mode.
Or, if you attach a PC to the MAINTENANCE port, and run uARCScf on that PC and then reset or
otherwise start the microcontroller, it will automatically revert into Maintenance Mode.
Or, simply by executing uARCScf in the absence of another client connection, it automatically engages
Maintenance Mode. Finally, the LCD lets you SCROLL to and SELECT “Engage uC stub Maintenance
Mode.” (The latter methods use the μARCS client command #255 to do that.)
uARCScf
The µARCS update and configuration program, uARCScf, is used to update the µARCS firmware on the
robot microcontroller, and to change its various configuration parameters.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 77 of 96
Install uARCScf 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 (Windows) or by unpacking the compressed
tar archive (Linux):
$ tar -zxvf uARCS1_0.tgz
The expanded archive creates a uARCS/ directory in the selected Windows or current Linux path and
stores the µARCS software and files within.
Starting uARCScf
uARCScf is a text-based console. uARCScf may be invoked with various command-line options. Use the -
help option to list the available options.
In Linux, run uARCScf using the following commands.
$ cd /usr/local/µARCS
$ ./uARCScf
In Windows, you may double-click the uARCScf 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 the Windows Command Prompt accessory from the Start menu, navigate to the
C:\Program Files\MobileRobots\uARCS directory, and run uARCScf followed by any command line
options:
C:\> cd Program Files\MobileRobots\uARCS
C:\Program Files\MobileRobots\uARCS\> uARCScf
Normally (without any command-line arguments), uARCScf starts up expecting to connect to PatrolBot’s
microcontroller through your 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.
uARCScf startup options Key Argument Description
-b List of uARCScf
commands
Batch Mode: Executes a list of uARCScf commands, then exits
automatically.
-u motfile Upload the given µARCS firmware image from file motfile
-l paramsfile Load parameters from the given paramsfile (usually named with .rop)
instead of downloading from robot. If saved with the save command,
these will replace robot’s existing parameters.
-n None Don’t connect to microcontroller (use to manipulate parameter files
locally only)
-rp Robot serial port Use specified serial port for connection (default is COM1 or /dev/ttyS0)
-rb Baud rate Specify the serial connection baud rate
-s Paramsfile On exit from uARCScf, automatically save a copy of the current
parameter values to the named .rop paramsfile.
These options are specified in a command terminal after the uARCScf program name followed by any
required arguments, separated by spaces. For example, to start up uARCScf on Windows and make a
connection through your PC’s serial port other than the default COM1 or ttyS0:
C:\Program Files\MobileRobots\uARCS> uARCScf –rp COM3
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 78 of 96
Similarly, in Linux, the following command uploads a fresh copy of μARCS to your robot’s controller and
then exits automatically:
$ ./uARCScf –u µARCS1_0.mot –n –b
Configuring µARCS Parameters
Your PatrolBot has several parameters stored in nonvolatile FLASH memory. 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 controller and may be changed temporarily by a client command.
Use uARCScf’s batch or interactive modes to modify these operating parameters and hence your robot’s
default operating characteristics.
Start up uARCScf as described in the previous section. And as discussed earlier, uARCScf 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 uARCScf in interactive mode, simply type a keyword at the command line. Some keywords
affect the operation of uARCScf, the status of the parameters file as a whole or the connection between
uARCScf and your robot’s controller. For instance, to review the list of current μARCS FLASH variables,
type ‘v’ or ‘view’ followed by a return (‘Enter’). Type ‘p’ to view a menu of power port-related settings.
Each successive return will display additional variable keywords and current values. Similarly, type ‘?’
or ‘help’ to see a list of uARCScf interactive commands.
Changing Parameters
Most keywords refer to the operating parameters themselves. Alone, a parameter’s keyword simply asks
uARCScf to display the parameter’s value. Provide an argument with the parameter keyword separated
by a space to change its value. 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
uARCScf control commands
Command Description
KEYWORD value Without value, displays the current value of the parameter with name
KEYWORD in uARCScf (not the value stored on the robot, if changed
in uARCScf). With value, changes the value of the parameter with
name KEYWORD in uARCScf (configuration must then be saved
with SAVE command to change on robot).
VIEW Display list of all parameters except power port mapping parameters.
List display will pause after a screenfull, press ENTER to continue
display.
POWER Display list of power port mapping parameters.
UPLOAD motfile Upload a new µARCS firmware image from mofile to the robot. Use
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 79 of 96
this command to re-write or upgrade µARCS.
RESTORE paramsfile If paramsfile is given, load configuration parameters from paramsfile
into uARCScf (configuration must still be saved with SAVE
command to change on robot). If paramsfile is not given, reload
parameters from the robot.
SAVE paramsfile If paramsfile is given, save configuration parameters from uARCScf to
paramsfile. If paramsfile is not given, save configuration parameters to
the robot.
QUIT Exit uARCScf.
HELP or ? Display summary of commands.
Save Your Work
While changing parameter values in uARCScf 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 uARCScf 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 controller get damaged or its FLASH inadvertently erased. Default parameter files
come with each μARCS distribution, but it is tedious to reconstruct an individual robot’s unique
configuration.
Parameter Keyword Type Default Value Description
TYPE str Pioneer Identifies the robot type.
SUBTYPE str researchPB Identifies the robot model and params file.
NAME str none Name for your robot. Maximum of 16 characters, no spaces.
You may change this to any name.
SERNUM str none Serial number for the robot set at factory
TICKSMM int 192 Encoder ticks/mm (ticks per rev x gearRatio) /
(wheelDiameter x PI)
REVCOUNT int 30700 The number of differential encoder ticks for a 180 degree
revolution of the robot.
DRIFTFACTOR int 0 Value in 2298108 increments to add or subtract from the left
encoder ticks in order to compensate for tire differences.
BATTCONV byte 1 0 = 12V, 1 = 24 Volt system
BATTOFFSET int 203 Volts x 10 offset for battery voltage measurement
LOWBATTERY int 230 controller alarm activated when battery charge falls below
this value.
SHUTDOWNVOLTS int 227 controller disconnects client and signals onboard PC to
shutdown when battery charge falls below this value. After
90 seconds, power shuts off.
HOSTBAUD byte 0 Baud rate for client-server HOST serial: 0 = 9.6k, 1 = 19.2k, 2 =
38.4k, 3 = 56.8k, 4 = 115.2k.
AUXBAUD1 byte 0 Baud rate for AUX serial port 1; see HostBaud
AUXBAUD2 byte 0 Baud rate for AUX serial port 2; see HostBaud
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 80 of 96
AUXBAUD3 byte 0 Baud rate for AUX serial port 3; see HostBaud
SIPCYCLE byte 100 Server information packet cycle time in 1 ms increments.
Default is classic 100 ms.
WATCHDOG int 2000 Time in ms before robot automatically stops if it has not
received a command from a client. Restarts on restoration of
connection.
SONARCYCLE byte 40 Sonar cycle time in milliseconds
SONAR1 str 0 Ping sequence for sonar array #1. Up to 16 number characters
1−8; 0 to disable the array
SONAR2 str 3456 Ping sequence for sonar array #2. Up to 16 number characters
1−8; 0 to disable the array
SONAR3 str 0 Ping sequence for sonar array #3. Up to 16 number characters
1−8; 0 to disable the array
SONAR4 str 0 Ping sequence for sonar array #4. Up to 16 number characters
1-8; 0 to disable the array.
HASGYRO byte 0 Set to 1 = client−side or 2 = firmware analog gyro; or SPI
3=gyro, 4=IMU
GYROCW int 738 Adjust for gyro type 2−4 clockwise rotations
GYROCCW int 738 Adjust for gyro type 2−4 counter-clockwise rotations
GYRORATELIMIT int 0 Minimum rotational rate x10 degrees per second at which
firmware−integrated gyro (HasGyro>1) affects odometry
(eliminate noise when stopped). 0=default 2 degrees per
second analog gyro or 1 degree per second SPI ones
GYRORANGE byte 0 SPI−based gyro/IMU only; selects default max. range:
0,3=320/300 d/s; 1=80/75 d/s; 2=160/150 d/s
HASBRAKES byte 0 1 if robot has mechanical brakes. Use 0 for PatrolBot.
CHARGER byte 3 Autocharger type. Use 3 for PatrolBot.
TCM2 byte 0 TCM2 module, if connected, specify Aux serial port 1, 2, or 3
LCD byte 3 Aux port number of attached LCD module
FRONTBUMPS byte 6 Number of front bumper segments
REARBUMPS byte 6 Number of rear bumper segments
INVERTBUMP byte 0 0=none; 1=front; 2=rear; or 3=invert both; affects stall bits in
std. SIP only.
BUMPSTALL byte 3 0=disable bump stall; 1=enable rear; 2=enable front; 3=enable
both front and rear bump stalls
FRONTIRS str 0 Associate IR port with front bumper segment
REARIRS str 0 Associate IR port with front bumper segment
INVERTIRS byte 0 Normally active low; 1 = invert front; 2 = invert rear, 3 =
invert both front and rear IR signals
STALLVAL int 300 Maximum PWM before stall. If > PwmMax, never.
STALLCOUNT int 500 Ms time after a stall for recovery. Motors not engaged during
this time.
PWMMAX int 495 Maximum motor PWM (500 maximum).
ROTVELTOP int 360 Maximum rotation velocity; deg/sec
TRANSVELTOP int 1900 Maximum translation speed; mm/sec
ROTACCTOP int 1000 Maximum rotation (de)acceleration; deg/sec2
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 81 of 96
TRANSACCTOP int 1400 Maximum translation (de)acceleration; mm/sec2
ROTVELMAX int 300 Max rotation speed; deg/sec.
TRANSVELMAX int 1800 Max translation speed; mm/sec.
ROTACC int 150 Rotation acceleration; deg/sec2
ROTDECEL int 200 Rotation deceleration; deg/sec2
ROTKP int 10 Proportional PID for rotation
ROTKV int 10 Differential PID for rotation
ROTKI int 0 Integral PID for rotation
TRANSACC int 500 Translation acceleration; mm/sec2
TRANSDECEL int 600 Translation deceleration; mm/sec2
TRANSKP int 5 Proportional PID for translation
TRANSKV int 30 Differential PID for translation
TRANSKI int 0 Integral PID for translation
JOYSTICK byte 1 Joystick type: 0=analog, 1=inductive
JOYDRIVEOK byte 0 1 = joydrive okay without client connection
JOYSAFE byte 0 1 lets you operate in joydrive UNSAFE mode
JOYVELMAX int 1500 Joydrive maximum translation velocity
JOYRVELMAX int 60 Joydrive maximum rotation velocity
Power Port Mapping and States
Use the ‘p’ command to view and to change the FLASH parameters related to PatrolBot’s power port
controls. Two types of settings apply: the first maps a port to the selected feature (PC power always is
allocated to port 0). If you don’t allocate a port, μARCS won’t manage power to the designated feature
and will not display its option during LCD Interactive Mode. Be careful—the allocated port must reflect
the physical connection. For instance, if you set MotionLampPort to 11, your PatrolBot’s LRF will turn ON
and OFF repeatedly every time your robot drives. Not good.
A second type specifies the port’s behavior when you first PWR ON PatrolBot, when the microcontroller
gets reset and when a client connects and disconnects from µARCS. Note that you may effect state
changes through the LCD Interactive Mode, as well.
The power state parameter for the embedded PC (PCPower) default is zero, in which case the PC is OFF
when PatrolBot’s power is first turned ON. If you power up the PC from the LCD, it will stay ON
through a microcontroller reset and all client connections. Similarly, set PCPower to one in order to have
the PC power ON during start up. The difference is that if you power OFF the PC and then reset the
microcontroller, the PC will start up again. In other words, the PC won’t maintain state through reset,
but will through client connections.
The LRF and auxiliary power states are more versatile. Similarly set their respective FLASH parameters
to 0 or 1 to have the power switches act identically to PCPower. Alternatively, set the state to 2 to force the
port OFF, or 3 to force the port ON after uC RESET. Finally, set the value to 4 to have the port power ON
when a client connects with µARCS and OFF when the client disconnects.
Power Board related ('p') FLASH parameters Keyword Type Default Description
TEMPTHRESHOLD byte 0 Set to degrees C at which analog temperature sensor will
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 82 of 96
trigger a system shutdown.
PDBPORT byte 1 Aux serial port 1−3 to which power distribution board
communicates with the microcontroller. (This is set at the
factory. Do not change.)
MOTIONLAMPPORT byte 12 Flashes while PatrolBot moves
FAULTLAMPPORT byte 0 Flashes if estop, ON if no client connection
BATTLAMPPORT byte 0 Flashes if low battery
PCPOWER byte 0 Set to 1 to start PC when PWR ON or reset
LRFPORT byte 11 Sets the port number for LRF power switch
LRFPOWER byte 2 Power state value 0−4; see description in text
AUX5VPORT byte 0 Power switch port allocation for Aux 5V
AUX5V byte 0 Power state value 0−4; see description in text
AUX12VPORT byte 0 Power switch port allocation for Aux 12V
AUX12V byte 0 Power state value 0−4; see description in text
AUX24VPORT byte 0 Power switch port allocation for Aux 24V
AUX24V byte 0 Power state value 0−4; see description in text
PID Parameters
The µARCS 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
µARCS uses the TicksMM and RevCount parameters to convert your platform-independent speed and
rotation commands—typically expressed in millimeters or degrees, respectively—into platform-
dependent units. And it uses the DriftFactor to compensate for tire difference.
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 one-half revolution 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.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 83 of 96
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.
The TicksMM and RevCount parameters affect the conversion of your motion command arguments into
platform-dependent values used by µARCS. Unlike previous controller software, µARCS also uses
TicksMM and RevCount to convert its internal measures into platform-independent position, heading and
velocity values reported back from the server, such as XPos and THPos. Accordingly, you’ll notice that
the respective ARIA client parameters have many conversion factors like DistConvFactor set to 1.0.
StallVal and StallCount
A µARCS 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.
Note that PatrolBot will consequently roll down a hill if it stalls along the way.
Bumpers
µARCS implements three FLASH parameters that specify states and numbers of front and rear bumper
segments. Set the FrontBumps and RearBumps parameters 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 in the standard SIP. Use the InvertBump FLASH parameter’s value to invert those bumper-related
Stall values, but not the hardware-related states reported in the IOpac. The FrontBumps and RearBumps
values also are reported near the end of the CONFIGpac.
PatrolBot comes with six bumper segments each front and rear. If for any reason you remove a bumper
from your robot, you MUST reset the associated FrontBumps or RearBumps FLASH value. Otherwise, the
robot may stall incessantly and ARIA won’t let you drive.
Use the BumpStall FLASH parameter to set the default for the robots behavior when one of its front
and/or rear bumper gets triggered. Normally, BumpStall is engaged for both front and rear (default value
of zero) bumper segments. Reset it to three to disengage bump stalls altogether; one to trigger stalls only
when the rear bumpers engage; or two for front bumps only.
BumpStalls occur only when the robot is traveling in the direction of the bump: a front bumper triggered
while traveling forward, or a rear bumper triggered when driving in reverse. You may over-ride the
BumpStall FLASH default with the BumpStall client command #44, although the command arguments are
the reverse: The command argument of zero disables the bumpstall behavior; one enables front only; two
rear only; and three for both bumpers. Your robot’s BumpStall behavior reverts to the FLASH default on
reset and up disconnection from the client.
Chapter 9: Robot Programming and Configuration
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 84 of 96
Appendix A: Internal Component Connection Diagram
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 85 of 96
Appendix A: Internal Component Connection
Diagram
Appendix A: Internal Component Connection Diagram
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 86 of 96
Appendix B: PCB Layouts
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 87 of 96
Figure 2. Example of IDC-type connector numbering (10-position, 2-row connector shown)
Figure 1. Example of Mini- and Micro-fit style connector numbering (6-position, 2-row connector shown)
Appendix B: PCB Layouts This Appendix to the Research PatrolBot (3rd Generation) User’s Guide diagrams internal interconnnections of the SH2-based microcontroller, I/O daughter card and Power-Distribution Board (PDB) for PatrolBot.
Two types of connectors are used. Note that IDC socket types use odd and even numbering on parallel rows; but Mini- and Microfit connectors use successive-position numbering. See the Figures 1 and 2 below for examples.
µARCS Microcontroller
Table 1. Power connector (3-position microfit)
Serial Ports
The “System Serial” port connects to the external MAINTAINENCE DSUB-9 serial port, and shares signal lines with the HOST port which connects to onboard computer COM1. Either serial ports may be used to connect client software to the microcontroller (see Chapter 9). To differentiate the source, HOST has signal lines for detecting an attached device (DTR pin 4) which automatically switches its signals. HOST also has signals for notifying the attached PC of low-power condition (DSR pin 6 and RI pin 9). The HOST serial connectors are wired DCE for direct connection (straight-through cable, not NULL-modem) to a standard PC serial port.
Appendix B: PCB Layouts
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 88 of 96
Table 1. HOST serial port (DSUB-9 socket)
* Shared signals on MAINTENANCE
Table 2. System, Aux1, Aux2 and Aux3 serial ports (5-poitions microfit sockets)
Encoders
Heading Correction Gyro
Table 4. Heading correction gyro connector (6-position microfit)
Temperature Sensor
Table 5. Temperature sensor connector (6-pos microfit)
Expansion I/O Connector
The expansion I/O header connects the microcontroller with the auxiliary I/O daughter board.
Table 6. Expansion I/O (54-pos 0.1 header)
Appendix B: PCB Layouts
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 89 of 96
Appendix B: PCB Layouts
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 90 of 96
PatrolBot Daughter Board (Auxiliary I/O)
Sonar
The Sonar signals connect to the sonar multiplexing board located near the sonar array. Only Sonar 2
currently is connected with a single multiplex board that supports the four sonar discs at the rear of
PatrolBot.
Table 7. Sonar connectors (2x10-pos microfits)
Bumpers
Bumper digital signals are pulled high internally.
Table 8. Bumpers (2x10-pos microfits)
Appendix B: PCB Layouts
Adept MobileRobots Research PatrolBot User’s Guide, Rev. A
Page 91 of 96
IRs
Typically used with breakbeam IRs (hence the label), any digital switch will do. Digital input signals are
pulled high internally.
Table 9. IR connector (10-pos microfit)
Power Distribution Board (PDB)