Closed vvasco closed 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.
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:
Hip-Knee
and the segment Neck-MidHip
(green) in the sagittal plane;Knee-Ankle
and the segment Hip-Knee
(red) in the sagittal plane;Ankle-Tip
and a reference direction in the sagittal plane.
Note: the tip was estimated as middle point between BigToe
and SmallToe
if both visible or set equal to the one visible. The reference direction is the normal to the coronal plane.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.
We want to evaluate the range of motion of the lower limbs (hip, knee, ankle) in order to understand if optimization is required.