Welcome to Thamine & Steven's CS283 Project 4
Introduction:
Welcome to our CS283 project4: "Inverse Kinematics".
What we implemented:
- n-joint inverse kinematics, where n is any arbitrary integer value (ex. 4-joint, 8-joint, 20-joint), and we've implemented it with arbitrary lengths that vary from joint to joint
- Added functionality for user to input number of joints to model
- The .exe (binary) is called KINEMATICS
How we implemented our project:
We started off implementing a basic viewer with cones representing our connected joints. We kept everything confined to the x-z plane, so each cone would rotate about the y-axis. We used the coordinate system where each cone had an angle of rotation defined by the previous joint's rotated axis. In order to develop a user interface, we used the mouse drag function and raycasting to project our mouse onto the x-z plane. We used this functionality to specify the goal point. When the goal point is too far away, we perform the inverse kinematics in small incremental displacements.
We implemented a general inverse kinematics algorithm for an arbitrary number of joints in a chain. Using our coordinate system, we calculated the jacobian by taking the derivatives of each angle. For matrices that weren't 4x4, we implemented a matrix multiply algorithm in order to computer the pseudo-inverse using our jacobian matrices. We used the pseudo-inverse with the transposed jacobian and damped least squares as shown in the paper: http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pdf
This gave us more stability in our algortihm and enabled our solutions to converge in exchange for a minor cost in accuracy.
Troubles/Difficulties:
There were a lot of issues with matrix multiplication and transposing the jacobian to get our calculations to work out. Other than that, the project went pretty smoothly. So we just had to debug our matrix algortihm and parts of the jacobians we calculated.
Videos:
4-joint inverse kinematics
8-joint inverse kinematics
Overall + Course Reflection:
We really enjoyed this project, and even though the math was a bit tedious at times, we worked it out in the end by debugging thoroughly. The course was great and we really enjoyed our time here in CS283.