Frame Chain Creation

RTSX Help: Create a homogeneous transformation chain.


Form a transformation chain from a frame structure created by Frame( )


  • fc = SerialFrame(F, options)

Input Arguments

  • F  — a   frame structure created by Frame( )

Output Arguments

  • fc — frame chain structure containing the following fields
    • Frame(i) — indexed frames in the chain with the same sequential order as in F
    • nf — number of frames in the chain
    • name — a string specifying chain name
    • completed — a boolean value (0 or 1) to flag the completion of the chain
    • missingframe — frame number that has missing link (no Tabs and Trel information)
    • viewangle — a view angle data used by PlotFrame( )


Note : options in [ ] must be passed to the function in pairs.

  • [ ‘name’, ‘(chain name)’] — chain name. It is printed in output messages in Scilab window. A simple identification like ‘chain 1’ is often helpful, especially when two chains are passed to ResolveFrame( )
  • [ ‘viewangle’, [alpha, theta]] — Used in PlotFrame( ) and PlotResolveFrame( ). These two values give the spherical coordinates of the observation points (in degrees).


After a frame data structure is created by Frame( ) , use SerialFrame( ) to form a homogeneous tranformation chain with lowest number frame (1) as base and highest number frame as top. One blank frame can be included in the chain, to be solved later by ResolveFrame( ) when another chain is connected to form a closed chain.

When SerialFrame( ) is invoked, the function will try to fill in missing information if it has enough information to solve. If there is no missing frame present in the frame structure, all missing information (either Trel or Tabs of each frame) can be computed and the chain is marked as completed by setting the completed field to 1. If SerialFrame( ) cannot solve for missing information at this time but knows it can be done when closed chain is formed, it will reset completed field to 0. For the worst case when a frame structure cannot be completed by any function, SerialFrame( ) stops and shows error message. These cases happen, for example, when more than one missing frame are present in the chain, or Tabs instead of Trel is given to any frame above the missing frame.


This example shows how to construct a frame chain using Frame( ) and SerialFrame( ). From the output messages, we see that the algorithm could complete information upwards the chain until it reaches location 4, where a black frame is inserted. The missing data above that location has to be left incomplte. The missing frames can be computed by ResolveFrame( ), providing another (completed) chain forming a closed loop .

-->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
-->fc1=SerialFrame(F,'name','Chain 1');
Reading frame data and computing missing information
Processing Upwards ...
1 -- {U} : Found T_rel. Fill in T_abs with T_rel
2 -- {V}: Found T_rel. Computing T_abs :{V} w.r.t {U}-- Finished
3 -- {W}: Found T_abs. Computing T_rel :{W} w.r.t {V}-- Finished
4 -- {X}: *** Missing both T_abs: {X} w.r.t {U} and T_rel: {X} w.r.t {W} ***
5 -- {Y}: *** Missing T_abs: {Y} w.r.t {U} ***
List of missing frames in Chain 1
4 -- {X}: T_abs : {X} w.r.t {U} , T_rel : {X} w.r.t {W} , 
5 -- {Y}: T_abs : {Y} w.r.t {U} ,

See Also