User Tools

Site Tools


ece4560:lynx6:06resratefull

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ece4560:lynx6:06resratefull [2017/11/16 18:55] pvelaece4560:lynx6:06resratefull [2023/12/03 12:19] (current) classes
Line 4: Line 4:
 Here, the Lynx6 manipulator Jacobian (using your link lengths) will be used to follow a trajectory.  For this problem, attempt to generate a trajectory from the initial Here, the Lynx6 manipulator Jacobian (using your link lengths) will be used to follow a trajectory.  For this problem, attempt to generate a trajectory from the initial
 $g_i$ from the spline problem that moves with a constant body velocity $\xi$ to the final location $g_f$ in the same amount of time as given for the spline problem.  Since the initial joint values $\alpha$ were known, the start condition is known.  The trajectory should then $g_i$ from the spline problem that moves with a constant body velocity $\xi$ to the final location $g_f$ in the same amount of time as given for the spline problem.  Since the initial joint values $\alpha$ were known, the start condition is known.  The trajectory should then
-flow according to the velocity $\xi$ for the allotted time.  Turn in the value $\xi$ computed.+flow according to the velocity $\xi$ for the allotted time.  
  
-=== Setup/Implementation ===+=== Setup / Implementation ===
 Using the past resolved rate trajectory generation code for ''piktul'' as an example, add the necessary functions that will do so for the ''lynx6''. Call the function ''genTrajectory'' where it is assumed that some kind of $SE(3)$ function of time and body velocity function of time is given in a structure built with ''traj.gvec'', ''traj.gdot'', and ''traj.tspan''  In reality, you will probably only need the body velocity structure field, not the configuration structure field. The output of the system should be a set of joint angles versus time that will move the arm to follow the specified trajectory.  It can be in the output format of ''ode45'' and should be in a structure with the fields as per: ''jtraj.alpha'' and ''jtraj.time''. Using the past resolved rate trajectory generation code for ''piktul'' as an example, add the necessary functions that will do so for the ''lynx6''. Call the function ''genTrajectory'' where it is assumed that some kind of $SE(3)$ function of time and body velocity function of time is given in a structure built with ''traj.gvec'', ''traj.gdot'', and ''traj.tspan''  In reality, you will probably only need the body velocity structure field, not the configuration structure field. The output of the system should be a set of joint angles versus time that will move the arm to follow the specified trajectory.  It can be in the output format of ''ode45'' and should be in a structure with the fields as per: ''jtraj.alpha'' and ''jtraj.time''.
  
 You will also need to write a function called ''Jacobian'' that computes the (linear and angular) body velocity of the end effector as a function of the $\alpha$ coordinates. For completeness, you should include all $\alpha$ coordinates in it (the last one will just have a zero column since it doesn't contribute to movement, it just opens/closes the gripper). For sure you will also reuse the ''followJointTrajectory'' function to make it happen.  The script you wrote for the last homework can be recycled and modified to work for this problem. You will also need to write a function called ''Jacobian'' that computes the (linear and angular) body velocity of the end effector as a function of the $\alpha$ coordinates. For completeness, you should include all $\alpha$ coordinates in it (the last one will just have a zero column since it doesn't contribute to movement, it just opens/closes the gripper). For sure you will also reuse the ''followJointTrajectory'' function to make it happen.  The script you wrote for the last homework can be recycled and modified to work for this problem.
  
-//Note:// Probably you will notice we are in the kinematically insufficient case, for which I said one should never try to do the psuedo-inverse since it will be wrong always.  That is the case here, regarding being wrong. Probably I should just be doing resolved rate trajectory generation with the end-effect position and ignoring the orientation, or making sure that my desired trajectory is legit.  For the sake of this problem, let's just ignore this untidy fact and pretend it's all good.  +//Note:// Probably you will notice we are in the kinematically insufficient case, for which I said one should never try to do the psuedo-inverse since it will be wrong always.  That is the case here, regarding being wrong. Probably I should just be doing resolved rate trajectory generation with the end-effect position and ignoring the orientation as for the [[ece4560:lynx6:05resratepos | previous resolved rate implementation]], or making sure that my desired trajectory is legit.  For the sake of this problem, let's just ignore this untidy fact and pretend it's all good.  
  
 === Deliverables === === Deliverables ===
  
-1. Since this manipulator is kinematically insufficient, it most likely won't be able to follow the exponential trajectory.  You can see this by printing the original final end-effector configuration $g_e(\alpha_f)$ and the one from the resolved rate trajectory $g_e(\alpha(t_f))$.  Compute their difference by doing $g_{err} = \inverse{\of{g_e(\alpha(t_f))}} g_e(\alpha_f)$ and then taking the logarithm to get $\xi_{err}$.  Turn in all of the quantities described here.  What is the norm of $\xi_{err}$?  That gives an indication of how close the two are.+1. Turn in the value $\xicomputed.
  
-2. Demo the final generated trajectory with the ''lynx6'' manipulator.+2. Since this manipulator is kinematically insufficient, it most likely won't be able to follow the exponential trajectory.  You can see this by printing the original final end-effector configuration $g_e(\alpha_f)$ and the one from the resolved rate trajectory $g_e(\alpha(t_f))$.  Compute their difference by doing $g_{err} = [g_e(\alpha(t_f))]^{-1} g_e(\alpha_f)$ and then taking the logarithm to get $\xi_{err}$.  Turn in all of the quantities described here.  What is the norm of $\xi_{err}$?  That gives an indication of how close the two are. 
 + 
 +3. Demo the final generated trajectory with the ''lynx6'' manipulator.
  
  
ece4560/lynx6/06resratefull.1510876520.txt.gz · Last modified: 2023/03/06 10:31 (external edit)