question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

End-effector parameter missing in `ikine_XX` methods

See original GitHub issue

Hello robotics-toolbox-python team,

First off, I have to say it’s wonderful that you brought this toolbox to Python, and even better, that this project is led by the creator of the original Matlab version! Big fan of Professor Corke and his work.

Describe the bug I’m currently working on a model of a Kinova Gen3 to compute forward and inverse kinematics to pass into a Webots simulation. This arm has multiple end-effector options which requires passing an argument specifying the end-effector type to the solver. There is a parameter end to pass this argument to the fkine method but that parameter is absent for ikine_XX methods.

Environment

  • Your OS (MacOS, Linux, Windows): Linux (Mint 20.1)
  • Your Python version: 3.8.5

Version information Did you install from PyPI or GitHub? Conda install from conda-forge repo What version number? roboticstoolbox-python 0.10.1

To Reproduce Load a model of a manipulator with multiple end-effector options (e.g. Kinova Gen 3) and select an end-effector:

kvG3 = rtb.models.URDF.KinovaGen3()
end = kvG3.ee_links[0].name  # 'camera_link'

Calculate an end-pose transform, then use ikine_XX to calculate joint positions:

Tr = kvG3.fkine(kvG3.qr, end=end)
IK_sol = kvG3.ikine_LM(Tr)

Python raises a ValueError that an end-effector must be specified: image

Note how fkine (above) takes an end argument to specify this but ikine_XX methods do not. There does not seem to be a way to add an end-effector option:

IK_sol = kvG3.ikine_LM(Tr, end=end)
TypeError: ikine_LM() got an unexpected keyword argument 'end'
import inspect
print(inspect.getfullargspec(kvG3.ikine_LM).args)
['self', 'T', 'q0', 'mask', 'ilimit', 'rlimit', 'tol', 'L', 'Lmin', 'search', 'slimit', 'transpose']

Expected behavior ikine_XX methods take an additional argument end to specify the end-effector. Perhaps better would be to make it an attribute of the robot class with a default value for arms with multiple end-effector options.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:1
  • Comments:7 (2 by maintainers)

github_iconTop GitHub Comments

1reaction
petercorkecommented, May 26, 2021

This is a good solution and should be added to the codebase. The idea of a default EE is also a good one. We are rather inconsistent about tool transforms, fkine has it, and therefore so should ikine, but it does at least default to the attribute of the Robot class.

0reactions
jhavlcommented, Sep 13, 2021

Should be fixed now, let me know if problems persist

Read more comments on GitHub >

github_iconTop Results From Across the Web

Inverse Kinematics - MathWorks
The Inverse Kinematics block uses an inverse kinematic (IK) solver to calculate joint configurations for a desired end-effector pose based on a specified ......
Read more >
A methodology for robot end-effector positioning.
This paper presents a novel methodology to identify the dynamic parameters of a real robot with a convolutional neural network (CNN). Conventional ...
Read more >
FORWARD KINEMATICS: THE DENAVIT-HARTENBERG ...
Stated more formally, the forward kinematics problem is to determine the position and orientation of the end-effector, given the values for the joint...
Read more >
Learning Eye-in-Hand Camera Calibration from a Single Image
We present a study on using learning-based methods for ... the robot kinematics parameters and the camera to end-effector pose ...
Read more >
Jacobian | ROS Robotics
Jacobian is Matrix in robotics which provides the relation between joint velocities ( ) & end-effector velocities ( ) of a robot manipulator....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found