Prototype 1
This Numerical Analysis project’s objective was to create a path for Neo, a 2-dimensional robot that grasps two boxes simultaneously in MATLAB. I was able to achieve this by defining Neo as a set of 6 parameters and 6 variables. These parameters were the radius of the wheels, the height of the base rectangle, and the length of each arm. We then defined its position at any given time by Neo’s horizontal position and the angles of each joint.
With this information, I randomly selected the positions of n-pairs of boxes, and used Newton’s Method to find Neo’s configuration to grasp each box. With the positions I found using Newton’s Method, I applied cubic splines to allow Neo to smoothly move towards each dualbox.
With improved initial conditions for Neo, I was able to increase the success rate of grasping the boxes to around 94%.

Prototype 2
As I was brainstorming for future development for Neo, I came up with an idea to add a design variable that would give Neo 7 degrees of freedom rather than the 6 prior. The design variable I added was breaking Neo’s first link into 2. Now, rather than having one link break off into 2, Neo has 2 whole arms. By doing so, we were able to define Neo’s position as a combination of the same parameters, except having a whole new link of the same length as before, and his 7 variables.
In order to converge to solutions, I needed to apply a variation of Newton’s Method that converges for underdetermined systems, which I found here. To apply this variation of Newton’s Method, I updated Neo’s position function, Jacobian of the function, and adjusted the code for the animation.
After running 30 environments with both prototypes, prototype 2 delivered with a success rate of 100%. This prototype was able to converge to all 300 boxes with no issues with convergence, while prototype 1 converged to 94% of the boxes. However, as I kept messing around with environments, I was able to find one pair of boxes that prototype 2 could not converge to. Because of this, I would say that the convergence rate of this prototype is likely somewhere over 99%.

Visualizing the Underdetermined Solution
In linear algebra, we learned that free variables cause a system to have a solution vector, where the solution lies on a line in a certain vector space. However, since the 7-variable function defining Neo is nonlinear, the solution can be thought to exist on some solution curve in 7-space.
With this in mind, I wanted to create a visual representation of this somehow. At first, I defined my environment as one pair of boxes, and iteratively changed the initial conditions to converge to different roots. From there, I used cubic splines to smoothly connect the solutions. However, I wanted an even better visualization. With a suggestion and description from Professor Borum, I ended up choosing to use numerical continuation to visualize the “solution curve”. By choosing our initial guess to be in the null space of the Jacobian, the method converges quickly; to keep “propagating the solution in one direction”, I updated the initial guess as the difference between the previous 2 solutions.
Thanks to Professor Andy Borum for advising this project!
