Pioneer Module Mobile manual SfRobotCom2BytessfCOMDIGOUT, 0x20, SfRobotCom2BytessfCOMDIGOUT, 0x3

Models: Module Mobile

1 32
Download 32 pages 21.03 Kb
Page 17
Image 17

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

Page 17
Image 17
Pioneer Module Mobile SfRobotCom2BytessfCOMDIGOUT, 0x20, SfRobotCom2BytessfCOMDIGOUT, 0x3, Int sfGripperGetState void