About

The jaco_teleop package provides various methods for human control of the JACO and JACO2 arm via keyboard teleoperation and joystick/gamepad teleoperation. This may work for the MICO as well, but it has not yet been tested.

Nodes

jaco_joy_teleop

'jaco_joy_teleop' allows for simultaneous 6-DoF control of the arm and individual finger control using a joystick or gamepad.

Subscribed Topics

joy (sensor_msgs/Joy)
  • Reads input from a joystick or gamepad.

Published Topics

jaco_arm/angular_cmd (wpi_jaco_msgs/AngularCommand)
  • Send angular commands (finger control) to the arm.
jaco_arm/cartesian_cmd (wpi_jaco_msgs/CartesianCommand)
  • Send Cartesian commands to the JACO arm.

Services Called

jaco_arm/software_estop (wpi_jaco_msgs/EStop)
  • Arm software emergency stop and restart.

Parameters

linear_throttle_factor (double, default: 1.0)
  • Velocity throttle for arm linear motion.
angular_throttle_factor (double, default: 1.0)
  • Velocity throttle for arm angular motion.
finger_throttle_factor (double, default: 1.0)
  • Velocity throttle for finger movement.
controller_type (string, default: "digital")
  • Type of controller being used (currently either "analog" or "digital" for triggers, more to be added as necessary).
wpi_jaco/arm_name (string, default: jaco)
  • Name of the arm, either "jaco" or "jaco2"

jaco_key_teleop

'jaco_key_teleop' allows for keyboard teleop of the arm and finger joints.

Published Topics

jaco_arm/angular_cmd (wpi_jaco_msgs/AngularCommand)
  • Send angular commands (finger control) to the arm.
jaco_arm/cartesian_cmd (wpi_jaco_msgs/CartesianCommand)
  • Send Cartesian commands to the arm.

Parameters

linear_throttle_factor (double, default: 1.0)
  • Velocity throttle for arm linear motion.
angular_throttle_factor (double, default: 1.0)
  • Velocity throttle for arm angular motion.
finger_throttle_factor (double, default: 1.0)
  • Velocity throttle for finger movement.
wpi_jaco/arm_name (string, default: jaco)
  • Name of the arm, either "jaco" or "jaco2"

Controls

Controls for the joystick and keyboard teleop nodes are listed below.

Joystick Teleop

The joystick teleop node currently supports both gamepads with analog triggers and gamepads with digital triggers. The gamepad type can be set on launch with the controller_type parameter. Currently, the node has been tested with the Logitech Dual Action wired controller (digital triggers), the Logitech Wireless Gamepad (analog triggers), and the Microsoft XBOX 360 wired controller (analog triggers). If your gamepad does not work with this node, you can remap the axes and buttons using joystick_remapper package, or open an issue in the code repository and support for the new controller may be added.

The arm has two control modes, Arm Control and Finger Control, which can be switched to by pressing buttons 2(A) and 1(X), respectively.

Arm Control Mode:

  • left thumbstick - arm x and y translation
  • right thumbstick - arm pitch and yaw
  • left and right bumper - arm roll
  • left and right triggers - arm down/up translation
  • back button - enable arm estop
  • start button - disable arm estop
  • d-pad - display help

Finger Control Mode:

  • left thumbstick up/down - open/close all fingers
  • right thumbstick up/down - open/close thumb
  • left bumper and trigger - open/close first finger
  • right bumper and trigger - open/close second finger
  • back button - enable arm estop
  • start button - disable arm estop
  • d-pad - display help

Keyboard Teleop

The keyboard teleop operates by reading input from the command line, and as such it can only recognize one key press at a time.

The arm has two control modes, Arm Control and Finger Control, which can be switched to by pressing the 1 and 2 keys, respectively.

Arm Control Mode:

  • w/s - arm forward/backward translation
  • a/d - arm left/right translation
  • r/f - arm up/down translation
  • q/e - arm roll
  • up/down - arm pitch
  • left/right - arm yaw
  • h - display help

Finger Control Mode:

  • q/a - open/close thumb
  • w/s - open/close top finger
  • e/d - open/close bottom finger
  • r/f - open/close all fingers
  • h - display help

Installation

To install the wpi_jaco package, you can install from source with the following commands:

  •    1 cd /(your catkin workspace)/src
       2 git clone https://github.com/RIVeR-Lab/wpi_jaco.git
       3 cd ..
       4 catkin_make
       5 catkin_make install
    

Startup

Joystick or keyboard teleop can be started with the launch files jaco_joy_teleop.launch and jaco_key_teleop.launch, respectively. Both files have parameters for velocity limits, which can be set on launch to limit the velocities of the arm's translation, rotation, and finger movement. Furthermore, jaco_joy_teleop.launch includes a parameter for the controller type, which can currently be set to either "analog" or "digital", representing controllers with analog triggers and digital triggers, respectively. Example launch syntax is given below.

With default parameters:

  • roslaunch jaco_teleop jaco_joy_teleop.launch
  • roslaunch jaco_teleop jaco_key_teleop.launch

Example with parameters:

  • roslaunch jaco_teleop jaco_joy_teleop.launch linear_throttle_factor:=0.5 angular_throttle_factor:=0.5 finger_throttle_factor:=0.75 controller_type:="analog"
  • roslaunch jaco_teleop jaco_key_teleop.launch linear_throttle_factor:=0.5 angular_throttle_factor:=0.5 finger_throttle_factor:=0.75

Wiki: jaco_teleop (last edited 2015-11-09 23:44:54 by davidkent)