claraty::Frame Class Reference
#include <frame.h>
Collaboration diagram for claraty::Frame:

Frame querying | |
| ME_Body * | get_body () |
| std::string | get_name () |
| Transform & | get_transform () |
| int | get_type () |
| void | set_type (int type) |
| Transform | get_absolute_transform () |
| int | _child_type (const char *child_name) |
Public Types | |
| enum | CHILD_TYPES { TRANSFORM, UNDEFINED } |
| enum | FRAME_TYPE { REFERENCE_FRAME, LOCAL_FRAME, UNDEFINED_FRAME } |
Public Member Functions | |
Frame operators | |
| Frame & | operator= (const Frame &x) |
Frame setting | |
| void | set_name (std::string name) |
| void | set_type (std::string type) |
| void | set_body (ME_Body *bdy) |
| void | set (Transform transform) |
Frame algorithms | |
| Transform | get_relative_transform (Frame &frame) |
Private Attributes | |
| Transform | _transform |
| unsigned int | _index |
| unsigned int | _type |
| std::string | _name |
| ME_Body * | _me_body |
Friends | |
| std::ostream & | operator<< (std::ostream &os, Frame &frame) |
Detailed Description
Frame class This class implenents the labeled Transform object.
Definition at line 48 of file frame.h.
Member Enumeration Documentation
Definition at line 65 of file frame.h.
00065 { 00066 REFERENCE_FRAME, 00067 LOCAL_FRAME, 00068 UNDEFINED_FRAME 00069 };
Constructor & Destructor Documentation
| claraty::Frame::Frame | ( | ) |
| claraty::Frame::Frame | ( | const Frame & | frame | ) |
Copy constructor
- Parameters:
-
[in] frame Reference to Frame to be copied.
Definition at line 67 of file frame.cc.
References _index, _me_body, _name, _transform, and _type.
00068 { 00069 _transform = frame._transform; 00070 _index = frame._index; 00071 _type = frame._type; 00072 _name = frame._name; 00073 _me_body = frame._me_body; 00074 }
| claraty::Frame::~Frame | ( | ) | [virtual] |
| claraty::Frame::Frame | ( | ) |
| claraty::Frame::Frame | ( | const Frame & | frame | ) |
Copy constructor
- Parameters:
-
[in] frame Reference to Frame to be copied.
Definition at line 67 of file frame.cc.
References _index, _me_body, _name, _transform, and _type.
00068 { 00069 _transform = frame._transform; 00070 _index = frame._index; 00071 _type = frame._type; 00072 _name = frame._name; 00073 _me_body = frame._me_body; 00074 }
| claraty::Frame::~Frame | ( | ) | [virtual] |
Member Function Documentation
Equals operator: sets the current position of an iterator to the current position of another iterator.
- Parameters:
-
[in] x Reference to base iterator.
- Returns:
- Reference to base iterator class.
Definition at line 97 of file frame.cc.
References _index, _me_body, _name, _transform, and _type.
00098 { 00099 _transform = x._transform; 00100 _index = x._index; 00101 _type = x._type; 00102 _name = x._name; 00103 _me_body = x._me_body; 00104 return *this; 00105 }
| ME_Body * claraty::Frame::get_body | ( | ) |
Return name of body
- Returns:
- body name
Definition at line 159 of file frame.cc.
References _me_body.
Referenced by claraty::Mechanism_Model::_get_pre_order_body_index(), claraty::Mechanism_Model::get_body(), and get_relative_transform().
00160 { 00161 return _me_body; 00162 }
| std::string claraty::Frame::get_name | ( | ) |
Return name of node
- Returns:
- node name
Definition at line 173 of file frame.cc.
References _name.
Referenced by claraty::ME_Body::make_reference_frame(), and claraty::operator<<().
00174 { 00175 return _name; 00176 }
| Transform & claraty::Frame::get_transform | ( | ) |
Return ME_Transform of node
- Returns:
- node transform wrt body reference frame
Definition at line 187 of file frame.cc.
References _transform.
Referenced by claraty::Frame_IO::convert_to_internal_format(), claraty::ME_Body_IO::extract_from_parse_tree(), claraty::Frame_IO::extract_from_parse_tree(), get_absolute_transform(), get_relative_transform(), claraty::N_2DOF_Planar_Arm::initialize(), and claraty::operator<<().
00188 { 00189 return _transform; 00190 }
| int claraty::Frame::get_type | ( | ) |
Return frame type
- Returns:
- enum type
Definition at line 133 of file frame.cc.
References _type.
Referenced by claraty::Frame_IO::convert_to_internal_format(), claraty::Frame_IO::extract_from_parse_tree(), get_relative_transform(), and claraty::operator<<().
00134 { 00135 return _type; 00136 }
| void claraty::Frame::set_type | ( | int | type | ) |
Set frame type.
- Parameters:
-
[in] type
Definition at line 146 of file frame.cc.
References _type.
Referenced by claraty::ME_Body::create_frame(), claraty::Frame_IO::extract_from_parse_tree(), and claraty::ME_Body::set_reference_frame().
00147 { 00148 _type = type; 00149 }
| Transform claraty::Frame::get_absolute_transform | ( | ) |
- Returns:
- node transform wrt body reference frame
Definition at line 264 of file frame.cc.
References _me_body, _type, claraty::ME_Body::get_absolute_transform(), get_transform(), and REFERENCE_FRAME.
Referenced by claraty::Frame_IO::convert_to_internal_format(), claraty::ME_Body_IO::extract_from_parse_tree(), claraty::Mechanism_Model::get_frame_transform(), and claraty::Wheel_Locomotor_Model::map_mechanism_model_to_wheel_locomotor_model().
00265 { 00266 // If this frame is not on a body, return its local transform 00267 if (!_me_body) 00268 return get_transform(); 00269 00270 // If this frame is the reference frame of a body, 00271 // return the absolute body transform 00272 if(_type == REFERENCE_FRAME) 00273 return _me_body->get_absolute_transform(); 00274 00275 // If this frame is a local frame on a body, 00276 // return the body absolute transform times the frame transform 00277 else 00278 return _me_body->get_absolute_transform() * get_transform(); 00279 }
Here is the call graph for this function:

| int claraty::Frame::_child_type | ( | const char * | child_name | ) | [private] |
Return child enumeration type from child name.
- Parameters:
-
[in] child_name
- Returns:
- Child enumeration type.
Definition at line 117 of file frame.cc.
References TRANSFORM, and UNDEFINED.
00118 { 00119 if (strcmp(child_name, "Transform") == 0) 00120 return TRANSFORM; 00121 00122 return UNDEFINED; 00123 }
| void claraty::Frame::set_name | ( | std::string | name | ) |
- Returns:
- node transform wrt body reference frame
Definition at line 201 of file frame.cc.
References _name.
Referenced by claraty::ME_Body::create_frame(), claraty::ME_Body_IO::extract_from_parse_tree(), and claraty::Frame_IO::extract_from_parse_tree().
00202 { 00203 _name = name; 00204 }
| void claraty::Frame::set_type | ( | std::string | type | ) |
- Returns:
- node transform wrt body reference frame
Definition at line 229 of file frame.cc.
References _type, LOCAL_FRAME, REFERENCE_FRAME, and UNDEFINED_FRAME.
00230 { 00231 if (strcmp(type.c_str(), "reference") == 0) 00232 _type = REFERENCE_FRAME; 00233 00234 else if (strcmp(type.c_str(), "local") == 0) 00235 _type = LOCAL_FRAME; 00236 00237 else 00238 _type = UNDEFINED_FRAME; 00239 00240 }
| void claraty::Frame::set_body | ( | ME_Body * | bdy | ) |
Set body name
- Returns:
- node transform wrt body reference frame
Definition at line 215 of file frame.cc.
References _me_body.
Referenced by claraty::ME_Body::create_frame(), claraty::ME_Body_IO::extract_from_parse_tree(), and claraty::ME_Body::ME_Body().
00216 { 00217 _me_body = bdy; 00218 }
| void claraty::Frame::set | ( | Transform | transform | ) |
- Returns:
- node transform wrt body reference frame
Definition at line 250 of file frame.cc.
References _transform.
Referenced by claraty::ME_Body_IO::extract_from_parse_tree().
00251 { 00252 _transform = transform; 00253 00254 }
Update the position kinematics of the node
- Parameters:
-
[in] frame The name of another frame.
- Returns:
- ME_Transform of this Frame wrt another frame
Definition at line 290 of file frame.cc.
References _me_body, get_body(), claraty::ME_Body::get_relative_transform(), get_transform(), get_type(), claraty::inverse(), REFERENCE_FRAME, and claraty::Trans< T, Rotation_Type >::relative_to().
Referenced by claraty::Mechanism_Model::get_frame_transform().
00291 { 00292 // if the frames are on the same body, 00293 // get their relative positions without traversing across bodies 00294 if (frame.get_body() == _me_body) 00295 { 00296 // if the reference is a reference frame 00297 if (frame.get_type() == Frame::REFERENCE_FRAME) 00298 { 00299 if (get_type() != Frame::REFERENCE_FRAME) 00300 return get_transform(); 00301 else 00302 return Transform(); // if both are reference frames return 00303 // identity 00304 } 00305 // if this is a reference frame 00306 else if (get_type() == Frame::REFERENCE_FRAME) 00307 { 00308 return inverse(frame.get_transform()); 00309 } 00310 // neither are reference frames 00311 else 00312 { 00313 return get_transform().relative_to(frame.get_transform()); 00314 } 00315 } 00316 // The frames are not on the same body 00317 else 00318 { 00319 Transform body_relative = 00320 _me_body->get_relative_transform(*(frame.get_body())); 00321 // if the reference is a reference frame 00322 if (frame.get_type() == Frame::REFERENCE_FRAME) 00323 { 00324 if (get_type() != Frame::REFERENCE_FRAME) 00325 { 00326 return body_relative * get_transform(); 00327 } 00328 else 00329 { 00330 return body_relative; 00331 } 00332 } 00333 // if this is a reference frame 00334 else if (get_type() == Frame::REFERENCE_FRAME) 00335 { 00336 return inverse(frame.get_transform()) * body_relative; 00337 } 00338 // neither are reference frames 00339 else 00340 { 00341 return inverse(frame.get_transform()) 00342 * body_relative * get_transform(); 00343 } 00344 } 00345 }
Here is the call graph for this function:

Friends And Related Function Documentation
| std::ostream& operator<< | ( | std::ostream & | os, | |
| Frame & | frame | |||
| ) | [friend] |
Output to ostream
- Parameters:
-
[out] os ostream to put output on. [in] frame Frame object to be output.
- Returns:
- ostream with output on it.
Definition at line 356 of file frame.cc.
00357 { 00358 std::string spacing = ""; 00359 std::string child_spacing = ""; 00360 spacing.append(XML_Out::get_indentation_space(), ' '); 00361 child_spacing.append(XML_Out::get_indentation_space() 00362 + XML_Out::get_tab_space(), ' '); 00363 00364 os << spacing; 00365 os << "<Frame "; 00366 os << "name = \"" << frame.get_name() << "\" "; 00367 os << "parent = \"\""; 00368 os << "type = " 00369 << (frame.get_type() == Frame::REFERENCE_FRAME ? "\"reference\"" : "\"local\" "); 00370 00371 os << ">\n"; 00372 os << child_spacing; 00373 os << "<Transform>\n"; 00374 XML_Out::increment_indentation_level(); 00375 XML_Out::increment_indentation_level(); 00376 os << XML_Out::enable << frame.get_transform() 00377 << XML_Out::disable; 00378 XML_Out::decrement_indentation_level(); 00379 XML_Out::decrement_indentation_level(); 00380 os << child_spacing; 00381 os << "</Transform>\n"; 00382 00383 os << spacing; 00384 os << "</Frame> \n"; 00385 00386 00387 return os; 00388 }
Member Data Documentation
Transform claraty::Frame::_transform [private] |
The frame's transform
Definition at line 102 of file frame.h.
Referenced by Frame(), get_transform(), operator=(), and set().
unsigned int claraty::Frame::_index [private] |
Index of frame on the body
Definition at line 103 of file frame.h.
Referenced by Frame(), and operator=().
unsigned int claraty::Frame::_type [private] |
Frame type
Definition at line 104 of file frame.h.
Referenced by Frame(), get_absolute_transform(), get_type(), operator=(), and set_type().
std::string claraty::Frame::_name [private] |
Frame name
Definition at line 105 of file frame.h.
Referenced by Frame(), get_name(), operator=(), and set_name().
ME_Body* claraty::Frame::_me_body [private] |
Body that this frame is on
Definition at line 106 of file frame.h.
Referenced by Frame(), get_absolute_transform(), get_body(), get_relative_transform(), operator=(), and set_body().
The documentation for this class was generated from the following files: