chip updates: the hard parts (implementing the Jacobian) [updates]
Okay yes, so here comes the hard part. We're going to try to do full-leg position control using the xyz frame and the Jacobian we developed earlier. This will take some time. But we talked about it before and now it's just time to implement it.
Now there are a few steps to this process:
(1) Update Leg.java with the leg models of the leg according to the way we calculated the Jacobian
(2) Update Leg.java to be able to store a TRAJECTORY
(3) Write a genTrajectory() node that takes in a desired coordinate and generates a linear trajectory at a certain speed to get there (the reason for this is so that we don't overcurrent or super-speed anywhere and we can use the Jacobean for feedback positioning)
(4) Create closed-form solutions to the Jacobian model and implement them in a method
(5) Command the motors
The first thing we did was add the L1-L6 values and the trajectory of the leg in the leg model. We also created a home variable (not shown) that stores the HOME position of the leg.
We also wrote the methods of getThetas() and forwardsKinematics() which gets the current values of THETA from the leg positions and performs the forwards kinematics on the leg respectively.
Now what we need to know is when we follow this trajectory. We will basically need to POP from the ArrayList because that's the only way this trajectory will go to zero length. That's how we know we're following it right? So right now I just want to check trajectory generation.
We're going to command the robot to (0, -0.5, 0) in meters and see what the trajectory gives us... we're just printing it not following it yet.
OKAY we printed the trajectory and awesome, we are getting a trajectory!
What we're adding now is calculating the Jacobian, calculating delta thetas, the cmds to motors, and etc. We'll post the code here later but basically we are doing exactly what we described in the post where we talked about the control structure of CHIP.
So after trying all of that above nonsense... I think we're going to try a different control structure. Forget the Jacobian, let's write out OWN feedback control we can start from scratch here's how it will work. I deleted all the changes because it is simpler to start from the beginning because of how much of a mess the previous code was.
SAY HI TO SIMPLE FEEDBACK CONTROL COMING SOON! I'm going to write/test the code and THEN log so you don't get a mess of thoughts.
The new control strategy isn't working and I need a break. I also realized the control strategy I just tried is basically the same as the last one. We really need a new strategy that doesn't involve the Jacobian at all.