Pages

Friday, May 31, 2019

CCD - Joint Rotation Constraints (2nd Attempt)

While I have struggled to find IK sources which describe this problem or solutions to it, further reading and involvement in robotics/maths forums did indicate some potential solutions.

Using these prompts and research from recent weeks I have made multiple more attempts to rewrite my constraint method and CCD script itself to keep the CCD function, while allowing joints to rotate within their defined boundaries.

Alternate Attempts 

Thursday, May 9, 2019

CCD - Joint Rotation Constraints, Further Research

Euler Angles 

Euler angles describe the orientation of rigid body in a within a static coordinate system.
“Any orientation can be decomposed into three elemental rotations”: x (yaw), y (pitch) and z (roll). These three elemental angles can then be concatenated to yield the desired orientation" (Kenwright, 2013, p. 4).
Because each angle is decomposed into elemental axis rotations, using Euler angles within an IK solution would make limiting specific joints degrees-of-freedom to explicit rotations straightforward.
In a 2D IK solution this would provide results as intended, though in a 3D IK solutions gimbal lock would have significant negative impact on the functionality of the algorithm.

Figure 1: no aligned axis, no Gimbal lock (Wikipedia Contributors, 2019) Figure 2: aligned axis, Gimbal lock (Wikipedia Contributors, 2019)

Friday, April 26, 2019

CCD - Joint Rotation Constraints (1st Attempt)

My current solution does nothing to prevent overextension of joints, nor tight configurations of joint angles which “cause the chain to form a loop, intersecting itself” (Mukundan, 2009, p. 304).

Figure 1: Common drawbacks of CCD, including chain intersection (Mukundan, 2009, p. 304)

The problems this creates are clear - an example is demonstrated in figure 2:
Figure 2: Unconstrained solution allows intersections and overextension of joints

The animations my solutions produce must preserve the natural limits of the human body. Limiting the range of each joints’ rotation, coupled with the comparatively low degree of freedom of human limbs and my controllable trajectory plotter, should prevent the above problems.

Monday, April 8, 2019

CCD - Multi-End Structures

During my research for joint bias, I came across the concept of multi-ended kinematic structures. While this was not in my initial development plan, it should provide more natural reaching behaviour and with my current functionality should be a simple to implement in addition to constraining rotation of chain joints this week.

Kenwright (2013, pp. 63-64) discusses how the typical CCD algorithm can be applied to multiple hierarchy structures with separate end effectors.

“It work inwards from the end-effectors and bias the constrain update order towards the starting end-effector (i.e., by bouncing back to the start each time a joint moves), we can avoid joint ownership fighting. In such situations, however, the last updated sequence of joints for an end-effector will get priority on the final orientation (or length) of joints.” (Kenwright, 2013, pp. 63-64)

Monday, March 25, 2019

CCD - Joint Bias and Rotation Damping

Joint Bias 

As discussed by Bouckley (2018) the seeking action of CCD through a kinematic chain does not effectively mimic the natural motion of a human. A human will choose to move there limbs as little as possible to reach their goal, only moving their spine if it becomes necessary, whereas my solution will update every link in the chain each iteration.

To simulate more organic movement of the chain, Kenwright (2013, pp. 59-64) and Bouckley (2018) suggest giving joints closer to the end effector a higher bias, which will cause the joint order to “bounce back towards the start end and updates earlier joints” (Kenwright, 2013, p. 60) each time a joint is corrected, before progressing to the subsequent joint in the chain.

Figure 1: Joint bias
This favouring one chain end for joint correction more closely mirrors the natural joint accommodation behaviour of humans.

Tuesday, March 12, 2019

Cyclic Coordinate Descent - Implementation

Accommodating Chains of Greater Degrees of Freedom 

“When the number of links in a joint chain becomes greater than three, analytical methods usually become complex and difficult to implement.” (Mukundan, 2009, p. 1)

The function of a Cyclic Coordinate Descent (CCD) algorithm allows for control of highly articulated systems, well beyond 3 degrees of freedom which my current analytical solution limits me to.

As explored in my earlier inverse kinematics approaches blog, a heuristic iterative search aims to place the end effector as close to the target position as possible by performing a series of one-bone corrections in turn, along the length of the limb.

Thursday, February 28, 2019

Progress Presentation Feedback

Feedback received from the progress presentation indicates tutors are pleased with my progress and agree that my updated milestones from the initial project proposal have become more accurate and remain appropriate for completion of the project.

During the question period following the presentation I discussed including true physics interactions with the biped, simulating gravity and balance with a true inverted pendulum and support plane.
Lecturers were quick to point out that the scope of this addition is significant, and they expect it to be far too large for a stretch goal. I agree with their assessment and unless I manage to complete the MVP with substantial time remaining, will focus instead on polishing the existing functionality.