Application Center - Maplesoft

App Preview:

Robot Arm Modeling

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

Robot Arm Modeling 

Introduction 

This demonstration illustrates the power of Maple to create a mathematical model of a robot arm. Maple is able to quickly solve problems using the model and visualizes the results. 

The following Maple techniques are highlighted: 

  • Creating a model
 

  • Using the model to solve a problem
 

  • Visualizing the model using a three-dimensional animation
 

Initialization 

> restart; 1with(LinearAlgebra); -1with(plots); -1with(plottools); -1
 

The Example 

This application implements a mathematical model of robots based on the homogenous transformation of Denavit & Hartenberg. The worksheet derives the Matrix of D&H, and applies it to the motion of a robot "elbow".  By means of symbolic solution of the function for the angular position Theta[i] of planar joints, we can calculate the actual values, the position parameters for the given path of the movement of robots. 

Image 

Definition of Transformation Matrix 

The transformations Matrix of rotation around co-ordinate axis z[i] by angle thetai+1 (actually simple theta) is A1, the transformation Matrix of  movement in the direction of z[i] by distance di+1 (actually simple d) is A2.
The common transformation Matrix of the rotation and movement is B1.
 

 

 

> `:=`(A1, Matrix([[cos(theta), `+`(`-`(sin(theta))), 0, 0], [sin(theta), cos(theta), 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])); -1`:=`(A2, Matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, d], [0, 0, 0, 1]])); -1`:=`(B1, Multiply(A2, A1)); -1
 

 

The transformations Matrix of rotation around co-ordinate axis x[`+`(i, 1)] by angle alpha[`+`(i, 1)] (actually simple alpha) is A3, the transformation Matrix of  movement in the direction z[i] by distance a[`+`(i, 1)] (actually simple a) is A4.  
The common transformation Matrix of the rotation and movement is B2.
 

  

> `:=`(A3, Matrix([[1, 0, 0, 0], [0, cos(alpha), `+`(`-`(sin(alpha))), 0], [0, sin(alpha), cos(alpha), 0], [0, 0, 0, 1]])); -1`:=`(A4, Matrix([[1, 0, 0, a], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])); -1`:=`(B2, Multiply(A3, A4)); -1
 

 

The Matrix of D&H designed as more specialized transforms for robots
z[`+`(i, `-`(1))] axis along the motion of its ith joint
x[i] axis normal to z[`+`(i, `-`(1))] axis, and points away from it.
 

The steps of transformation are: 

1. rotating about z[`+`(i, `-`(1))] by Theta (joint angle)
2. translating along z[`+`(i, `-`(1))] by d (link offset)
3. translating along x[i] by a (link length)
4. rotating about x[i] by alpha (link twist) .
The general transformation of D&H Matrix is
 

> `:=`(H, Multiply(B1, B2))
 

Matrix(%id = 65301100) (4.1)
 

>
 

Transforming the Robot Arm 

The substitution of the actual geometrical parameters into the Matrix H provides the actual matrices for transformations of arms of the Elbow type robot H1, H2, H3. The final transformation expressed by Matrix H14 = H1.H2.H3.  

> `:=`(H1, map(proc (x) options operator, arrow; eval(subs(theta = theta2, alpha = `+`(`-`(`*`(`/`(1, 2), `*`(Pi)))), a = 0, d = l2, x)) end proc, H)); -1`:=`(H2, map(proc (x) options operator, arrow; eval(subs(theta = theta3, alpha = 0, d = 0, a = l3, x)) end proc, H)); -1`:=`(H3, map(proc (x) options operator, arrow; eval(subs(theta = theta4, alpha = 0, a = `+`(l4, l5), d = 0, x)) end proc, H)); -1
 

> `:=`(H14, Multiply(H1, Multiply(H2, H3))); -1
 

>
 

 

Basically, we can find the joints angles, Theta[2] for the robot based on the given position r(t) of the end effector.
The joints angles are in closed form derived. 

The problem is to find the joint parameters  given only by the numerical values of the homogeneous transformation which model the mechanism. Solution of the problem is where to drive the joints in order to get the hand of an arm in the right place. 

We may try to solve the problem by examining the transformation Matrix. 

You can type the function r(t) of path in this place! 

        

> r(t):=x(t)=350+120*sin(2*t),y(t)=350-150*cos(t),z(t)=450:
 

> `:=`(v, Vector([0, 0, 0, 1])); -1`:=`(w, Multiply(H14, v)); -1
 

> `:=`(eq1, `/`(`*`(w[1]), `*`(w[2])) = `/`(`*`(x(t)), `*`(y(t)))); -1`:=`(Theta2, solve(eq1, theta2)); 1
 

arctan(`/`(`*`(y(t)), `*`(x(t)))) (5.1)
 

> `:=`(u, expand(`+`(`*`(`^`(w[1], 2)), `*`(`^`(w[2], 2)), `*`(`^`(w[3], 2)), `-`(A)))); -1`:=`(uu, simplify(u, trig)); -1`:=`(uuu, combine(uu, trig)); -1
 

> `:=`(v, expand(`+`(combine(w[3], trig), `-`(z(t))))); -1`:=`(vv, `+`(`-`(`*`(2, `*`(l2, `*`(combine(v, trig))))))); -1`:=`(W, expand(`+`(uuu, vv))); -1`:=`(Theta, solve(W, theta4)); -1
 

> `:=`(Theta4, subs(A = `+`(`*`(`^`(x(t), 2)), `*`(`^`(y(t), 2)), `*`(`^`(z(t), 2))), Theta)); 1
 

arccos(`+`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(`^`(x(t), 2)), `*`(`^`(y(t), 2)), `*`(`^`(z(t), 2)), `-`(`*`(2, `*`(l4, `*`(l5)))), `-`(`*`(`^`(l4, 2))), `-`(`*`(`^`(l3, 2))), `-`(`*`(`^`(l5, 2))), `*`(`^`(... (5.2)
 

> `:=`(W1, `+`(combine(w[3], trig), `-`(z(t)))); -1`:=`(W2, expand(subs(theta4 = Theta4, W1)) = 0); -1
 

Remark: the joint parameter

 

> `:=`(sol, solve(W2, theta3)); -1`:=`(Theta3, `+`(simplify(sol[2], trigonometric), `*`(`/`(1, 2), `*`(Pi)))); -1
 

Animation of the robot 

The arm lengths an radius parameters of Elbow type robot are l2, ...,  l5 and rho1,  ..., rho5. The angles alpha2 and alpha3 are for orientation of patch curve.  

> halmaz := [alpha2=evalf(Pi/4), l2=500, l3=450, l4=350, alpha3=1, r(t), l5=200]:N := 50:
 

> rho1 := 150: rho2 := 70: rho3 := rho2+5: rho4 := 60: rho5 := 50:w := 15:
 

> `:=`(rho6, rho5); -1; `:=`(l2, rhs(halmaz[2])); -1; `:=`(l3, rhs(halmaz[3])); -1; `:=`(l4, rhs(halmaz[4])); -1; `:=`(l5, rhs(halmaz[9])); -1
 

> for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
for p from 0 to N do `:=`(s, evalf(`+`(`/`(`*`(2, `*`(Pi, `*`(p))), `*`(N))))); `:=`(hh, evalf(subs(t = s, halmaz))); `:=`(px[p], rhs(hh[6])); `:=`(py[p], rhs(hh[7])); `:=`(pz[p], rhs(hh[8])); for i f...
 

> `:=`(C1, cylinder([0, 0, 0], rho1, 80, color = red, grid = [w, 2])); -1`:=`(C2, cylinder([0, 0, 0], rho2, l2, color = blue, grid = [w, 2])); -1`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1`:=`(CY4, cylinder([0, 0, 0], rho4, l3, color = yellow, grid = [w, 2])); -1`:=`(CY5, rotate(cylinder([0, 0, 0], rho4, `+`(`*`(2, `*`(rho4))), color = magenta, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0)); -1`:=`(CY6, cylinder([0, 0, 0], rho6, l4, color = gold, grid = [w, 2])); -1`:=`(CY7, cone([0, 0, 0], rho6, l5, color = red, grid = [w, 2])); -1
 

> `:=`(C1, cylinder([0, 0, 0], rho1, 80, color = red, grid = [w, 2])); -1`:=`(C2, cylinder([0, 0, 0], rho2, l2, color = blue, grid = [w, 2])); -1`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1
`:=`(CY3, translate(rotate(cylinder([0, 0, 0], rho3, `+`(`*`(2, `*`(rho3))), color = green, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0), 0, `+`(`-`(rho3)), l2)); -1`:=`(CY4, cylinder([0, 0, 0], rho4, l3, color = yellow, grid = [w, 2])); -1`:=`(CY5, rotate(cylinder([0, 0, 0], rho4, `+`(`*`(2, `*`(rho4))), color = magenta, grid = [w, 2]), evalf(`+`(`*`(`/`(1, 2), `*`(Pi)))), 0, 0)); -1`:=`(CY6, cylinder([0, 0, 0], rho6, l4, color = gold, grid = [w, 2])); -1`:=`(CY7, cone([0, 0, 0], rho6, l5, color = red, grid = [w, 2])); -1`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...
`:=`(rajz, proc (NKEP) local p, i, C3, C4, C5, C6, C7; option remember; global Theta, CY3, CY4, CY5, CY6, CY7, kep; for p from 0 to NKEP do for i from 2 to 4 do `:=`(Theta[i], b[p, i]) end do; `:=`(C3...rajz(N); -1`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
`:=`(palya, pointplot3d([seq([px[u], py[u], pz[u]], u = 0 .. N)], color = blue, axes = none, style = line, connect = true)); -1
 

> for s from 0 to N do `:=`(T[s], display([kep[s], palya], scaling = constrained, orientation = [80, 70])) end do; -1
for s from 0 to N do `:=`(T[s], display([kep[s], palya], scaling = constrained, orientation = [80, 70])) end do; -1
for s from 0 to N do `:=`(T[s], display([kep[s], palya], scaling = constrained, orientation = [80, 70])) end do; -1
for s from 0 to N do `:=`(T[s], display([kep[s], palya], scaling = constrained, orientation = [80, 70])) end do; -1display(seq(T[s], s = 0 .. N), insequence = true)
 

Plot
 

Legal Notice: The copyright for this application is owned by Maplesoft. The application is intended to demonstrate the use of Maple to solve a particular problem. It has been made available for product evalution purposes only and may not be used in any other context without the express permission of Maplesoft.