Heyo I'm Derek.
Who I Am I joined the lab at the beginning of the summer as part of the SUSP (Summer Undergraduate Scholars Program), which is basically an REU. I will be working with Amir Omidfar on designing a controller that uses an off center mass to control a rocket. I inherited this project from a senior capstone project done the previous school year. (I was not involved with the capstone)
Project Description The principle behind this controller is pretty simple, basically if you take a look at the diagram below:
Figure 1 (top) shows the conventional method of steering a rocket using a gimbaled rocket engine (this means that the rocket engine can swivel about a ball and socket joint), this causes a torque on the rocket which makes it turn.
Figure 2 (bottom) shows our proposed method, where we use a fixed rocket engine, shedding of all the weight of joints and actuators. Instead, we create a torque by using an off-center mass, the position of which we can control with a singular motor located either inside the off center mass, or the rocket body.
We believe that this controller may reduce the cost and/or weight of small scale rockets for launching small satellites/electronics into space for personal projects or research projects.
What My Responsibilities Are I am personally handling the derivation and simulation of the equations of motion of an equivalent system: a cylinder and a mass connected by a revolute joint (aka hinge joint). This is actually a fairly non trivial problem as the math for rigid bodies is pretty involved, and when constraints are taken into account, the algebra gets pretty ugly. Once derived, I plan to simulate the system in order to see if there are any characteristic behaviors of the system without a controller. Ideally, this part is done before the summer ends.
During the school year, I plan to move on to designing a controller that will enable the rocket to track straight and curved trajectories and reject disturbances in simulation. However, we do not know whether this will go smoothly, since a conventional PID controller may not work, due to the nonlinearities in the system.
My Current Progress As of this moment, I have found a paper that derives the equations of motion of 2 arbitrarily shaped rigid bodies connected by a revolute joint (ikr perfect), and I plan to go through the derivation of this paper along with the capstone report, and pick the one I like better to simulate.
I did not pick up right where the capstone left off because 1) there were numerous simplifications done in the derivation that I was not comfortable with 2) the derivation was later plugged into matlab, but matlab wouldn't return any result, so either the derivation or the implementation in code is at fault, and I feel it is not in the best interest of my time to wade through their code to figure it out. 3) I now have this published paper from a fairly authorative figure in rigid body dynamics simulations/ robotics that derives the equations for me.
Throughout the past week (since last Friday), I downloaded and set up a the "Rigid Body Dynamics Library"[2], which is a very commonly used library in robotics research. I had some trouble because the setup involved CMake and some linux commands, which I had to adapt to my windows computer. Additionally, some of hte default settings on Visual Studio were not what I needed them to be (that took me a day to figure out).
I feel like for most researchers it is best to get familiar with linux in their free time so that there isn't a huge learning curve when linux is involved.
Next Week's Plan Between today and next thursday, I plan to 1) understand every step of the derivation of the system 2) read some papers about designing controllers to learn common practice for design through simulation 3) read a chapter in [1] about the forward dynamics algorithms implemented in the library (and later I will read the inverse dynamics chapter for designing and simulating the controller) 4) get a graphical interface working for the library so that I can see how the system behaves.
Quick definitions: forward dynamics: given the system, current position, velocity, and all applied forces, calculate acceleration of the system. inverse dynamics: given the system and current position, velocity, and desired acceleration, find what force is needed to produce this acceleration
[1] https://link.springer.com/book/10.1007/978-1-4899-7560-7 [2] https://rbdl.bitbucket.io/