Coder Social home page Coder Social logo

uos / katana_driver Goto Github PK

View Code? Open in Web Editor NEW
21.0 7.0 31.0 19.48 MB

This stack contains hardware drivers, Gazebo plugins and other basic functionalities for the Neuronics Katana family of robot arms.

Home Page: http://www.ros.org/wiki/katana_driver

CMake 0.60% Makefile 3.30% C++ 84.34% Python 0.37% Shell 0.09% Objective-C 2.26% C 0.65% C# 0.26% MATLAB 0.22% TeX 0.18% HTML 7.52% CSS 0.05% Inno Setup 0.11% Batchfile 0.01% M4 0.04%
ros ros-driver urdf robot-arm hardware-drivers gazebo-plugins gazebo

katana_driver's People

Contributors

apot avatar carlos22 avatar doofy avatar frederikhegger avatar hdeeken avatar jspricke avatar leonziegler avatar mintar avatar tahsinkose avatar v4hn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

katana_driver's Issues

GazeboRosKatanaGripper updates dynamic_reconfigure parameters in each iteration

Hey Martin,

Thank you for doing such a great job maintaining drivers for the katana! :-)

See the subject for the problem I want to report.

The result of this behaviour are gigabytes of roslog explaining
that gazebo updated /katana/gripper_pid/* parameters every .002 seconds
and most likely there's a significant performance impact.

The relevant code lines are
katana_gazebo_plugins/src/gazebo_ros_katana_gripper.cpp:165-171

Can't initialize robot

Hi Guys :)

I tried to use the Katana Driver for a Katana 450 with ROS Kinetic. When running katana.launch, everything seems to work until the part where the katana.cpp tries to init the robot.
--> All the positive ROS_INFO feedbacks are displayed, but when it comes to initializing, nothing is shown (neither ROS_ERROR("Exception during initialization"), nor ROS_INFO("success: katana initialized") ...)

The last thing the console shows is ROS_INFO("success: communication with Katana initialized"). After some minutes there is an Error (broken pipe), but I suppose, that's due to a connection time out?!

Does someone have a clue, what I could be doing wrong?

Thanks in advance, Philipp

Remove deprecated warnings related to Xacro

$ rosrun xacro xacro.py katana_450_6m90a.urdf.xacro -o katana.urdf
DEPRECATED IN HYDRO:
  The <include> tag should be prepended with 'xacro' if that is the intended use 
  of it, such as <xacro:include ...>. Use the following script to fix incorrect
  xacro includes:
     sed -i 's/<include/<xacro:include/g' `find . -iname *.xacro`

support for Katana300 with old firmware

Several people have had problems with executing trajectories on a Katana 300 6m180 with an old firmware. The error log looks similar to this:

process[katana-2]: started with pid [18127]
[ INFO] [1389893296.700950640]: trying to connect to katana (serial port: /dev/ttyS0) ...
[ INFO] [1389893296.701484379]: success: serial connection to Katana opened
[ INFO] [1389893296.701531683]: success: protocol class instantiated
[ INFO] [1389893296.701566842]: success: communication with Katana initialized
[ INFO] [1389893296.789326405]: success: katana initialized
[ INFO] [1389893296.975445650]: no calibration required
[ INFO] [1389893296.975594807]: success: katana calibrated
[ INFO] [1389893297.175685246]: katana gripper grasp query service started on topic /gripper_grasp_status
[ INFO] [1389893297.181666223]: katana gripper grasp hand posture action server started on topic /gripper_grasp_posture_controller
[ INFO] [1389893309.250900985]: Sending trajectory to Katana arm...
[ERROR] [1389893310.946135966]: ReadNotCompleteException: Another program accessed the KNI. Please stop it and restart the Katana node. (exception in executeTrajectory(): Cannot read all data from '')
[ERROR] [1389893310.946395937]: Problem while transferring trajectory to Katana arm, aborting

It fails in the kni->setAndStartPolyMovement() call, at joint_trajectory_action_controller.cpp. (See e.g. this answers.ros.org post ).

katana_kinect_calibration: split into movement and calibration part

Actively moving the arm (class Dance in katana_kinect_calibration/src/calibrate.py) should be separated from the calibration part, which should just passively observe the movement. These two things should be separate nodes. This would have the following advantages:

  • calibration can be debugged separately, for example from a rosbag
  • it's easy to move the arm differently, for example by simply switching off the motors and moving it by hand

In my opinion, the feature in the current implementation where the calibration part provides feedback to the movement part doesn't need to be kept.

katana_kinect_calibration: new parameters "kinect_parent_frame" and "kinect_child_frame"

Instead of hardcoding /base_link and /kinect_link, these should be configurable via parameters:

  • param kinect_parent_frame, default: /base_link: the frame we want the kinect to be attached to
  • param kinect_root_frame, default: /kinect_link: the root frame of all the kinect frames

The advantage is that we could only have to set the kinect_parent_frame to kurtana_pitchpole_link when calling the node if we want to attach it there.

Could not find a package configuration file provided by "LibEPOS2"

You know that if I want to use katana_driver, I must install uos-ros-pkg first.
I am in trouble following the instructions as bellow for installation of uos-ros-pkg.

# create catkin workspace
. /opt/ros/indigo/setup.bash
mkdir -p ~/ros-indigo/src/
cd ~/ros-indigo/src/
wstool init
wstool merge https://raw.githubusercontent.com/uos/uos_rosinstalls/master/uos-public-indigo-wet.rosinstall
wstool update

# install dependencies
rosdep update
rosdep install --from-paths ./ -i -y --rosdistro indigo

# build all packages
catkin_init_workspace
cd ..
catkin_make
. ~/ros-indigo/devel/setup.bash

# make sure the correct setup.bash is sourced in each new shell
echo ". ~/ros-indigo/devel/setup.bash" >> ~/.bashrc

when I run

catkin_make

I get error as bellow:

CMake Error at volksbot_driver/CMakeLists.txt:14 (find_package):
  Could not find a package configuration file provided by "LibEPOS2" with any
  of the following names:

    LibEPOS2Config.cmake
    libepos2-config.cmake

  Add the installation prefix of "LibEPOS2" to CMAKE_PREFIX_PATH or set
  "LibEPOS2_DIR" to a directory containing one of the above files.  If
  "LibEPOS2" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/home/exbot/ros-indigo/build/CMakeFiles/CMakeOutput.log".
See also "/home/exbot/ros-indigo/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

How can I solve this problem? Or where can I find the information about 'LibEPOS2', and thanks!

Generation of dae files for ikfast plugin

Hi,

Nice work with the katana drivers.

I am working on a katana_400_6m180. Currently, it works on moveit with the default KLD solver. When using rviz, it responds quite ok to random valid poses but (due to the limitations of 5d) the interactive marker does not allow for a freely selection of poses.

Nevertheless, I would like to use IKfast for a better performance and for its use with moveit_commander. I saw that you provide an ikfast plugin for the 450 model. I want to build one for our katana but I cannot pass the openrave cpp generation command.

I am following this tutorial from moveit:

http://docs.ros.org/indigo/api/moveit_tutorials/html/doc/ikfast_tutorial.html

I converted the .urdf.xacro from the description folder (katana_description/urdf) to a urdf file and then to the desired .dae file.

When running:

openrave-robot.py $KATANA_TYPE.dae --info links
name                          index parents                      
-----------------------------------------------------------------
katana_base_link              0                                  
katana_base_frame             1     katana_base_link             
katana_motor1_pan_link        2     katana_base_link             
katana_motor2_lift_link       3     katana_motor1_pan_link       
katana_motor3_lift_link       4     katana_motor2_lift_link      
katana_motor4_lift_link       5     katana_motor3_lift_link      
katana_motor5_wrist_roll_link 6     katana_motor4_lift_link      
katana_gripper_link           7     katana_motor5_wrist_roll_link
katana_l_finger_link          8     katana_gripper_link          
katana_r_finger_link          9     katana_gripper_link          
katana_gripper_tool_frame     10    katana_motor5_wrist_roll_link
-----------------------------------------------------------------
name                          index parents 

And the visualization from openrave also seems to be correct:

openrave-output

However, when I try to generate the cpp, this error appears and I dot have any idea if it comes from the urdf description or from other source.

python openrave-config --python-dir/openravepy/_openravepy_/ikfast.py --robot=$KATANA_TYPE.dae --iktype=translationdirection5d --baselink=1 --eelink=10 --savefile=ikfast61_fullarm.cpp

2017-02-06 17:13:25,945 openrave [WARN] [plugindatabase.h:577 InterfaceBasePtr OpenRAVE::RaveDatabase::Create] Failed to create name fcl_, interface collisionchecker
INFO: moved translation Matrix([[0, 0, -1523/10000]]) to right end
INFO: moved translation Matrix([[0, 0, 0]]) to left end
INFO: moved translation on intersecting axis Matrix([[0, 0, 0]]) to left
INFO: [[1, 0, 0, 0],[0, 1, 0, 0],[0, 0, 1, 0]]
INFO: [[cos(j0), -sin(j0), 0, 0],[sin(j0), cos(j0), 0, 0],[0, 0, 1, 0]]
INFO: [[1, 0, 0, 0],[0, 0, -1, 0],[0, 1, 0, 0]]
INFO: [[cos(j1), -sin(j1), 0, 0],[sin(j1), cos(j1), 0, 0],[0, 0, 1, 0]]
INFO: [[1, 0, 0, 19/100],[0, 1, 0, 0],[0, 0, 1, 0]]
INFO: [[cos(j2), -sin(j2), 0, 0],[sin(j2), cos(j2), 0, 0],[0, 0, 1, 0]]
INFO: [[1, 0, 0, 139/1000],[0, -1, 0, 0],[0, 0, -1, 0]]
INFO: [[cos(j3), -sin(j3), 0, 0],[sin(j3), cos(j3), 0, 0],[0, 0, 1, 0]]
INFO: [[0, 0, -1, 0],[0, 1, 0, 0],[1, 0, 0, 0]]
INFO: [[cos(j4), -sin(j4), 0, 0],[sin(j4), cos(j4), 0, 0],[0, 0, 1, 0]]
INFO: [[0, 1, 0, 0],[0, 0, -1, 0],[-1, 0, 0, -757/2500]]
INFO: ikfast translation direction 5d: [j0, j1, j2, j3, j4], direction=Matrix([
[0],
[0],
[1]])

MORE LOG OUTOUT

INFO: depth=0, c=2, iter=0/1, starting newcases: set([Abs(px) + Abs(py)])
INFO: depth=1 c=3, [] [j0]: cases=set([Abs(px) + Abs(py)])
WARNING: converting polyeq "Poly(0, htj1, htj2, domain='ZZ')" to "Poly(0, htj1, htj2, domain='ZZ')"
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/site-packages/openravepy/_openravepy_/ikfast.py", line 9521, in <module>
    chaintree = solver.generateIkSolver(options.baselink,options.eelink,options.freeindices,solvefn=solvefn)
  File "/opt/ros/indigo/lib/python2.7/site-packages/openravepy/_openravepy_/ikfast.py", line 2281, in generateIkSolver
    chaintree = solvefn(self, LinksRaw, jointvars, isolvejointvars)
  File "/opt/ros/indigo/lib/python2.7/site-packages/openravepy/_openravepy_/ikfast.py", line 2796, in solveFullIK_TranslationDirection5D
    coupledsolutions,usedvars = solvemethod(rawpolyeqs2[index],newsolvejointvars,endbranchtree=[AST.SolverSequence([endbranchtree2])], AllEquationsExtra=AllEquations)
  File "/opt/ros/indigo/lib/python2.7/site-packages/openravepy/_openravepy_/ikfast.py", line 5054, in solveLiWoernleHiller
    halfanglesolution=self.SolvePairVariablesHalfAngle(raweqns=[eq.subs(curvarsubs) for eq in AllEquations],var0=unknownvars[0],var1=unknownvars[1],othersolvedvars=self.freejointvars+[curvar])[0]
  File "/opt/ros/indigo/lib/python2.7/site-packages/openravepy/_openravepy_/ikfast.py", line 7706, in SolvePairVariablesHalfAngle
    for degree in range(mindegree,maxdegree+1):
  File "/usr/lib/python2.7/dist-packages/sympy/core/expr.py", line 178, in __int__
    r = self.round(2)
  File "/usr/lib/python2.7/dist-packages/sympy/core/expr.py", line 3051, in round
    mag_first_dig = _mag(x)
  File "/usr/lib/python2.7/dist-packages/sympy/core/expr.py", line 3123, in _mag
    mag_first_dig = int(ceil(C.Float(mpf_log(xpos._mpf_, 53))/log(10)))
OverflowError: cannot convert float infinity to integer

I have tried rounding the floating point values, using the dae file you already provide in the collada folder but the error persists.

I saw that in the indigo_catkin branch of the driver there is a small tutorial in the collada folder. I could not replicate it due to the lack of orrosplaning package in my system. Is this tutorial similar to the one provided by moveit.

Sorry for the extensive post but this is my first time using ikfast and I have not reached the point when I can really use it for robot manipulation.

I would appreciate if you can give me some pointers in how to build this plugin.

Update 1: I'm using ros indigo and openrave 0.9 (install from source https://github.com/rdiankov/openrave.git). Also, each time I run openrave I get these messages from missing plugins:

[plugindatabase.h:577 Create] Failed to create name fcl_, interface collisionchecker
[plugindatabase.h:577 Create] Failed to create name ode, interface collisionchecker

Thanks in advance

About Katana solidwork modle

Hello! Would you like to share the Katana solidwork model with us? We are using katana in a robotics project and we need to use solidwork to design the robot. Thanks a lot!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.