chip updates: the new IK WORKS!!! [updates]
Okay so last time (https://www.adim.io/post/chip-updates-getting-3d-inverse-kinematics-to-work-updates) we talked about getting 3D inverse kinematics to run in the pybullet simulator. Today we thought we'd write a driver and try some simple experiments in 3D IK on the actual platform itself! There's some differences between the "thetas" calculated by the IK on the computer simulation and the reference directions of the platform itself. Check out the table for a summary:
So essentially what we needed to do was port over the code for a "headless" simulator, and the functions for the inverse kinematics to the robot. Then we needed to write a driver to address the above issues and try this whole thing out. The system looks kinda like this:
We ended up writing a whole class called "libIK" to do the IK and deal with all the coordinate transforms and etc. The headless simulator run in the main "chip.py" file and sends information from the URDF files and the simulator to libIK. libIK then performs its calculations and sends it all back to the platform.
The driver wasn't particularly wrong, and also all the code is very similar to the code for the GUI simulator except for the setting to turn off the actual GUI. We're using realtime simulation settings on pyBullet (and the code is not included in this post).
This worked! Here's a picture of the platform with an initial motion. Next time we're going to properly zero the platform and run the IK to test things like yaw control, z-control, and etc.
So whole platform IK seems to be working now :) this is much better than what we had before!!! Again, we'll test some other things later. Here are some worries for now:
Join limits, we included joint limiting in the "publish commands" method of the original chip software. We may want to get rid of that and do all the join limiting in libIK/headless simulation instead.
Overcurrent issue, we now are actuating all 12 motors at the same time whereas before we were only actuating 8. We may need to drop the current limit to 0.12 / 1.0 instead of 0.14 / 1.0 to compensate for all motors moving at once.
But for now, this is a huge success!!!