Pioneer Robotics Module Mobile User Manual

Gripper  
&
Experimenters Module  
Manual  
version 1.2  
 
Pioneer Gripper & Experimenter’s Module Manual version 1.2, August 1997.  
Contents  
Page  
1. INTRODUCTION  
1
1.1 Gripper and Experimenter’s Package  
1.1.1 Package Components  
1.1.2 User Supplied Components  
1
1
1
1.2 Basic Pioneer Platform  
2
1.3 The Gripper & Experimenter’s Module  
1.3.1 Gripper Description  
1.3.2 Experimenter’s Module Description  
2
2
4
1.4 Additional Resources  
1.4.1 Pioneer Web Software Archive  
1.4.2 Pioneer and Saphira Newsgroups  
1.4.3 Support  
5
5
5
6
2. INSTALLATION  
7
7
2.1.1 Step 1: Remove the Console  
2.1.2 Step 2: Remove Microcontroller from Console  
2.1.3 Step 3: Replace the PSOS EPROM  
2.1.4 Step 4 Reattach Microcontroller to Console  
2.1.5 Step 5 Remove Nose  
7
8
9
9
2.1.6 Step 6 Connect Cables  
9
2.1.7 Step 7 Attach Gripper/Experimenter’s Module to Pioneer  
2.1.8 Step 8 Re-Attach the Console Cables  
2.1.9 Step 9 Re-Attach the Console  
9
10  
10  
10  
2.1.10 Step 10 Test the Assembly  
3. GRIPPER OPERATION AND PROGRAMMING  
3.1 Gripper Self Test  
11  
11  
11  
12  
3.2 PSOS Server Information Packet  
3.3 Gripper I/O  
3.4 Gripper Programming  
3.4.1 Direct Control via Digital Ports  
3.4.2 State Commands  
12  
13  
13  
iii  
 
4. EXPERIMENTER’S MODULE  
15  
4.1 I/O Ports  
4.1.1 Digin: Self-Test  
4.1.2 Digout: Self-Test  
15  
17  
17  
4.2 Programming the Digital I/O Ports  
4.3 Programming the A/D Ports  
4.4 Programming the Speaker  
18  
18  
18  
5. MAINTENANCE & REPAIR  
5.1 Drive Lubrication  
19  
19  
19  
19  
5.2 Gripper Belt Adjustments  
5.3 Factory Repairs  
6. APPENDIX A  
20  
24  
Example C Program Demonstrates Gripper and Speaker Functions  
7. APPENDIX B  
Pioneer Server Information Packet  
8. INDEX  
25  
28  
WARRANTY & LIABILITIES  
iv  
 
Gripper & Experimenter’s Module  
1. Introduction  
ongratulations on your purchase and welcome to the rapidly  
growing community of researchers, developers, and  
enthusiasts of the Pioneer 1 Mobile Robot.  
C
This Pioneer 1 Gripper & Experimenter’s Module Manual  
provides the general and technical details you will need to install  
and operate your new Gripper and to develop your own  
attachments and enhancements for the Pioneer 1 Mobile Robot with the integrated  
Experimenter’s Module.  
We also encourage you to use these companion resources that come with your  
Pioneer:  
Pioneer Operation Manual  
Saphira Software Manual  
Pioneer Registration & Account Sheet  
Personal account for the http://css.activmedia.comInternet server  
Pioneer- and [email protected] support newsgroups  
2.1 Gripper and Experimenter’s Package  
Our experienced robotics manufacturing staff put your Pioneer 1 Gripper and  
Experimenter’s Module through a “burn-in” period and carefully tested them before we  
shipped the hardware and software to you. Our care extends beyond: Besides the  
companion resources listed above that bring the whole community of Pioneer to you, we  
warranty the Gripper and Experimenter’s Module against mechanical and electronic parts  
and labor defects for 90 days. All of these precautions ensure that you have many years  
to enjoy your new accessories for the Pioneer 1 Mobile Robot.  
Even though we’ve made every effort to make your package complete, please check  
the components once again after you unpack it from the shipping crate.  
2.1.1 Package Components  
Pioneer 1 Gripper & Experimenter’s Module Assembly  
32K EPROM containing latest PSOS  
Gripper & Experimenter’s Module Manual  
2.1.2 User Supplied Components  
Pioneer 1 Mobile Robot  
Set of hex wrenches that accompanied original robot  
Small, flat-bladed screwdriver  
Optional “chip-puller” tool  
1
 
Overview  
2.2 Basic Pioneer Platform  
Pioneer 1 is a small, mobile robot developed by Kurt Konolige of SRI International  
and Grinnell More of Real World Interface, Inc., and is available exclusively through  
ActivMedia, Inc.  
The basic Pioneer 1 Mobile platform contains all of the components for sensing and  
navigation in a real-world environment, including battery power, drive motors and  
wheels, position encoders, and ultrasonic sonar transducers—all managed via an  
MC68HC11-based microcontroller board (Figure 1-1).  
Figure 1-1. Basic components of the Pioneer 1.  
The Pioneer 1 also comes with the Pioneer Server Operating System (PSOS) software  
on EPROM for easy access and control of the robot’s systems, an RS232 serial port for  
communication between the robot and other computers, as well as a variety of expansion  
I/O ports for optional and custom attachments.  
2.3 The Gripper & Experimenter’s Module  
The Pioneer 1 Experimenter’s Module essentially is a circuit board and accessory  
electronics that extend the capabilities of the Pioneer 1 microcontroller’s standard I/O  
ports, including electrical support for the Pioneer Gripper. The Experimenter’s Module is  
part of the Pioneer Gripper assembly, which together replace the nose the of basic robot  
(see Figures 1-1 and 1-2 and Chapter 2, Installation).  
2.3.1 Gripper Description  
The Pioneer Gripper is a simple, yet powerful 2-DOF robotic manipulator and sensor  
(Figure 1-2 and Figure 1-3). Driven by a single, reversible-DC servo-motor under control  
of the Pioneer microcontroller, it operates between two states: down/open and up/closed.  
2
 
Gripper & Experimenter’s Module  
Figure 1-2 Pioneer Gripper side view.  
Figure 1-3. Pioneer Gripper top view  
In its fully down/open state, the two 2.5 inch (5cm) tall by 3.5 inch (9.5cm) deep  
Gripper paddles (each with 0.5cm foam pads on the inside) are 8.5 inches (21.5cm) apart  
and ride 1 inch (2.3cm) off the floor. The paddles extend out from the front robot’s main  
body 3 inches (10cm) beyond the console edge.  
3
 
Overview  
In transition from the fully down/open position to their up/closed state, the Gripper  
paddles close together horizontally until they pinch an object or close on themselves. At  
that point, the entire Bar and Gripper Assembly rises up vertically—with or without an  
object in its grasp. Under software control, the Gripper then rises to a special “carry”  
position or all the way to the top of the Gripper case 4 inches (10.5 cm) off the floor to its  
closed/up position. It is not normally possible to open the Gripper at this state.  
The reverse cycle lowers the Gripper Bar and paddles to the bottom of the assembly,  
whereupon the paddles separate, dropping any contents, and open to their fully  
down/open position.  
Two “bump” switches—one on each paddle tip—sense contact with objects. IR-based  
“break beams” embedded at the front and back of each paddle sense objects between and  
within the Gripper’s grasp.  
Three other switches sense the Gripper’s paddle positions. One switch inside the Bar is  
on when the Gripper paddles are in their fully open position. Another at the top of the  
Bar toggles on when the Gripper reaches its fully up position. A third “carry” switch,  
located behind the Bar, indicates when the Gripper is between 1.5 and 2 inches (4-5cm)  
off the floor.  
2.3.2 Experimenter’s Module Description  
The Experimenter’s Module includes several additional features that users may enable  
through the Pioneer I/O controls: There are green “directional” LEDs embedded in the  
tip of each paddle and at the top of each side, facing front on the Gripper’s back plate.  
On the left side of the Gripper, there is a speaker, an SPST on-off slide switch, a  
momentary push-button switch, and another LED (amber).  
Figure 1-4. Pioneer 1 Experimenter’s Module  
Inside and on the Experimenter’s Module is a bank of eight RC-servo controller ports.  
Layout/solder pads with DC power and I/O port connections supplied by the Pioneer  
microcontroller also are on the Module card, as well as eight multiplexed analog-to-  
4
 
Gripper & Experimenter’s Module  
digital ports. There also is circuitry and a connector for an as-yet-implemented remote-  
controller IR.  
A complete list of available I/O ports and connections can be found in Chapter 4,  
Experiment’s Module.  
2.4 Additional Resources  
Every Pioneer 1 customer gets three additional and valuable resources: a private  
account on ActivMedia’s Internet server for downloading Pioneer software, updates, and  
manuals, access to RWI’s private robotics newsgroups, and E-mail access to the Pioneer  
1 support team.  
2.4.1 Pioneer Web Software Archive  
We have a World Wide Web server connected continuously to the Internet where  
customers may obtain Pioneer 1 software and support materials. Point your favorite Web  
browser to:  
Some access areas are restricted to licensed customers, including Pioneer owners. To  
gain restricted access, use the username and password that are written on the Pioneer 1  
Registration & Account Sheet that accompanied your robot.  
2.4.2 Pioneer and Saphira Newsgroups  
RWI also maintains a special E-mail-based newsgroup for Pioneer 1 owners and  
Saphira programmers to share ideas, software, and questions. We strongly encourage you  
to sign up. For details, send E-mail:  
From: <your return E-mail address goes here>  
Subject: help (Subject: always ignored)  
(body of message—choose one or more commands:)  
help  
lists  
(returns instructions)  
(returns list of newsgroups)  
subscribe <list name here>  
unsubscribe <list name here>  
end  
(waddayatink?)  
(ditto)  
5
 
Overview  
2.4.3 Support  
Have a problem? Can’t find the answer in this or any of the accompanying manuals?  
Know a way that we might improve Pioneer 1? Share your thoughts and questions  
directly with us:  
Your message goes to our team of Pioneer developers who will help you directly or  
point you to where you may find help. Because this is a support option, not a general-  
interest newsgroup like Pioneer-users described above, we must reserve the option to  
reply only to questions about bugs or problems with Pioneer 1 and its accessories.  
6
 
Gripper & Experimenter’s Module  
3. Installation  
lease read through this chapter carefully before you attempt to attach the Gripper  
& Experimenter’s Module to your Pioneer 1 Mobile Robot. If for any reason you  
do not wish to perform the work yourself, contact RWI and make arrangements to  
P
have the assembly installed at the factory.  
On the other hand, skip this chapter altogether if your Pioneer 1 Mobile Robot came  
with the Gripper & Experimenter’s Module Assembly already attached.  
Turn OFF the Pioneer robot’s Main Power before installing the  
Gripper & Experimenter’s Module.  
3.1.1 Step 1: Remove the Console  
The Gripper & Experimenter’s Module Assembly’s various ports and accessories  
connect to the Pioneer microcontroller’s power and expansion I/O. Also, software  
support is provided through a special Pioneer Server Operating System (PSOS), which is  
stored on a 32K EPROM mounted on the microcontroller. Accordingly, to install the  
Gripper/Experimenter’s Module and new PSOS, you must first disassemble the Pioneer  
Console.  
With one of the hex wrenches that came with your robot, remove the six outermost  
screws that secure the top plate to the Console—two on the front (including camera, if  
attached) and two on each side.  
If one is attached, carefully unplug and remove the Pioneer camera from the Console  
and back panel. Also unscrew and remove the radio modem antenna, if attached.  
Twist counter-clockwise to remove, and  
twist clockwise to insert the various screws.  
Gently lift the Console top plate to expose the microcontroller board, which is  
mounted to its underside, and the various wire harnesses attached to it. Being careful to  
not handle the attached microcontroller card, remove the wire connectors on both sides of  
the card from their sockets, freeing the Console top plate with the microcontroller card  
attached.  
3.1.2 Step 2: Remove Microcontroller from Console  
Lay the Console top plate face up, with the Pioneer 1 microcontroller card down, onto  
a clean, soft surface (first section of the Sunday Times is a great pad). Locate and remove  
the six hex screws—one in each side and two in the middle—which secure the  
microcontroller board to the Console top plate. Separate the parts. The microcontroller  
board should be exposed now, face-up on the table (Figure 2-1).  
7
 
Installation  
Figure 2-1. Pioneer 1 microcontroller card  
3.1.3 Step 3: Replace the  
PSOS EPROM  
Locate the EPROM/SRAM socket  
(Figure 2-2) on the microcontroller  
card and note that the Pin 1 locator  
notch on its case is towards the outer  
edge of the board—you’ll want to  
similarly position the new PSOS  
EPROM.  
Pry or pull out the socketed  
EPROM chip. We’d prefer that you  
use a special “chip-puller” tool, but  
if one isn’t handy, use a thin, flat-  
bladed screwdriver and gently pry  
up each end of the chip until it lifts  
out of the socket freely.  
Figure 2-2. Location of the EPROM socket  
EPROM chips are sensitive to static electricity. Be careful to handle  
them by their case and store them on conductive foam. Don’t touch  
the pins with your fingers, and be particularly careful not to bend  
any of their 28 delicate connector pins.  
Now carefully remove the new PSOS EPROM that came with the Gripper/  
Experimenter’s Module from its protective foam and insert it into the EPROM socket. Be  
sure to line up the Pin 1 notch and insert the pins in their respective socket holes. Then  
8
 
Gripper & Experimenter’s Module  
press carefully, but firmly down on the chip with your thumb or forefinger to seat it  
tightly in the socket.  
3.1.4 Step 4 Reattach Microcontroller to Console  
By reversing the procedures you took in Step 2 and using the same tools and screws,  
reattach the Pioneer microcontroller to the Console top plate. Set the entire assembly  
aside for the moment in a safe place.  
3.1.5 Step 5 Remove Nose  
The Gripper/Experimenter’s Module replaces the Pioneer’s nose. Use the hex  
wrenches that came with your robot to remove the six screws that secure the Nose to the  
Pioneer Deck and Body: four on top of the Deck and one on each side at the bottom.  
Store the Nose away.  
3.1.6 Step 6 Connect Cables  
Place the Gripper/Experimenter’s assembly on top of a table close to and in front of  
the Pioneer, with the Module card and attached flat ribbon cables facing the robot’s  
Nose. Push those three cables’ free connector ends through the opening in the nose and  
up into the Console. Similarly, push the Pioneer’s power cable through and out the Nose.  
Plug the power cable attached to the Pioneer robot into its new 12-pin socket on the  
Experimenter’s Module just below the accessory’s power cable and socket. The cable’s  
yellow wires should point towards the center of the Module.  
CAUTION: HOT POWER CABLE!  
The Pioneer power cable is connected, unswitched, directly to the  
battery. Be careful to align the connector with its socket.  
Misalignment may cause damage to the Pioneer microcontroller or  
to the Experimenter’s Module.  
You may find that first unplugging the new power cable connector from its socket on  
the Module will expose the lower socket for easier attachment of the robot’s power  
connector. Do re-insert the new power cable from the Module back into its socket before  
proceeding with the installation. Do not switch the connectors, plugging the robot’s  
power cable into the upper socket—otherwise, no damage will occur, but the Gripper will  
activate without provocation.  
3.1.7 Step 7 Attach Gripper/Experimenter’s Module to Pioneer  
Use the hex wrenches that came with your robot and the screws you removed from the  
robot’s Nose to attach the Gripper/Experimenter’s Module to the Deck (4 screws; no  
screws attach to the Pioneer Body, as they do for the Nose).  
9
 
Installation  
3.1.8 Step 8 Re-Attach the Console Cables  
Carefully handling the Console top plate with attached microcontroller by its edges,  
reattach the various cables, front and back. Although the order is not critical, for  
convenience we recommend attaching the front cables first the sonar and drive (left and  
right) cables.  
Then, to the sockets on the rear of the microcontroller, attach the 4-pin serial  
connector, the new 16-pin Nose I/O and 26-pin General I/O connectors, and finally the  
new power connector to their respective sockets.  
3.1.9 Step 9 Re-Attach the Console  
Align the Console top-plate with microcontroller on top the Console, and using the  
tools and the screws from Step 2, reattach it to the robot body. Reattach the camera to the  
front of the Console as well, if it is with your robot. Then plug the camera power and  
signal cables back into their respective sockets on the Console back plate, and screw in  
the antenna through the hole in the Console top plate and into the radio modem beneath.  
3.1.10 Step 10 Test the Assembly  
Time to switch on the Pioneer’s Main Power and sniff for blue smoke. If sparks don’t  
fly and smoke is absent, the Pioneer will automatically exercise it’s new Gripper and  
finish with three loud and firm beeps through the newly attached speaker—not that weak,  
sniveling old “beep, beep” of the Gripper-less Pioneer, mind you, so keep sensitive  
babies and weaklings clear.  
You’ve completed assembly and now are ready to run your Pioneer’s brand new  
gadgets. And for your troubles, you get two loose screws left over (they are the two  
round headed ones that came out of the bottom of the Nose).  
10  
 
Gripper & Experimenter’s Module  
4. Gripper Operation and Programming  
he Pioneer Gripper comes fully integrated with the robot’s systems and software.  
The latest versions of PSOS (4.2+) contains support for direct control of the  
Pioneer’s onboard I/O that run the Gripper functions, as well as state-based  
T
software control routines that manage the Gripper functions for you. In turn, these PSOS  
functions are supported in Saphira (version 5.3+), the Pioneer Application Interface  
(PAI), and Pioneer-LOGO. Consult the various Pioneer-related Operation and Software  
Manuals for more details about PSOS, Saphira, PAI, and P-LOGO.  
4.1 Gripper Self Test  
Gripper-enabled versions of PSOS come with test routines for all the main functions  
of the robot. This section describes the Gripper’s self-test. Consult the Pioneer 1  
Operations and Software Manual for a detailed description of the location and operation  
of the various Console function buttons and switches and for how to test the drive and  
I/O systems, sonars, and processor.  
Make sure the Pioneer motors are disengaged,  
if you perform the Gripper self-test on a table top.  
The Gripper self-test happens whenever you turn the Main Power on or press the Reset  
button. The exercise first drives the Gripper Bar and paddles to their fully down and open  
state, and then back up to their fully up and closed state.  
Always place Pioneer 1 on the floor and have everyone step back  
before engaging the motors.  
You may also test the Gripper’s open, up, and carry state switches. See the  
Experimenter’s Module, Digin I/O test mode section in Chapter 4 for details.  
4.2 PSOS Server Information Packet  
PSOS regularly sends Pioneer server information to a connected client over the serial  
communication line. Included in that Server Information Packet are the various states and  
readings from the Gripper and the Experimenter’s Module I/O. A summary of the PSOS  
Server Information Packet is in the Appendix B. These various readings may be captured  
and individually read by the client, or you may use the various Saphira, PAI, or P-LOGO  
functions to manage the packet and read the values for you.  
11  
 
Gripper Operation and Programming  
4.3 Gripper I/O  
The Gripper’s single drive motor is controlled through two digital output lines and  
under control of the microcontroller CPU: Output port OD0 controls the direction of  
rotation and OD1 enables/disables the motor.  
The act of gripping and raising objects is mechanical and dependent on the Gripper’s  
position—you cannot independently operate the gripper paddles. Rather, you drive the  
motor in one direction or the other. The paddles automatically open when the Gripper is  
being lowered and reaches the bottom of the assembly. In reverse, the paddles  
automatically close upon themselves or an object and then rise.  
Switches on top (“up”), inside at one end of the Bar (“open”), and behind the Bar  
(“carry”) indicate the various Gripper (G) positions (Table 3-1). In addition, bump  
switches on the tips of each paddle indicate collisions, and break beams (b-b) inside the  
paddles indicate the position of an object within the grasp. We identify the various I/O  
ports and connections by name in Table 3-1. Consult the Tables in Chapter 5 for their pin  
locations on the General and Nose I/O connectors.  
Table 3-1. Gripper motor controls and state switches  
Name  
G.motor  
G.motor  
top  
I/O port  
OD0  
OD1  
ID0  
Meanings  
rotate 1=down; 0=up  
1=enable  
0= G at top  
carry  
ID1  
0=paddles closed, G 4-5cm above floor  
0=paddles fully open  
1=object inside  
open  
ID2  
inner b-b  
outer b-b  
bumps  
ID3  
ID4  
1=object inside  
ID5  
0=paddle tip touching object  
4.4 Gripper Programming  
You can directly control the Gripper motor through the PSOS sfCOMDIGOUT  
command and byte parameters. PSOS also will accept a new state command,  
sfCOMGRIPPER, to achieve a gripper state, and sets the gripper motor bits  
appropriately. There also are some Saphira convenience functions defined for getting  
and setting the gripper state. For details on programming PSOS directly and through  
Saphira, consult the Saphira Software and Pioneer Operations and Software Manuals.  
sfCOMDIGOUT control of Pioneer digital output ports has been  
changed in PSOS version 4.2 and later.  
4.4.1 Direct Control via Digital Ports  
12  
 
Gripper & Experimenter’s Module  
The revised PSOS 4.2 (and later) sfCOMDIGOUT command has a two-byte  
argument: The high byte is a mask of those output bits you want to change, and the low  
byte is the bit pattern for the bits to change. This way, you don’t need to know the state  
of the port(s) you want to change; just the state in which you want them to be, and you  
won’t change the state of any of the other ports.  
The Saphira function, sfRobotCom2Bytes, packages the sfCOMDIGOUT command  
and values for you. For example:  
sfRobotCom2Bytes(sfCOMDIGOUT, 0x20, 0x00)  
resets bit 5 (OD0=0), and leaves everything else alone.  
Accordingly, make the Gripper go up:  
sfRobotCom2Bytes(sfCOMDIGOUT, 0x3, 0x3)  
Go down:  
sfRobotCom2Bytes(sfCOMDIGOUT, 0x3, 0x2)  
And stop:  
sfRobotCom2Bytes(sfCOMDIGOUT, 0x2, 0x00)  
You have to monitor the various Gripper state switches to determine if and when it  
achieves a particular state—fully down with paddles open, for instance—when setting the  
Gripper’s control I/O ports directly (see below).  
4.4.2 State Commands  
A more intelligent means of controlling the Gripper is through PSOS  
sfCOMGRIPPER command and state parameters. These automatically manage the  
Gripper so to achieve some pre-defined state. PSOS also monitors and reports the  
Gripper’s progress towards that state, saving you some coding time and effort. And the  
state commands use a timeout feature to protect against unfortunate stalls or hang-ups.  
To operate the Gripper this way, you simply issue a state command to the robot. You  
don’t need to, but you may monitor the Gripper’s progress towards the state via bits 0  
and 2 of the digout part of the server information packet (“sfROBOT.digoutput”). During  
transitions, the state returned by the robot is set to sfGRIPMOVING. After successfully  
achieving a state, the state returned is that state. If there is a time-out (6 seconds) without  
achieving the state, the return state is set to sfGRIPOFF.  
The various states and values are included in the script at the end of this chapter and  
that you may including in your own C programs.  
There also are several Saphira convenience functions defined for gripper states:  
int sfGripperGetState (void)  
Returns the robot gripper state setpoint  
void sfGripperSetState (int state)  
Sets the robot gripper state setpoint  
13  
 
Gripper Operation and Programming  
Table 3-2. Gripper functions  
/*************************************************************  
* Gripper functions --- For setting and retrieving gripper states  
* States are sfGRIPUP, sfGRIPDOWN, sfGRIPMIDDLE, sfGRIPOFF,  
*
*
*
*
*
*
and sfGRIPMOVING  
sfGRIPMOVING occurs only during transitions between states  
sfGRIPOFF can be set by the user, which means no state control  
sfGRIPOFF is set by the robot to indicate a timeout (6  
seconds) if a state is not achieved  
**************************************************************/  
/* states */  
#define sfGRIPOFF  
#define sfGRIPUP  
0
1
#define sfGRIPMOVING 2  
#define sfGRIPMIDDLE 4  
#define sfGRIPDOWN 5  
#define sfCOMGRIPPER 33  
/* gripper control bits (DIGOUTPUT) */  
#define sfGRIPSTATEMASK 0x05 /* picks out state bits in DIGOUTPUT */  
#define sfGRIPMOTORBIT 0x02 /* motor bit, 0 is off, 1 is on */  
#define sfGRIPDIRBIT 0x01 /* direction bit, 0 is down, 1 is up */  
#define sfSPEAKERBIT 0x04  
#define sfRIGHTLEDBIT 0x08 /* 0 is off, 1 is on */  
#define sfLEFTLEDBIT 0x10  
/* gripper sense bits (DIGINPUT) */  
#define sfGRIPTOPBIT 0x01 /* top limit switch, 0 if hit */  
#define sfGRIPMIDBIT 0x02 /* carry switch, 0 if hit */  
#define sfGRIPBOTBIT 0x04 /*open limit switch, 0 if hit */  
#define sfGRIPINIRBIT 0x08 /* inner break beam, 1 is beam break */  
#define sfGRIPOUTIRBIT 0x10 /* outer break beam, 1 is beam break */  
#define sfGRIPBUMPBIT 0x20 /* gripper bumpers, 0 is bump */  
#define sfGRIPMOMBIT 0x40 /* momentary switch, 0 is pressed */  
#define sfGRIPSPSTBIT 0x80 /* SPST switch, 0 is up */  
14  
 
Gripper & Experimenter’s Module  
5. Experimenter’s Module  
esides hosting the Gripper, the Experimenter’s Module brings several new  
features to the Pioneer 1 Mobile Robot, and provides you with a platform for  
adding your own robotics options and features (Figure 4-1):  
B
Easy access to Pioneer digital I/O, A/D, and timer functions  
Speaker with new PSOS “say” command  
User-controlled LEDs and switches  
8 RC-servo ports (RC0-7)  
8 Analog-to-Digital Input Ports (AN0-7)  
Range-finding IR connector  
Figure 4-1. Experimenter’s Module.  
5.1 I/O Ports  
By cables connected to the Pioneer microcontroller, the Experimenter’s Module brings  
both the Nose and General I/O expansion ports onto a single, open platform. All of ports  
now appear as solderable connections alongside a components pad, complete with power  
connections (Figure 4-1).  
The I/O ports and their uses are summarized in Table 4-1. The Vcc ports supply logic  
power, so use them for that purpose only. The Pioneer microcontroller has a single A/D  
port that appears on both the General I/O connector and Nose I/O connector. This port is  
multiplexed into eight A/D ports on the Experimenter’s platform. And special circuitry  
on the Experimenter’s board lets you control up to eight separate RC servos.  
15  
 
Experimenter’s Module  
Note also that the Nose (N) 16-pin and the General (G) 26-pin I/O connectors are  
numbered odd pins on top and even pins on the bottom; not top, left to right, then bottom  
left to right. The pinouts for the Nose connector, for example, are:  
1
2
3
4
5
6
7
8
9
11 13 15  
12 14 16  
10  
Table 4-1. Pioneer I/O ports and connections  
Label  
Connector/Pin  
Use  
Digital Inputs  
ID0  
ID1  
ID2  
ID3  
ID4  
ID5  
ID6  
ID7  
G7  
Gripper top switch  
G9  
Gripper carry switch  
Gripper open switch  
Paddle inner break beam  
Paddle outer break beam  
Paddle bump switches  
User push-button switch  
User slide switch  
G11  
G13  
G15  
N5  
N3  
N1  
Digital Outputs  
OD0  
OD1  
OD2  
OD3  
OD4  
OD5  
OD6  
OD7  
G17  
G19  
G21  
G23  
G25  
N13  
N11  
N9  
Gripper motor rotation direction  
Gripper motor enable  
User LED (amber)  
Right paddle and front LEDs  
Left paddle and front LEDs  
Speaker  
User servo motor logic  
User servo motor logic  
Miscellaneous  
A/D  
IDT  
ODT  
N7,G1  
Analog-to-digital input  
Timer input  
G3  
N15  
Timer output  
Logic Power  
Ground  
N2,4,6,8,14,16; G2,4,10,12,14,16,18,20,22,24,26  
+5 VDC N10,12; G6,8  
16  
 
Gripper & Experimenter’s Module  
5.1.1 Digin: Self-Test  
You may investigate the operation of the digital input and output ports through their  
PSOS self-test modes.  
After starting up your Pioneer, press the black Function button once to enable self-test  
mode. The LCD message should now display:  
BREAK, Boot to r  
eturn  
vv.vV*  
indicating that Pioneer has entered self-test mode. (Note that the voltage V reading will  
vary.) You may press the Reset button at any time to disable the self-test, and you may  
press the Function button to skip any of the self-tests.  
Skip to the digital input test by pressing the Function button 3 more times. The LCD  
should now read:  
Digin: E6 BOOT  
to skip  
vv.vV*  
The E6 may vary—it is the hexadecimal representation of the various digital input  
ports, described in Table 4-1 and in the Gripper Chapter 4. Decode that indicator  
according to the bit rule in Table 4-2.  
For example, if you press the user push-button switch, the E6 value would change to  
A6. See why?  
Table 4-2. Bits and meanings of Digin: self-test value:  
bit  
1=  
7
6
5
4
3
2
1
0
user  
user  
push-  
button  
released  
paddles  
bump  
free  
outer b-b  
clear  
inner b-b  
clear  
paddles gripper gripper  
slide-sw  
up  
not  
below/  
above  
4-5cm  
not at  
top  
open  
wide  
user  
slide-sw  
down  
user  
paddles  
bump  
pressed  
outer b-b  
obstruc-  
ted  
inner b-b  
obstruc-  
ted  
paddles gripper gripper  
0=  
push-  
button  
pressed  
wide  
open  
up 4-  
5cm  
at top  
gripper  
at top  
5.1.2 Digout: Self-Test  
Press the black Function button on the Console once more to set the Pioneer into a  
self-test of its digital outputs. The test is pretty braindead: It simply toggles the odd and  
even output ports alternately off and on: AA, 55, AA, 55, and so on. Watch the LEDs  
flash on and off, the speaker click, and the Gripper twitch.  
17  
 
Experimenter’s Module  
5.2 Programming the Digital I/O Ports  
Use the sfCOMDIGOUT PSOS command and the related Saphira convenience  
command to manage the various digital output ports. They are described in detail in the  
previous chapter. (PAI and P-LOGO support similar commands, too.)  
For example, to turn the right LED on, use:  
sfRobotCom2Bytes(sfCOMDIGOUT, sfRIGHTLEDBIT,  
sfRIGHTLEDBIT)  
Or alternatively, specify the state of an LED:  
void sfGripperSetLed(int which, int state)  
for which=sfLEFT or sfRIGHT, and state=sfON or sfOFF.  
5.3 Programming the A/D Ports  
The eight analog-to-digital (A/D) ports on the Experimenter’s Module (AN0-7) are  
multiplexed from a single A/D port on the Pioneer 1 microcontroller. Hence, only one  
port may be read at a time, although all eight ports may connect to individual sources.  
Each AN port accepts a 0-5VDC analog input and outputs a proportionally related,  
single byte value 0-255. Use the digital output ports OD5-7 to address which port PSOS  
will read and return as the A/D value in the Server Information Packet (section 3.2, PSOS  
Server Information Packet).  
For example, the following Saphira command addresses the AN4 port by masking the  
OD5-7 ports, setting OD7, and resetting OD5 and OD6: (remaining output ports remain  
untouched:  
sfRobotCom2Bytes(sfCOMDIGOUT, 0xE0, 0x80)  
5.4 Programming the Speaker  
The latest PSOS implements a new command called SAY, which plays a sequence of  
up to 20 notes through the Experimenter’s Module speaker. Now your Pioneer will be  
humming a different tune!  
The SAY command (number 15) has two arguments: a string up to 40 bytes long, and  
the integer number of actual bytes in the string:  
sfRobotComStrn(sfCOMSAY, str, n)  
The string is comprised of duration and tone pairs; the duration byte is the number of  
20 millisecond increments the following tone value half-cycle times—in 150  
microsecond increments—should be played through the speaker.  
For example, to play two short, high beeps using the Saphira equivalent command:  
void sfPlayToneString ("\010\002\010\000\010\002", 6)  
18  
 
Gripper & Experimenter’s Module  
6. Maintenance & Repair  
he Pioneer Gripper is built to last a lifetime and requires little maintenance.  
T
6.1 Drive Lubrication  
An occasional drop or two of oil on the guide rails is a very good idea. Place some  
thin, household oil on a Q-Tip or similar applicator, and rub along the rails. Then start up  
the Pioneer to exercise the Gripper and spread the lubricant.  
6.2 Gripper Belt Adjustments  
The Gripper’s drive belts will stretch with use and may need to be tightened  
occasionally. We designed them to make that process easy.  
Put the Gripper into its fully up position—its position after completing the self test. At  
the bottom of the Gripper assembly, you can see an aluminum gear with a vertical belt  
wrapped around it. Notice that it is fastened through a curved slot in the Gripper casing,  
and that it has a flat-bladed screwdriver slot?  
Do not remove the screw, but loosen it enough so that it will slide in that slot. (You  
may need to hold the fastening bolt behind the slot with pliers or a nut-driver so you can  
loosen the gear.) With your thumb, press down on the gear inside the belt until the belt is  
fairly taut, but not “high strung”, then tighten the screw to hold the gear in place. Look  
inside the Gripper Bar. On the left side facing you (right side of the robot) is another belt  
and gear, similar to the up/down belt. This gear, too, has a screwdriver slot, which you  
loosen to tighten the belt.  
6.3 Factory Repairs  
If you are having hardware problems with your Pioneer 1 and, after reading this  
manual, you are satisfied that it needs repair, here’s who to contact:  
(603) 532-6901 fax  
In the body of your E-mail or fax message, describe the problem in as much detail as  
possible. Also include your name, E-mail and mail addresses, as well as phone and fax  
numbers, and when and how we can best contact you (we will assume E-mail is the best  
manner, unless otherwise notified).  
We will try and resolve the problem through communication. If the robot must be  
returned to the factory for repair, obtain a shipping and repair authorization code and  
shipping details from us first. We are not responsible for shipping damage or loss.  
19  
 
7. Appendix A  
Example C Program Demonstrates Gripper  
and Speaker Functions  
/* ################################################################  
* gripper.c --- Saphira-based functions for controlling the gripper and speaker  
*#################################################################  
** Copyright 1997 by Kurt Konolige  
**  
** The author hereby grants to SRI permission to use this software.  
** The author also grants to SRI permission to distribute this software  
** to schools for non-commercial educational use only.  
**  
** The author hereby grants to other individuals or organizations  
** permission to use this software for non-commercial  
** educational use only. This software may not be distributed to others  
** except by SRI, under the conditions above.  
**  
** Other than these cases, no part of this software may be used or  
** distributed without written permission of the author.  
**  
** Neither the author nor SRI make any representations about the  
** suitability of this software for any purpose. It is provided  
** "as is" without express or implied warranty.  
**  
** Kurt Konolige  
** Senior Computer Scientist  
** SRI International  
** 333 Ravenswood Avenue  
** Menlo Park, CA 94025  
**  
**/  
#include "saphira.h"  
/*  
* New comm function --- writes two bytes as argument  
*/  
(continued)  
20  
 
Gripper & Experimenter’s Module  
void  
sfRobotCom2Bytes(int com, int high, int low)  
{
sfRobotComInt(com, ((high & 0xff)<<8) + (low & 0xff));  
}
/*************************************************************  
* Speaker functions -- play a tone string  
*
* Format of string is L1 T1 L2 T2 .... Ln Tn  
* where Li is length of tone i in 20ms increments  
* and Ti is tone half-cycle time in 150us increments  
*
* Max length of string is 40 bytes (20 tones)  
*
**************************************************************/  
void  
sfPlayToneString(char *str, int n)  
{
if (n > 40) n = 40;  
sfRobotComStrn(sfCOMSAY, str, n);  
}
/*************************************************************  
* Gripper functions --- set and retrieve gripper state  
*
* States are sfUP, sfDOWN, sfMIDDLE, sfOFF, and sfMOVING  
*
*
*
*
sfMOVING occurs only during transitions between states  
sfOFF can be set by the user, which means no state control  
sfOFF can be set by the robot to indicate a timeout  
**************************************************************/  
/* states */  
#define sfGRIPOFF  
#define sfGRIPUP  
0
1
#define sfGRIPMOVING 2  
#define sfGRIPMIDDLE 4  
#define sfGRIPDOWN 5  
#define sfCOMGRIPPER 33  
(continued)  
21  
 
/* gripper control bits (DIGOUTPUT) */  
#define sfGRIPSTATEMASK 0x05 /* picks out state bits in DIGOUTPUT */  
#define sfGRIPMOTORBIT 0x02 /* motor bit, 0 is off, 1 is on */  
#define sfGRIPDIRBIT 0x01 /* direction bit, 0 is down, 1 is up */  
#define sfSPEAKERBIT 0x04  
#define sfRIGHTLEDBIT 0x08 /* 0 is off, 1 is on */  
#define sfLEFTLEDBIT 0x10  
/* gripper sense bits (DIGINPUT) */  
#define sfGRIPTOPBIT 0x01 /* top limit, 0 if hit */  
#define sfGRIPMIDBIT 0x02 /* mid-level, 0 if hit */  
#define sfGRIPBOTBIT 0x04 /* bottom limit, 0 if hit */  
#define sfGRIPINIRBIT 0x08 /* inner IR, 0 is beam break */  
#define sfGRIPOUTIRBIT 0x10 /* outer IR */  
#define sfGRIPBUMPBIT 0x20 /* gripper bumpers, 0 is bump */  
#define sfGRIPMOMBIT 0x40 /* momentary switch, 0 is pressed */  
#define sfGRIPSPSTBIT 0x80 /* SPST switch, 0 is up */  
int  
/* returns the robot gripper state setpoint */  
sfGripperGetState(void)  
{
if (flakey.digoutput & sfGRIPMOTORBIT)  
return sfMOVING;  
else  
return flakey.digoutput & sfGRIPSTATEMASK;  
}
void  
/* sets robot gripper state setpoint */  
sfGripperSetState(int state)  
{
sfRobotComInt(sfCOMGRIPPER, state & sfGRIPSTATEMASK);  
}
void  
/* sfLEFT, sfRIGHT, sfON, sfOFF */  
sfGripperSetLed(int which, int state)  
{
switch(which)  
{
case sfLEFT:  
which = sfLEFTLEDBIT;  
break;  
(continued)  
22  
 
Gripper & Experimenter’s Module  
case sfRIGHT:  
which = sfRIGHTLEDBIT;  
break;  
default:  
which = 0;  
}
switch(state)  
{
case sfOFF:  
sfRobotCom2Bytes(sfCOMDIGOUT, which, 0);  
break;  
case sfON:  
sfRobotCom2Bytes(sfCOMDIGOUT, which, which);  
break;  
}
}
23  
 
8. Appendix B  
Pioneer Server Information Packet  
Name  
Data Type  
Description  
Header  
int  
Exactly 0xFA, 0xFB  
Byte Count  
byte  
Number of data bytes + 2; must be less than 201  
(0xC9)  
Status  
byte = 0x3S; where S = Motors status  
sfSTATUSNOPOWER Motors power off  
sfSTATUSSTOPPED Motors stopped  
sfSTATUSMOVING  
Robot moving  
Xpos  
Ypos  
Th pos  
L vel  
unsigned int (15 ls-bits) Wheel-encoder integrated coordinates; platform-  
dependent units—multiply by  
unsigned int (15 ls-bits)  
DistConvFactor in the parameter file to convert to  
mm; roll-over ~ 3 m  
signed int  
Orientation in platform-dependent units—multiply  
by AngleConvFactor for radians  
signed int  
Wheel velocities (respective Left and Right) in  
platform-dependent units—  
R vel  
signed int  
byte  
multiply by  
VelConvFactor to convert to mm/sec.  
Battery  
Bumpers  
Bumpers  
Control  
Battery charge in tenths of volts  
Motor stall indicators  
2 bytes - L and R  
unsigned int  
signed int  
Setpoint of the server’s angular position servo—  
multiply by AngleConvFactor for radians  
PTU  
Say  
unsigned int  
byte  
Pulse width of position servo  
verbal/sound clues  
Sonar  
readings  
byte  
Number of new sonar readings included in  
information packet; readings follow:  
Sonar num  
byte  
Sonar number  
Sonar range  
unsigned int  
Sonar reading—multiply by  
mm  
RangeConvFactor for  
Input timer  
User Analog  
User Input  
User Output  
Checksum  
unsigned int  
byte  
User input timer reading  
User analog input reading  
User digital input pins  
User digital output pins  
byte  
byte  
int  
Checksum (see previous section)  
24  
 
Gripper & Experimenter’s Module  
9. Index  
A
G
A/D, 18  
General I/O, 16  
A/D port, 15  
ActivMedia, Inc., 2  
GRIPMOVING, 13  
GRIPOFF, 13  
Additional Resources, 5  
Gripper  
Bar, 4  
belt adjustments, 19  
carry switch, 4  
Description, 2  
direct control, 13  
I/O, 12  
installation. See installation  
lubrication, 19  
maintenance, 19  
motor controls, 12  
OD0, 12  
OD1, 12  
operating range, 3  
operation, 11  
paddles, 3  
self-test, 11  
B
break beams, 4  
C
carry switch, 4  
COMDIGOUT, 12, 13  
COMGRIPPER, 12  
components  
package, 1  
Pioneer 1, 2  
user-supplied, 1  
COMSAY, 18  
state commands, 13  
state switches, 12  
states, 2  
D
Digin, 17  
switches, 4  
digital-to-analog ports, 18  
Digout, 17  
transition cycle, 4  
Gripper Bar, 4  
Gripper I/O, 12  
Gripper maintenance, 19  
Gripper motor controls, 12  
Gripper switches, 12  
GripperGetState, 13  
E
EPROM location, 7  
Experimenter’s Module  
Description, 4  
speaker, 18  
I
Experimenter's Module, 15  
components, 15  
I/O ports, 15  
I/O  
General, 16  
Nose, 16  
self-test, 17  
ports and connections, 16  
programming, 18  
I/O ports, 15  
installation, 7  
cables, 9  
F
FTP archives, 5  
25  
 
console removal, 7  
EPROM location, 7  
R
EPROM replacement, 7  
microcontroller removal, 7  
RC-servo controllers, 4  
Real World Interface, ii  
Real World Interface, Inc., 2  
RobotCom2Bytes, 13  
RWI, ii. See Real World Interface, Inc.  
K
Konolige, Kurt, 2  
S
L
Saphira, 11  
sfCOMDIGOUT, 12, 13  
sfCOMGRIPPER, 12  
sfCOMSAY, 18  
sfGRIPMOVING, 13  
sfGRIPOFF, 13  
LEDs, 18  
M
majordomo, 5  
sfGripperGetState, 13  
sfGripperSetState, 13  
sfPlayToneString, 18  
sfROBOT.digoutput, 13  
sfRobotCom2Bytes, 13  
Saphira Software Manual, 1  
SAY, 18  
microcontroller, 8  
More, Grinnell, 2  
N
newsgroups, 5  
Nose I/O, 16  
pinouts, 16  
self-test, 11  
Digin, 17  
Digout, 17  
Server Information Packet, 11  
sfGripperSetState, 13  
speaker, 18  
SRI International, 2  
state commands, 13  
state switches, 12  
support, 6  
O
OD0, 12  
OD1, 12  
P
paddles  
break beams, 4  
positions, 4  
W
paddles positions, 4  
PAI, 11  
warranty, 28  
Pioneer 1, 2  
Pioneer Application Interface, 11  
Pioneer Operations and Software Manual, 1  
Pioneer Server Operating System. See  
PSOS  
Pioneer-LOGO, 11  
PlayToneString, 18  
P-LOGO, 11  
PSOS, 11. See PSOS  
EPROM, 7  
PSOS EPROM, 7  
26  
 
Gripper & Experimenter’s Module  
27  
 
Warranty & Liabilities  
Your Pioneer 1 Mobile Robot and its accessories are fully warranted against defective  
parts or assembly for 90 days after it is shipped to you from the factory. This warranty  
explicitly does not include damage from shipping or from abuse or inappropriate  
operation, such as if the robot is allowed to tumble or fall off a ledge, or if it is  
overloaded with heavy objects.  
The developers, marketers, and manufacturers of Pioneer 1 shall bear no liabilities for  
operation and use of the robot or any accompanying software except that covered by the  
warranty and period. The developers, marketers, or manufacturers shall not be held  
responsible for any injury to persons or property involving the Pioneer 1 Mobile Robot in  
any way. They shall bear no responsibilities or liabilities for any operation or application  
of the robot, or for support of any of those activities. And under no circumstances will  
the developers, marketers, or manufacturers of Pioneer 1 take responsibility for or  
support any special or custom modification to Pioneer 1.  
Pioneer 1 Gripper & Experimenter’s Manual version 1.2, August 1997.  
28  
 

Philips Car Stereo System MCM1120 User Manual
Philips Home Theater System HTS3172 User Manual
Philips TV Cables SWA2500 User Manual
Philips TV Cables SWV6382 User Manual
Philips VCR VRQ45 User Manual
Philips Ventilation Hood V200 User Manual
Planet Technology Network Card ADE 3100 User Manual
Planet Technology Switch VC 1602 User Manual
Polar Watch AXN300 User Manual
PYLE Audio Flat Panel Television P15LCD User Manual