I'm trying to find a method to control a moveo 5dof arm. My goal is to calculate the right angle to turn for each stepper motor to reach a desired point in real environment. I've spent time looking at the jacobian inverse kinematics, but it really got me confused. According to some articles I've read, Jacobian is useful to calculate joints' velocity, but as far as I know, stepper motors operate at a fixed speed. So my question is can I use this method to just calculate the necessary angles for the steppers, or should I use another method? In both cases, can you please introduce to me some helpful articles to refer to? Many thanks


Without using the Jacobian, inverse kinematics provide joint angles to put the robot at a desired pose. But using inverse kinematics to move from one pose to another does not say anything about the path the robot will take between poses. Therefore, you can choose target poses that are pretty close together to have a robot follow a desired path. When those poses are infinitesimally close to one another, you enter the subject of Jacobians. These matrices map differential joint velocities to differential Cartesian velocities for a given pose. So if you are at pose A, the inverse Jacobian will provide a joint velocity vector in the direction of pose B. These have to be updated rapidly, though, because the Jacobian is only accurate in a small neighborhood of where it is computed.

Incidentally, stepper motors are not necessarily constant-velocity motors. They move one step for every pulse they receive. You can change the rate of the pulses to change the motor’s velocity.

  • $\begingroup$ So if i I got it right, then with the joint velocitie provided by the Jacobian, we can plan the specific path that the joints should go. Is it correct? $\endgroup$ – Nguyễn Thanh Tùng Dec 25 '18 at 1:53
  • $\begingroup$ And I'd like to ask if I really needed to calculate path as I'm using stepper motors, or would joint angles only do just fine? What's the difference between having the path and not having it? $\endgroup$ – Nguyễn Thanh Tùng Dec 25 '18 at 9:17
  • $\begingroup$ To go from point to point, you only need to use inverse kinematics. With those equations you can compute the joint angles needed to reach a desired pose, then convert those angles to the number of steps each motor needs to move. You only need the Jacobian if you care about the speed of the robot along the path. Even then, there are control methods you can use with just the position equations (such as via points) so you may not need the Jacobian at all. It depends on what you are trying to achieve. $\endgroup$ – SteveO Dec 26 '18 at 16:18

You will find it helpful to keep the physical robot and the math separate.

The kinematics equations map joint parameters (which are often grouped as a vector $q$) to Cartesian coordinates ($x$,$y$,$z$).

If you take the first-order partial derivative of the kinematics equations, you get a set of equations that map a change in the joint parameters to a change in the Cartesian coordinates. The Jacobian is another name for this first-order partial derivative.

It's true that if you consider a change over a fixed amount of time, you can call it a velocity, and you can use the Jacobian to map joint velocities to Cartesian velocities. But you have to be careful because these are instantaneous velocities and as soon as the position changes, the mapping between velocities changes as well.

To calculate inverse kinematics using the jacobian you will need solve or approximate inverse equations that map Cartesian changes to joint parameter changes, and then use an iterative algorithm to find the solution.

If you are not interested in learning the mathematics and numerical methods required to implement inverse kinematics, there are software libraries available that already solve the problem.

If you use an existing library, you should keep in mind that solving the inverse kinematics is a hard problem that often has no solutions or more than one solution.

  • $\begingroup$ I may have got it worng here, but should I take the derivative of the product matrix of transformation matrices? $\endgroup$ – Nguyễn Thanh Tùng Dec 25 '18 at 2:05
  • $\begingroup$ let's assume your output function $\vec{y}$ is the cartesian position of your robots end effector, then the derivative of $y$ w.r.t. time $t$ can be formulated as a product of the partial derivative $dy/dq dq/dt$ where the matrix $dy/dq$ is called the (manipulator) jacobian. $\endgroup$ – madn Dec 27 '18 at 8:02

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.