[MoveIt!] Help converting the World Coordinates to Joint Coordinates

asked 2017-08-30 13:28:05 -0600

Jalashwa gravatar image

Hello Everyone,

I have a query regarding implementing a Hardware Interface for Toshiba TH650 SCARA. I am looking to provide the Robot Trajectory points through ROS MoveIt! and have already made the packages for that.

I went through the link which is a good introduction to writing a Hardware Interface and I understand most of it.

The article in very clear terms states that, "In this case, your robot should provide the standard JointPositionInterface and the JointStateInterface, so it can re-use all controllers that are already written to work with the JointPositionInterface and the JointStateInterface"

Unfortunately, the Robot I am working on cannot provide me the feedback required for the 'JointStateInterface' in terms of the Joint Coordinates. It can only give me a feedback in terms of the World Co-ordinates.

I was doing some digging in and I found about the IKFast Plugin through this post

Can I somehow use the IKFast Plugin to solve my problem ? Kindly Note, mine is a 4 DOF Robot

If not this, could someone please guide me through if there are any other Plugins already present in ROS, or in MoveIt! which I could use to convert the World Coordinates to the Joint Coordinates as then it is pointless proceeding with work on the Hardware Interface.

Any help would be deeply appreciated,

Thanks in advance

edit retag flag offensive close merge delete

Comments

What do you mean it can only give you a reference in terms of world coordinates? More particularly, what exactly is the robot giving you feedback for?

malcolmwatt gravatar image malcolmwatt  ( 2017-08-30 13:45:44 -0600 )edit

Most likely that the robot controller does not provide access to joint angles for the individual axes.

@Jalashwa: how are you currently interfacing with the controller? Can you link us to a programming manual? Most industrial robot ctrlrs are alike, and not having joint space joint angles ..

gvdhoorn gravatar image gvdhoorn  ( 2017-08-30 13:49:23 -0600 )edit

.. is rather rare. It is typically the lowest level of control that is offered.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-30 13:49:46 -0600 )edit

@gvdhoorn: PFA the Github link to get the files I have. This particular Robot is a very old one. It doesn't provide the Joint States feedback,as told to me by me Colleague.

Could there be aother way to transform the world to Joint coordinates? TY

Jalashwa gravatar image Jalashwa  ( 2017-08-30 15:31:16 -0600 )edit

@malcolmwatt: I need the joint states feedback so that the Joint Trajectory Action Controller can use the data for actuating the Robot

Jalashwa gravatar image Jalashwa  ( 2017-08-30 15:32:23 -0600 )edit

I don't know anything about these robots, or how fast you could get this data, but STE71289.pdf, section 4.3.3 (Details of Commands) under the File subsection, and then 5-III (Current Value) mentions "Joint coordinate value" (4 * float). That would seem to be joint states.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-31 01:18:39 -0600 )edit

Seeing as the maximum baudrate for your controller is 38400, it's not going to be fast in any case most likely.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-31 01:20:01 -0600 )edit

@gvdhoorn: Thanks for your input :) I have also written to Toshiba Machine about this issue. In the meanwhile, any workaround that comes to your mind to mitigate this problem ?

Writing an Hardware Interface is pointless if this problem can't be solved

Jalashwa gravatar image Jalashwa  ( 2017-08-31 04:09:00 -0600 )edit

Have you tried accessing the "Joint coordinate value" that is mentioned in the manual? I would just experiment a bit first before concluding that it's not useful.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-31 04:10:21 -0600 )edit

Yes, I have taken a note of that. I need to discuss it with my Supervisor before I can procced with it. For the moment he is convinced that I won't get the data I am looking for.

Jalashwa gravatar image Jalashwa  ( 2017-08-31 04:14:00 -0600 )edit