Katana Robot Arm Plugin
Plugin to control Neuronic's Katana arm. Accessing the arm and controling its motions is done via controllers. Currently we support:
- KNI 3 library to access/control real arm (no hardware available to test KNI 4)
- OpenRAVE to access/control arm in OpenRAVE simulation
Depending on the support level of the controller, the plugin provides access to
- the endeffector position in 6D space (translation and rotation)
- single motor/joint values (encoder and/or radian values)
- infrared sensor values
- internal status information
Motion control is provided for specific target in 6D space and setting/increasing/decreasing single joint values.
OpenRAVE is supported to calculate a collision-free path to the desired target.
Requires
Plugins
- static-transforms
- openrave (if OpenRAVE support shuold be enabled)
Config Values
| Path | Type | Description | Default | R |
| /hardware/katana/controller | string | Controller for the katana arm. Needs to be one of these values: "kni", "openrave" | kni | * |
| /hardware/katana/device | string | Device file of serial port the arm is connected to; file path | /dev/ttyUSB0 | * |
| /hardware/katana/kni_conffile | string | KNI configuration file; file path | /etc/kni3/hd300/katana6M180.cfg | * |
| /hardware/katana/auto_calibrate | bool | Automatically calibrate on startup? | 1 | * |
| /hardware/katana/default_max_speed | unsigned int | Default maximum robot arm velocity, can be overridden via BB; [0..255] | 100 | * |
| /hardware/katana/read_timeout_msec | unsigned int | Timeout for read operations; ms | 100 | * |
| /hardware/katana/write_timeout_msec | unsigned int | Timeout for write operations; ms | 0 | * |
| /hardware/katana/gripper_pollint_msec | unsigned int | Interval between gripper final checks; ms | 50 | * |
| /hardware/katana/goto_pollint_msec | unsigned int | Interval between goto final checks; ms | 50 | * |
| /hardware/katana/park_x | float | X position for parking | 66.863892 | * |
| /hardware/katana/park_y | float | Y position for parking | 16.27648 | * |
| /hardware/katana/park_z | float | Z position for parking | 442.759186 | * |
| /hardware/katana/park_phi | float | Phi position for parking | 1.809579 | * |
| /hardware/katana/park_theta | float | Theta position for parking | 0.357964 | * |
| /hardware/katana/park_psi | float | Psi position for parking | -0.271071 | * |
| /hardware/katana/distance_scale | float | Scale from kni coordinate values to fawkes | 0.001 | * |
| /hardware/katana/update_interval | float | Interval to update the motor position data even if there is no act thread running, required for tf; sec | 0.5 | * |
| /plugins/static-transforms/transforms/katana_kni/child_frame | string | Katana Arm to KNI base, child frame ID | /katana/kni | * |
| Additional Config Values if OpenRAVE available | ||||
| /hardware/katana/openrave/enabled | bool | Use OpenRAVE support? | 0 | * |
| /hardware/katana/openrave/use_viewer | bool | Use OpenRAVE qtcoin viewer (i.e. see 3D robot model)? | 1 | * |
| /hardware/katana/openrave/auto_load_ik | bool | Automatically generate IK database for OpenRAVE robot model? | 1 | * |
| /hardware/katana/openrave/robot_file | string | robot.xml file to be loaded into OpenRAVE | ../fawkes/res/openrave/caesar.robot.xml | * |
| /plugins/static-transforms/transforms/openrave/child_frame | string | Motor to OpenRAVE base/motor, child frame ID | /openrave/base | * |
Provides
BlackBoard Interfaces
- KatanaInterface::Katana
Compilation and Runtime Requirements
- KNI library version 3 (kni3 and kni3-devel on Fedora)
Usage Instructions
We assume you have one Katana arm to the machine running Fawkes. The default configuration further assumes a USB to serial adapter. Change the device file if you use a regular serial port accordingly. Then load the plugin. You can use the behavior engine? to instruct the arm. For example, use the following commands either using the SkillGUI? or skilllet? (for further information on the parameters, take a loot at the skill's documentation):
katana{calibrate=true}
katana{park=true}
katana{gripper="open"}
katana{gripper="close"}
katana{enable=false}
katana{x=0.4, y=0, z=0.2, phi=1.570, theta=1.570, psi=0, frame="/katana/kni"}
katana{x=0.4, y=0, z=0.38, offset=0.05}
katana{x=0.42, y=-0.1, z=0.38, theta_error=0.5}
katana_rel{x=0.1, straight=true}

