RTSX Help: Create a coordinate frame structure
Create coordinate frame structure. Useful as a first step to build a chain of homogeneous transformations.
- F = Frame(T, options)
- T — a 4 x 4 homogeneous transformation matrix
- F — frame data structure containing the following fields
- Tabs — absolute homogeneous transformation matrix (w.r.t first frame in the chain)
- Trel — relative homogeneous transformation matrix (w.r.t adjacent frame below)
- name — a string specifying frame name
- completed — a boolean value (0 or 1) to flag the completion of frame (used by SerialFrame( ) when forming a chain.)
Note : options in [ ] must be passed to the function in pairs.
- ‘rel’ — input T is a relative homogeneous transformation (default)
- ‘abs’ — input T is an absolute homogeneous transformation
- [ ‘name’, ‘(frame name)’] — frame name. A single character such as ‘A’, ‘B’, ‘1’, ‘2’ is recommended. A long name would look messy during plotting.
Frame( ) has little use by its own. one does not need it when working with only 1-2 frames. In contrast, if a chain of several frames needs to be constructed, Frame( ) combined with SerialFrame( ) and related functionsare a handy set of tools for such purpose. For those familiar with OOP, a frame data structure can be thought of roughly as an object (lacking method, of course). More information other than just homogenous transformation matrices could be attached to the structure. Frame( ) is used as the required first step to build a frame chain.
F=Frame(trotz(pi/4),'name','A'); // create just a single frame // create a sequence of frames F(1)=Frame(eye(4,4),'name','U'); // base frame F(2)=Frame(trotx(pi/2)*transl([0 1 1]),'name','V'); // 2nd frame (default T input is relative) F(3)=Frame(transl([2 3 -1]),'abs','name','W'); // 3rd frame is inputted as absolute T w.r.t base F(4)=Frame(,'name','X'); // a blank frame can be inserted at only one place in chain F(5)=Frame(troty(pi/3)*transl([3 2 -1]),'name','Y'); // last frame in structure
Notice in the example above that frame 4 is defined as a blank frame. This can be solved by function ResolveFrame( ) provided that another chain is available to form a closed chain, a typical problem in basic robot kinematics