How to send Cartesian velocity and Cartesian position Kinova Jaco 2

asked 2021-06-24 04:37:15 -0500

Dornier gravatar image

Hello, developers!

I am not able to figure out how to publish Cartesian velocity data and Cartesian position to Kinova simultaneously? I suppose it is not difficult, unfortunately i am not able. I successfully move the gripper along Cartesian axes, i use a slightly changed demo code and publish velocity message, however, separately. Could you show me the path how to combine these two command actions?

edit retag flag offensive close merge delete


  1. I do not understand what you mean by "cartesian velocity".
  2. Are you using one of the action servers created by Kinova? If so tell us which one. If not, tell us what message you are creating and what topic you are sending it to.

Please edit your question and provide this information.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-06-24 07:41:30 -0500 )edit
  1. Cartesian linear velocity;
  2. Yes, i'm using a demo code provided by Kinova:

    action_address = '/j2s6s300_driver/pose_action/tool_pose'
    client = actionlib.SimpleActionClient(action_address, kinova_msgs.msg.ArmPoseAction)
    goal = kinova_msgs.msg.ArmPoseGoal()
    goal.pose.header = std_msgs.msg.Header(frame_id=('j2s6s300_link_base'))
    goal.pose.pose.position = geometry_msgs.msg.Point(x=position[0], y=position[1], z=position[2])
    goal.pose.pose.orientation = geometry_msgs.msg.Quaternion(x=orientation[0], y=orientation[1], z=orientation[2], w=orientation[3])

I want to change the velocity along Y axis, using the action server

Dornier gravatar image Dornier  ( 2021-06-25 01:46:24 -0500 )edit

My experience is with an older Kinova arm, but maybe it helps you.

  1. For safety, kinova software limits the maximum angular velocity of an arm joint. In the file robot_parameters.yaml, have you changed the properties jointSpeedLimitParameter1 and jointSpeedLimitParameter2 to good values for your use case? In the past, this file was read only once when the kinova /$MODEL_driver ros node started.
  2. I doubt the sdk software allows you to specify the velocity of a single axis. However, for a cartesian goal, there may be a way to set a maximum translation velocity. Do a web search. But even if it exists, there may be no python API for it.
Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-06-25 07:40:02 -0500 )edit

No, i have not changed neither the file nor properties. But another one questions is coming in my mind...Is it possible to access the inverse kinematics equations somehow. I hope they should be defined somewhere inside files?

Dornier gravatar image Dornier  ( 2021-06-25 09:32:21 -0500 )edit

Again, for the older kinova arm: we could not see or modify the Kinova IK code, which executed on a cpu inside the arm itself. However, you can run Inverse Kinematics code on your own cpu, then send a trajectory to Kinova's Joint Trajectory Action Server.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-06-25 15:46:59 -0500 )edit