Dobot Inverse Kinematics


#1

I am trying to move Dobot to a predefined (x,y) coordinates, but the firmware only supports movement with angles. Therefore, implemented inverse kinematics and Dobot moves perfect when there is only one axis such as (x,0,0) or (0,y,0) or (0,0,z). I have to combine these coordinates to go to a (x,y,z) point. Do you have any equations for the relationship between these axes? Any help will be appreciated.


#2

Did you check the official website for the communication protocols and the API Reference and Developing Examples? With those API you can move Dobot in joint jog mode or target moving mode, which is these (x,y,z) coordinates you want. Check this link to download them:
http://dobot.cc/download-center/


#3

I’ve read all your documentation, correct me if I’m wrong but the functions seem to work with angle values as inputs. I could not see any function takes coordinates as input.


#4

Then have you noticed the target moving mode here?


you can send coordinates to Dobot directly under state=3. And check out this example here:
http://dobot.cc/tutorial/demos-for-dobot-second-development/27/27.html


#5

yes, I saw these but it was written at the document state 3 is for vision control below this illustration, I don’t want to control via vision. Is this make any difference? By the way thank you for your instant reply I wasn’t expecting.


#6

No, this is not only used for vision control, you can use it at any time you want. I think maybe we need to use another word to describe this mode, not “vision” , target moving mode is much more better : )


#7

Ok. Then I will try with state 3 I hope it works, because I am working on it so long and could not find any help.


#8

I have another question about this, here I have to get an external Arduino, is there a way to do this without external Arduino board only using FPGA?


#9

You can do this using another language, Python, Java or WPF, either will do, no need external Arduino board. Just plug in your dobot to the PC and check out the demo examples and you’ll know how to do it.


#10

I’ve implemented the codes in the Demo but are these coordinates in mm, pixels or what? Because, It is not moving as expected.


#11

The coordinates are in mm. What’s the problem?


#12

For example I enter the values (50,60,10), Dobot does not move. I’ve imported the header files in the API and looked to the demo files could not find the problem.


#13

That coordinate will not work, it’s in the limit position, so dobot will not move. The original coordinate of dobot is as follows:


So if the X axis is too close to the base, it will collision with the arm itself. Thus we set a limit position to it’s working envelope to void the collision. I think the proper range of X axis is about 150-300mm.


#14

So, the application shows (215,28,135) something like that when all the joints are 0 because of this issue. The reference is the joint2 but not the base frame.


#15

Not just X axis, all the joints have a limit position, so you need to find out the proper range.


#16

Ok I got what you said, but this time I’ve downloaded the .dll files and put all in the same folder. I always got the “ld exit status 1” error. I think the program can not access the dll files. How can I fix this?


#17

Do you have a screenshot about this error?


#18

This is the error I got. Also I am working with Qt.


#19

Hey, I fixed the errors. And I saw that my inverse kinematics calculations are true, but Dobot has a slip of 2 cm by its own. For instance, when I send (265.070,50,135) it goes to (50,60,135) there is a 1 cm offset which gets bigger with value.


#20

Inverse kinematics are something different which i haven’t used so far. Fix Error code 0X0070002
helped me a lot to get this solution.