ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Implementation of custom IK with Moveit

asked 2020-10-30 15:31:19 -0500

lucasrebra gravatar image

updated 2020-10-31 10:54:59 -0500

Hi developers,

I have two simple questions that they are really important for me in order to advance in a real Robotic Project in ROS.

First I have to say that it's necessary for me to apply my own inverse kinematics to the project. This means that talking about working with the kinematic solvers in moveit isn't an option. Explained that let's explain you what are my doubts and hope to exchange ideas with someone:

1-My robot is the 6Dof Sainsmart robotic arm. You can see this robot in this web page https://www.sainsmart.com/products/6-... . As you can see this robot has a close chain, so my idea is trying to execute dependencies between the joint angles to compute them in the robot to emulate the real move without closing the loop (As you know, ROS doesn't support close kinematic chains). I don't know how to make the movement depend of two joint angles and that is stopping me in the project. I tried to implement that with mimic joints but that was imposible.

2-The second one is related with the first and has to do with Moveit. Can I do what I have posted in the first question with moveit or I have to do it directly in simulation with the appropiate programming of nodes, action and services? When I started the project my idea was to make it with moveit but now I don't know if it's possible.

Anyway, if someone knows about a ROS project or some articles or webpages related with the topic exposed would be really helpful. The topics in which I'm interested are: apply my own inverse and forward kinematics to moveit and use a combination of two joint angles for applying the angle to another joint on Moveit. I have read about IKfast but I think that doesn't works for my project but if you think that could be a solution please let me know.

Thank you for reasing and I would be very grateful if someone could help me.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2020-11-01 13:18:16 -0500

jschornak gravatar image

There may be an easier way to solve your underlying problem than implementing a custom IK solver.

The robot you're using moves its elbow joint using a parallel-bar linkage, which is driven by a servo attached to the same part of the robot as the servo for the shoulder lift joint. This means that the rotation of the elbow joint is equal to the difference between the rotation of the elbow servo and the shoulder lift servo. The same relationship also exists to calculate the rotational velocity and acceleration of the elbow joint.

You can perform this calculation in the part of your code that converts the robot joint trajectory from motion planning into servo commands for motion execution, which lets you design your robot model to represent the arm as a much simpler in-series manipulator, as if the elbow drive servo was actually located at the elbow, instead of a parallel manipulator. This strategy is usually how MoveIt motion planning is done for industrial robots that include these kinds of parallel links, such as the ABB IRB 8700.

Here's a picture of the robot you linked, for clarity:

image description

edit flag offensive delete link more

Comments

Do you have a code example of how this is done, or a package to link?

fvd gravatar image fvd  ( 2020-11-01 20:15:27 -0500 )edit

Ok thanks for answering me, I think this is a better implementation than the one I was thinking about. Thanks also for posting the picture of the robot, as a new developer ROS answers doesn't let me to post pictures in the forum.

Anyway, how could I implement my own inverse kinematics in a robot? I have concerns about the use of robotic arms (that is the reason I've started in ROS) and I would like to have more information about it. The information that is currently on the internet is very limited about implementation of kinematics. I would like to know some basic ideas of how it can be carried out, to try to implement it in a future the best way, understanding the operation of my robot in its entirety.

lucasrebra gravatar image lucasrebra  ( 2020-11-02 03:09:50 -0500 )edit

I am having some problems in what you have said to me. The problem is that I don't know how to implement what you say and I don't understand how to combine motion planning with the fact of having a relationship between the joint angles of two actuators. It is difficult for me to understand how you can apply that relationship for simulation and solving the motion planning on the right way. I search it but it makes me feel that there are many solutions and i don't know where to start. I think you have an aproximate idea on how to do it. I don't want you to solve the problem but it could help me to continue.

lucasrebra gravatar image lucasrebra  ( 2020-11-10 07:17:24 -0500 )edit

Sorry if it takes some time for me to respond. This is a challenging set of problems and I want to make sure I provide good answers. I think I need to draw some pictures to clearly explain how this would work for this type of robot, so I'll be back later with a more detailed comment.

jschornak gravatar image jschornak  ( 2020-11-10 09:53:01 -0500 )edit

Ok, no problem , I look forward for your response. Thank you a lot.

lucasrebra gravatar image lucasrebra  ( 2020-11-10 12:18:27 -0500 )edit

Hi jschornak, I started doing some things after reading some articles about the delta robot. I think that a good idea (I don't know if it's the best) is to create some nodes that, using the position information of a goal, calculates IK and execute the angles. I have created a node to calculate the joint angle position of the robot and I think there must be a way to apply those positions on RVIZ. I think that could be apply communicating with the /joint_state topic. Correct me if there is any inaccuracy. It is as easy as I have related or there is something wrong in the way to do it? The application of a service to change the pose in some time of the use of the robot could be also helpful?

lucasrebra gravatar image lucasrebra  ( 2020-11-16 10:58:16 -0500 )edit

@jschornak I'm desperate because I can't find nothing. I'm thinking that could be interesting to work with a kinematic solver, but I don't find any information about how to create it on the internet. Could you help me a little bit with it? or just have an idea on how to do it. This is being horrible for me.

lucasrebra gravatar image lucasrebra  ( 2020-12-20 13:14:24 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2020-10-30 15:31:19 -0500

Seen: 465 times

Last updated: Nov 01 '20