OK, I couldn't resits 😉
Here's my approach. Looks like the values are close enough to the one you expected and all conditions should be fulfilled. You may even use "Find" instead of "MinErr".
The use of the predefined guess vector for the angles isn't really elegant but the alternative would be to create a suitable guess vector of the correct size before calling the solve block function and add it as additional function argument.
I guess you are only interested in the velocities and not in the various values of the angles in each iteration step. If you should need all the angles, it should be easy enough to collect them in a matrix and return them as well.

BTW, is it possible that the time values you posted are a bit inaccurate 😉
