Kinovarobotics / Kinova-kortex2_Gen3_G3L

Code examples and API documentation for KINOVA® KORTEX™ robotic arms
https://www.kinovarobotics.com/
Other
118 stars 87 forks source link

Inaccurate robot's movement in Cartesian mode #168

Closed pouyan-asg closed 1 year ago

pouyan-asg commented 1 year ago

Description

Hi,

The problem I encountered is that when I want to control the robot in Cartesian mode, robot can not follow all waypoints accurately. In other words, consider robot receive two points in XYZ plane in which X and Z are constant. The difference between Y points are 14 inch but after touching the first point, robot touches the second point in 12.5 inches (1.5 inches less than expected). It seems a scale down happened but I checked all points and robot's input is true. In this example, if robot wants to touch exactly 14 inches differences in real-time, I should send the second point with location more that 14 inches. In order to be clearer, below is output of monitoring for two points with 14 inches differences.

[
    {
        "title": "base",
        "flat": true,
        "data": [
            {
                "title": "Operating Mode",
                "value": "Running",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Control Mode",
                "value": "monitoring.controlMode.CARTESIAN_WAYPOINT_TRAJECTORY",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Servoing Mode",
                "value": "Single Level",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            }
        ]
    },
    {
        "title": "actuators",
        "grid": true,
        "data": [
            {
                "isHeaderColumn": true,
                "title": "actuator #1"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #2"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #3"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #4"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #5"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #6"
            },
            {
                "isHeaderColumn": true,
                "title": "actuator #7"
            },
            {
                "isHeaderRow": true,
                "title": "position"
            },
            {
                "value": "18.871 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "18.69 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "196.044 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "230.988 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "171.03 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "34.554 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "312.651 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "isHeaderRow": true,
                "title": "torque"
            },
            {
                "value": "-0.278 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "7.038 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "-0.849 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "1.017 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0.276 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0.135 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "-0.022 Nm",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "isHeaderRow": true,
                "title": "velocity"
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "value": "0.001 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            }
        ]
    },
    {
        "title": "Interconnect",
        "flat": true,
        "data": [
            {
                "title": "Acceleration X",
                "value": "0.594 m/s²",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Acceleration Y",
                "value": "-0.907 m/s²",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Acceleration Z",
                "value": "-9.592 m/s²",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Angular Velocity X",
                "value": "0.07 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Angular Velocity Y",
                "value": "-0.368 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Angular Velocity Z",
                "value": "0.157 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            }
        ]
    },
    {
        "title": "end effector",
        "flat": true,
        "data": [
            {
                "title": "x",
                "value": "0.263 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "y",
                "value": "-0.163 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "z",
                "value": "0.02 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetax",
                "value": "-179.995 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetay",
                "value": "-0.002 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetaz",
                "value": "90 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear X",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear Y",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear Z",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular X",
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular Y",
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular Z",
                "value": "0.001 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose X",
                "value": "0.263 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Y",
                "value": "-0.163 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Z",
                "value": "0.02 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta X",
                "value": "-180 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta Y",
                "value": "0 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta Z",
                "value": "90 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            }
        ]
    }
]

and for second point is:

{
        "title": "end effector",
        "flat": true,
        "data": [
            {
                "title": "x",
                "value": "0.264 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "y",
                "value": "0.186 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "z",
                "value": "0.02 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetax",
                "value": "-179.995 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetay",
                "value": "0.005 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "thetaz",
                "value": "89.999 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear X",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear Y",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Linear Z",
                "value": "0 m/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular X",
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular Y",
                "value": "0 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Tool Twist Angular Z",
                "value": "0.001 °/s",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose X",
                "value": "0.264 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Y",
                "value": "0.186 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Z",
                "value": "0.02 m",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta X",
                "value": "-180 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta Y",
                "value": "0 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            },
            {
                "title": "Commanded Tool Pose Theta Z",
                "value": "90 °",
                "safety": {
                    "status": 3,
                    "safeties": []
                }
            }

As you can see, the points robot receive are correct but robot movements is not. Is there a setting issue in software side or it relates to hardware joints inaccuracy?

Thank you very much in advance for your time

Expected behavior

accurate movements toward waypoints

felixmaisonneuve commented 1 year ago

Hi @pouyan-asg,

I am not entirely sure I understand your issue. According to the feedback you shared, the arm moved to the corretc position for both points and the distance between them is about 14inches. Based only on the numbers, everything seems fine.

Or maybe this is the issue, numbers are fine, but the arm physically moves only 12.5 Inches?

Can you elaborate a bit more please.

Best, Felix

pouyan-asg commented 1 year ago

Hi @felixmaisonneuve ,

That's true. based on numbers, it shows fine but arm physically moves only 12.5 Inches (difference between actual number and desired value)

pouyan-asg commented 1 year ago

Kinova company directly solved the issue. Thanks

felixmaisonneuve commented 1 year ago

Out of curiosity, what was the issue?

pouyan-asg commented 1 year ago

That was a problem in one joint. After various tests, it showed that was a malfunction.