Last modified 6 years ago Last modified on 25.02.2013 15:23:12

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.



Config values

controllerstringkniController for the katana arm. Needs to be one of these values: "kni", "openrave"*
devicestring/dev/ttyUSB0Device file of serial port the arm is connected to; file path*
kni_conffilestring/etc/kni3/hd300/katana6M180.cfgKNI configuration file; file path*
auto_calibratebooltrueAutomatically calibrate on startup?*
default_max_speeduint100Default maximum robot arm velocity, can be overridden via BB; [0..255]*
read_timeout_msecuint100Timeout for read operations; ms*
write_timeout_msecuint0Timeout for write operations; ms*
gripper_pollint_msecuint50Interval between gripper final checks; ms*
goto_pollint_msecuint50Interval between goto final checks; ms*
park_xfloat66.863892X position for parking*
park_yfloat16.27648Y position for parking*
park_zfloat442.759186Z position for parking*
park_phifloat1.809579Phi position for parking*
park_thetafloat0.357964Theta position for parking*
park_psifloat-0.271071Psi position for parking*
distance_scalefloat0.001Scale from kni coordinate values to fawkes*
update_intervalfloat0.5Interval to update the motor position data even if there is no act thread running, required for tf; sec*
katana_kni/child_framestring/katana/kniKatana Arm to KNI base, child frame ID*

Additional Config Values if OpenRAVE available

enabledboolfalseUse OpenRAVE support?*
use_viewerbooltrueUse OpenRAVE qtcoin viewer (i.e. see 3D robot model)?*
auto_load_ikbooltrueAutomatically generate IK database for OpenRAVE robot model?*
robot_filestring../fawkes/res/openrave/caesar.robot.xmlrobot.xml file to be loaded into OpenRAVE*
openrave/child_framestring/openrave/baseMotor to OpenRAVE base/motor, child frame ID*


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 attached 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{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}