reb
Drivers

K-Team Kameleon Robotics Extension Board. More...

K-Team Kameleon Robotics Extension Board.

Todo:
  This driver is currently disabled because it needs to be updated to the Player 2.0 API.

The reb driver is used to control robots using the K-Team Kameleon 376SBC with Robotics Extension Board (REB). The Kameleon, (or Kam), has a Motorola MC68376 microcontroller that can perform velocity and position control and odometry for up to four motors, using the REB. It can also access a number of A/D inputs, which we have connected to Sharp GP2D12 IR proximity detectors.

In its default setting, a host computer can communicate with the Kam using the K-Team SerCom program, which uses a simple protocol to send commands and read data back. At UMass, we found that the default SerCom did not offer enough performance, so we developed our own, LPRSerCom, which uses the same protocol, but with some enhancements, such as letting the Kam do the odometry updates and IR synchronization. The bottom line is that you need to modifiy these drivers to work with the K-Team SerCom, which is not very difficult (mainly removing the LPRSerCom specific code). We can also send you a copy of LPRSerCom if you'd like. Email John Sweeney (sweeney (at) cs.umass.edu) for information.

The reb driver sets some default PID parameters and resets the odometry to (0,0,0) when the first client subscribes to the position2d interface. Likewise, the IR sensors are only turned on when an ir client has subscribed.

Position mode is very finicky. This seems to be a problem with the REB itself, which may lose bytes on the serial port while performing position mode actions. This causes the driver to time out, and quite possibly lose a connection to the REB.

The LPRSerCom protocol running on the REB will sometimes lose a byte over the port, which can cause the driver to time out on a read call to the port. The driver will attempt to retry the call, but there is no guarantee that the REB will be able to handle it. The best solution is to reset the REB. Hopefully this should be a relatively rare occurrence.

As mentioned above, for this driver to function properly, the REB needs to be running the LPRSerCom program.

Compile-time dependencies

- none

Provides

The reb driver provides the following device interfaces:

- position2d : This interface returns odometry data, and accepts velocity commands.
- ir : This interface returns IR range data.
- power : This interface returns power data.

Supported configuration requests

- The position2d interface supports:
  - PLAYER_POSITION2D_REQ_GET_GEOM
  - PLAYER_POSITION2D_REQ_MOTOR_POWER
  - PLAYER_POSITION2D_REQ_VELOCITY_MODE
  - PLAYER_POSITION2D_REQ_RESET_ODOM
  - PLAYER_POSITION2D_REQ_POSITION_MODE
  - PLAYER_POSITION2D_REQ_SET_ODOM
  - PLAYER_POSITION2D_REQ_SPEED_PID
  - PLAYER_POSITION2D_REQ_POSITION_PID
  - PLAYER_POSITION2D_REQ_SPEED_PROF
- The ir interface supports:
  - PLAYER_IR_REQ_POWER
  - PLAYER_IR_REQ_POSE

Configuration file options

- port (string)
  - Default: "/dev/ttySA1"
  - Serial port used to communicate with the robot.
- subclass (string)
  - Default: "slow"
  - The type of robot; should be "slow" or "fast"

Example

    driver
    (
      name "reb"
      provides ["position2d:0" "ir:0" "power:0"]
    )

Author
  John Sweeney

Last updated 12 September 2005 21:38:45