-
Notifications
You must be signed in to change notification settings - Fork 12
expressiongraph_ops
Each of the types double, Vector, Rotation, Frame, Twist, Wrench have a series of nodes (and corresponding functions) defined.
For the Expression<double>, the following is defined( d,d1,d2,x and y are of type Expression<double>::Ptr), L and H are of type double :
| Description | Node Type | Function/operator |
|---|---|---|
| Summation of two double values. | Addition_DoubleDouble | d1 + d2 |
| Subtraction of two double values | Subtraction_DoubleDouble | d1 - d2 |
| Multiplication of two double values | Multiplication_DoubleDouble | d1 * d2 |
| Division of two double values | Division_DoubleDouble | d1 / d2 |
| Negation of a double value | Negate_Double | - d |
| Sine | Sin_Double | sin(d) |
| Cosine | Cos_Double | cos(d) |
| Tangent | Tan_Double | tan(d) |
| Arctangent with two input arguments and returning angles from -pi to pi. | Atan2_Double | atan2(y,x) |
| Arctangent with one input argument and returning angles from -pi/2 to pi/2. | Atan_Double | atan(d) |
| Arcsine | Asin_Double | asin(d) |
| Arccosine | Acos_Double | acos(d) |
| Exponential | Exp_Double | exp(d) |
| Logarithm | Log_Double | log(d) |
| Square root | Sqrt_Double | sqrt(d) |
| Absolute value | Abs_Double | abs(d) |
| Minimum | minimum(d1,d2) | |
| Maximum | maximum(d1,d2) | |
| Saturate between lower L and upper H | saturate(d1,L,H) |
For the Expression<Vector> types, the following operators and functions are defined ( in the table below v, v1 and v2 are of type Expression<Vector>::Ptr, x,y,z and s are of type Expression<double>::Ptr:
| Description | Node Type | Function |
|---|---|---|
| Construction of a Vector expression out of three scalar expressions | Vector_DoubleDoubleDouble | vector(x,y,z) |
| Dot product between two Vector expressions | Dot_VectorVector | dot(v1,v2) |
| Cross product between two Vector expressions | CrossProduct_VectorVector | v1 * v2 |
| Addition of two Vector expressions | Addition_VectorVector | v1 + v2 |
| Subtraction of two Vector expressions | Subtraction_VectorVector | v1 - v2 |
| Negation of a Vector expression | Negation_Vector | - v |
| Squared norm of a Vector | SquaredNorm_Vector | squared_norm(v) |
| Norm of a Vector expression | Norm_Vector | norm(v) |
| Multiplication of a double and a Vector | Multiplication_VectorDouble | s*v and v*s |
| Extraction of an expression for the x-coordinate of a vector expression | CoordX_Vector | coord_x(v) |
| Extraction of an expression for the y-coordinate of a vector expression | CoordY_Vector | coord_y(v) |
| Extraction of an expression for the z-coordinate of a vector expression | CoordZ_Vector | coord_z(v) |
For the Expression<Rotation>, the following is defined ( R,R1,R2 is of type Expression<Rotation>::Ptr, v is of type Expression<Vector>::Ptr, a is of type Expression<double>::Ptr, A is of type Vector ):
| Description | Node Type | Function |
|---|---|---|
| An expression for the rotation around a fixed axis with a angle specified by a double expression | Rot_Double | rot(A,a) |
| An expression for the rotation around the X axis with a angle specified by a double expression | RotX_Double | rot_x(a) |
| An expression for the rotation around the Y axis with a angle specified by a double expression | RotY_Double | rot_y(a) |
| An expression for the rotation around the Z axis with a angle specified by a double expression | RotZ_Double | rot_z(a) |
| Composition of two rotations (R1 after R2) | Composition_RotationRotation | R1*R2 |
| Transform a vector v using the rotation expression R | Composition_RotationVector | R*v |
| Extract an expression for X-axis of a rotation matrix expression (1st column) | UnitX_Rotation | unit_x |
| Extract an expression for Y-axis of a rotation matrix expression (2nd column) | UnitY_Rotation | unit_y |
| Extract an expression for Z-axis of a rotation matrix expression (2th column) | UnitZ_Rotationr | unit_z |
For the Expression<Frame>, the following is defined F,F1 and F2 are of type Expression<Frame>::Ptr, R is of type Expression<Rotation>::Ptr, v is of type Expression<Vector>::Ptr, a is of type Expression<double>::Ptr, A is of type Vector ):
| Description | Node Type | Function |
|---|---|---|
| Construction of a Frame expression out of a Rotation expression and a Vector expression. If v is not given, it is zero. If R is not given, it is the identity matrix | Frame_RotationVector | frame(R,v), frame(v), frame(R) |
| Inverse Frame transformation for an expression | Inverse_Frame | inv(F) |
| Composition of Frame transformations (F1 after F2) | Compostion_FrameFrame | F1*F2 |
| Transformation of a vector v using a Frame transformations F | Compostion_FrameVector | F*v |
| Extract a Vector expression for the origin of a frame | Origin_Frame | origin(F) |
| Extract a Rotation expression for the orientation of a frame | Rotation_Frame | rotation(F) |
For the Expression<Twist>, the following is defined ( d is of type Expression<double>::Ptr, v,omega are of type Expression<Vector>::Ptr, t, t1 and t2 are of type Expression<Twist>::Ptr, R is of type Expression<Rotation>::Ptr ):
| Description | Node Type | Function |
|---|---|---|
| Construction of a twist out of an expression for the velocity and the rotational velocity | Twist_VectorVector | twist(v,omega) |
| Negation of a twist | Negate_Twist | - t |
| Extraction of the translational velocity of a twist | Velocity_Twist | transvel(t) |
| Extraction of the rotational velocity of a twist | RotVelocity_Twist | rotvel(t) |
| Addition of two twists | Addition_Twist | t1 + t2 |
| Subtraction of two twists | Subtraction_Twist | t1 - t2 |
| Transformation of a twist using a transformation of the orientation | Composition_RotationTwist | R*t |
| Transformation of a twist using a transformation of the reference point | RefPoint_TwistVector | ref_point(t,v) |
| Scalar multiplication of a twist with a double | Multiplication_TwistDouble | t*d or d*t |
For the Expression<Wrench>, the following is defined: d is of type Expression<double>::Ptr, p,force, torque are of type Expression<Vector>::Ptr, w, w1 and w2 are of type Expression<Wrench>::Ptr, R is of type Expression<Rotation>::Ptr ):
| Description | Node Type | Function |
|---|---|---|
| Construction of a wrench out of an expression for the torque and force | Wrench_VectorVector | wrench(force,torque) |
| Negation of a wrench | Negate_Wrench | - w |
| Extraction of the force of a wrench | Force_Wrench | force(t) |
| Extraction of the torque of a Wrench | Torque_Twist | torque(t) |
| Addition of two wrenches | Addition_Wrench | w1 + w2 |
| Subtraction of two wrenches | Subtraction_Wrench | w1 - w2 |
| Transformation of a wrench using a transformation of the orientation | Composition_RotationWrench | R*w |
| Transformation of a wrench using a transformation of the reference point | RefPoint_WrenchVector | ref_point(w,p) |
| Scalar multiplication of a wrench with a double | Multiplication_WrenchDouble | w*d or d*w |
There is also a node that handles KDL's kinematic chain types and enables the use of kinematic chains in an expression ( chain is of type KDL::Chain ):
| Description | Node Type | Function |
|---|---|---|
| the transformation of the end effector with respect to the base for a given kinematic chain. For a kinematic chain with n variables, input variables i ... i+n-1 will correspond to the joint angles of the kinematic chain. | Expression_Chain | kinematic_chain( chain, i) |