robotology / assistive-rehab

Assistive and Rehabilitative Robotics
https://robotology.github.io/assistive-rehab/doc/mkdocs/site
BSD 3-Clause "New" or "Revised" License
20 stars 11 forks source link

Evaluate the range of motion of the lower limbs #182

Closed vvasco closed 5 years ago

vvasco commented 5 years ago

We want to evaluate the range of motion of the lower limbs (hip, knee, ankle) in order to understand if optimization is required.

vvasco commented 5 years ago

For carrying out the motion analysis, we typically transform the skeleton's keypoints (defined with respect to the camera) into the skeleton system, which assumes the skeleton's planes to be reliable. Such planes cannot be extracted if the skeleton is not observable, for example if the robot observes the user from a side, as keypoints are occluded.
Furthermore, in such scenario, openPose is more likely to provide false detections (keypoints which are not directly observable), as shown in the following figures:

FD = shoulder,elbow FD = shoulder FD = shoulder,elbow
(FD = false detections)

Keypoints from the right side of the user (in yellow) are detected even if not visible. When projected in 3D, this will cause the planes to be wrong.

For guaranteeing a good level of observability, the robot can navigate along a straight path and such that the observability of the keypoints is maximized.

vvasco commented 5 years ago

Given the previous observations, I used a dataset with a person moving towards the camera, with all keypoints visible. 3D keypoints are estimated (as done in #183) and transformed into the skeleton system. The transformation matrix is computed only once at the beginning. The ROMs of the hip, the knee and the ankle were computed (using this script.zip) as following:

3d_rom

Results go towards the necessity for optimization: the segment Ankle-Tip is quite unstable and also segments Knee-Ankle and Hip-Knee form an unnatural angle during walking.