Search code examples
arduinoraspberry-piroboticsinverse-kinematics

denavit hartenberg 6dof moveo inverse kinematic robot arm


I need your help. I cant get the denavit hartenberg matrix right. (for this robot: https://github.com/BCN3D/BCN3D-Moveo) My robotic arm has 6 dof (normal one has only 5) but I dont get how to configure the theta and alpha variable for it. Current matrix looks like this:

joint d r alpha theta
1 232.0 0 ? ?
2 0 223.0 ? ?
3 0 0 ? ?
4 224.0 0 ? ?
5 0 0 ? ?
6 175.0 0 ? ?

(If this table doesn't look right click here) The robotic arm is looking straight in the air while being in the home position.

How does the denavit-hartenberg matrix look like?

More pictures: https://www.bcn3d.com/bcn3d-moveo-the-future-of-learning/


Solution

  • DH Parameters allow us to fill in the elements of our transformation matrices according to a schema. This schema has some limitations to it, which sometimes calls for clever tricks to get by any issues - but more on that in a minute.

    First off, about the parameters themseleves.

    • d is the distance between two frames i and (i-1) along the z axis of (i-1).
    • a - or r in your case - is the distance between two frames i and (i-1) along the x axis of i.
    • theta is the angle between the x axes of i and (i-1) about the positive z axis of the (i-1) frame
    • alpha is the angle between the z axes about the newly rotated x axis after the rotation of theta has been applied

    Furthermore, DH notation presupposes the following about the axes of the coordinate frames:

    • the z-axis always points along the axis of actuation (that is, rotation in your case).
    • the x-axis of the frame i has to intersect the z-axis of the frame (i-1)
    • the y-axis is set such that the frame forms a right-hand coordinate system

    Below is an image of your system in the home pose with coordinate frames applied according to DH notation.

    home pose kinematic chain

    As you might notice, DH Notation does not allow for a displacement between the rotation and torison joint frames. This is not a problem, since mathematically it does not make a difference on where the rotation occurrs. The curved lines denote that the relevant frames are placed in the same position for notation purposes.

    table snapshot

    Now the only thing you have to do is think about where the rotations of your joints might be inserted into the DH-table as well as the displacement beteween the rotational frames (l1 through 4).

    You may then insert the DH Parameters into the DH Matrix for each frame and use these transformations for your kinematic calculations.

    For future questions, you might want to think about posting them at the Robotics Stack Exchange site, it will probably be easier to get an answer there very quick.