SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
scl::CParserOsimForOldFiles Class Reference

#include <CParserOsimForOldFiles.hpp>

Inheritance diagram for scl::CParserOsimForOldFiles:
Inheritance graph
[legend]
Collaboration diagram for scl::CParserOsimForOldFiles:
Collaboration graph
[legend]

Classes

struct  SOsimJoint
 

Public Member Functions

virtual bool readOsimBiomechFromFile (const std::string &arg_file, scl::SRobotParsed &arg_biomech, scl::SActuatorSetMuscleParsed &arg_msys)
 
virtual bool readMuscleSysFromFile (const std::string &arg_file, const std::string &arg_msys_name, scl::SActuatorSetMuscleParsed &arg_msys)
 
virtual bool readRobotFromFile (const std::string &arg_file, const std::string &arg_robot_name, scl::SRobotParsed &arg_robot)
 
virtual bool listRobotsInFile (const std::string &arg_file, std::vector< std::string > &arg_robot_names)
 
virtual bool saveRobotToFile (scl::SRobotParsed &arg_robot, const std::string &arg_file)
 
virtual bool listMuscleSysInFile (const std::string &arg_file, std::vector< std::string > &arg_msys_names)
 
virtual bool listGraphicsInFile (const std::string &arg_file, std::vector< std::string > &arg_graphics_names)
 
virtual bool readGraphicsFromFile (const std::string &arg_file, const std::string &arg_graphics_name, scl::SGraphicsParsed &arg_graphics)
 
virtual bool listUISpecsInFile (const std::string &arg_file, std::vector< std::string > &arg_ui_spec_names)
 
virtual bool readUISpecFromFile (const std::string &arg_file, const std::string &arg_ui_spec_name, scl::SUIParsed &arg_ui_spec)
 
virtual bool listControllersInFile (const std::string &arg_file, std::vector< std::pair< std::string, std::string > > &arg_ctrl_name_and_type)
 
virtual bool readGcControllerFromFile (const std::string &arg_file, const std::string &arg_ctrl_name, std::string &ret_must_use_robot, scl::SControllerGc &arg_ctrl)
 
virtual bool readTaskControllerFromFile (const std::string &arg_file, const std::string &arg_ctrl_name, std::string &ret_must_use_robot, std::vector< scl::STaskBase * > &ret_taskvec, std::vector< scl::SNonControlTaskBase * > &ret_task_non_ctrl_vec)
 

Private Member Functions

bool readBody (const scl_tinyxml::TiXmlHandle &arg_tiHndl_link, scl::SRobotParsed &arg_robot, const std::string &arg_joint_type)
 
bool readJoint (const scl_tinyxml::TiXmlHandle &arg_tiHndl_jnt, SOsimJoint &arg_joint)
 

Private Attributes

const std::string root_link_name_
 

Detailed Description

This class implements a limited subset of the CParserBase API for the "Osim" file format:

Supports reading files of the type : UpperLowerBody.osim

Member Function Documentation

virtual bool scl::CParserBase::listControllersInFile ( const std::string &  arg_file,
std::vector< std::pair< std::string, std::string > > &  arg_ctrl_name_and_type 
)
inlinevirtualinherited

Optional: The subclass may support read out the controller specifications in a file. Each controller is to be stored as a <name, type> pair

Reimplemented in scl::CParserScl.

virtual bool scl::CParserBase::listGraphicsInFile ( const std::string &  arg_file,
std::vector< std::string > &  arg_graphics_names 
)
inlinevirtualinherited

Optional: Returns a list of graphics views in a file. Required : If readGraphicsFromFile() is implemented

Reimplemented in scl::CParserSai, and scl::CParserScl.

virtual bool scl::CParserBase::listMuscleSysInFile ( const std::string &  arg_file,
std::vector< std::string > &  arg_msys_names 
)
inlinevirtualinherited

Optional: Returns a list of muscle systems in a file. Required : If readMuscleSysFromFile() is implemented

virtual bool scl::CParserOsimForOldFiles::listRobotsInFile ( const std::string &  arg_file,
std::vector< std::string > &  arg_robot_names 
)
inlinevirtual

Returns a list of robots and the files in which their specifications reside.

Implements scl::CParserBase.

virtual bool scl::CParserBase::listUISpecsInFile ( const std::string &  arg_file,
std::vector< std::string > &  arg_ui_spec_names 
)
inlinevirtualinherited

Optional: If required, the subclass may support parsing user interface specifications.

Reimplemented in scl::CParserScl.

bool scl::CParserOsimForOldFiles::readBody ( const scl_tinyxml::TiXmlHandle &  arg_tiHndl_body,
scl::SRobotParsed arg_robot,
const std::string &  arg_joint_type 
)
private

Osim link specification reader: In case a body has multiple coordinates, it creates a series of joints/links for all the coordinates.

virtual bool scl::CParserBase::readGcControllerFromFile ( const std::string &  arg_file,
const std::string &  arg_ctrl_name,
std::string &  ret_must_use_robot,
scl::SControllerGc arg_ctrl 
)
inlinevirtualinherited

Optional: The subclass may support parsing gc controller specifications (There are 2 different controller reading functions because the data structures are totally incompatible)

Reimplemented in scl::CParserScl.

virtual bool scl::CParserBase::readGraphicsFromFile ( const std::string &  arg_file,
const std::string &  arg_graphics_name,
scl::SGraphicsParsed arg_graphics 
)
inlinevirtualinherited

Optional: If required, the subclass may support parsing graphics specifications.

Parameters
arg_graphicsThe robot's data will be filled into this data structure

Reimplemented in scl::CParserSai, and scl::CParserScl.

bool scl::CParserOsimForOldFiles::readJoint ( const scl_tinyxml::TiXmlHandle &  arg_tiHndl_jnt,
SOsimJoint arg_joint 
)
private

Reads a joint for a body. Will be converted into multiple joints/links for scl.

Reads a joint for a body. Will be converted into none/multiple joints/links for scl.

CustomJoint: Osim has multiple dofs per joint. These will be split into multiple joints.

WeldJoint: Osim uses 0dof weld joints. These will be eliminated.

bool scl::CParserOsimForOldFiles::readMuscleSysFromFile ( const std::string &  arg_file,
const std::string &  arg_msys_name,
scl::SActuatorSetMuscleParsed arg_msys 
)
virtual

Reads a muscle model from a file.

NOTE : MuscleViaPoint = Simbody::ConditionalPathPoint A class implementing a conditional path point, which is a point that is active only for a specified range of a coordinate. We will NOT support turning this point off.

NOTE : Simbody::MovingPathPoint A class implementing a moving muscle point, which is a muscle point that moves in a body's reference frame as a function of a coordinate.

NOTE : This presently requires picking an average point on the parent link instead of an actually moving point.

NOTE : Simbody::MovingPathPoint A class implementing a moving muscle point, which is a muscle point that moves in a body's reference frame as a function of a coordinate.

Reimplemented from scl::CParserBase.

bool scl::CParserOsimForOldFiles::readOsimBiomechFromFile ( const std::string &  arg_file,
scl::SRobotParsed arg_biomech,
scl::SActuatorSetMuscleParsed arg_msys 
)
virtual

Only support reading from Osim files. Use the file converter to convert them into Scl files to also add controllers. (applications/scl_file_converter)

Tags not supported:

  1. MuscleViaPoint : A class implementing a conditional path point, which is a point that is active only for a specified range of a coordinate. We will NOT SUPPORT this point-off mechanism.
  2. MovingMusclePoint : These seem redundant. We will split osim nodes into n links, one for each coordinate. The via point will be attached to the last link in a series of links that correspond to a node's coordinates. Eg. node_name : coord_tx, coord_ty, coord_rz will create three links: node_name_coord_tx, node_name_coord_ty, node_name_coord_rz and the moving muscle point will be attached to the last one.

Notes:

  1. Throws errors when required tags are missing
  2. Prints warnings when non-required but important (dynamics info) tags are missing
  3. Does nothing when default values can usually replace missing tags. Eg. joint limits
  4. Osim seems to support w,x,y,z quaternions in its orientation tag. Eigen supports x,y,z,w.
bool scl::CParserOsimForOldFiles::readRobotFromFile ( const std::string &  arg_file,
const std::string &  arg_robot_name,
scl::SRobotParsed arg_robot 
)
virtual

Required : Reads in a robot from the given file.

This function must be implemented by parsers who inherit from CParserBase. Its implementation will depend on the file format supported.

NOTE : Subclass implementation details for the readRobotFromFile() function: 1) Add a bunch of SRigidBody links to the SRobotParsed's branching representation, "robot_.robot_br_rep_", after reading in the values from a file 2) When all the links have been read in, call "robot_.robot_br_rep_.linkNodes()"

If you want to implement a new parser for a new filetype, please see how you should populate the SRobotParsed data structure from an existing parser. Eg. The Scl parser implements the full API

Implements scl::CParserBase.

virtual bool scl::CParserBase::readTaskControllerFromFile ( const std::string &  arg_file,
const std::string &  arg_ctrl_name,
std::string &  ret_must_use_robot,
std::vector< scl::STaskBase * > &  ret_taskvec,
std::vector< scl::SNonControlTaskBase * > &  ret_task_non_ctrl_vec 
)
inlinevirtualinherited

Optional: The subclass may support parsing task controller specifications (There are 2 different controller reading functions because the data structures are totally incompatible)

Parameters
ret_taskvecReturns a vector of tasks that this task controller can execute. Typically, the task controller will execute all of them simultaneously with a priority order.

Reimplemented in scl::CParserScl.

virtual bool scl::CParserBase::readUISpecFromFile ( const std::string &  arg_file,
const std::string &  arg_ui_spec_name,
scl::SUIParsed arg_ui_spec 
)
inlinevirtualinherited

Optional: If required, the subclass may support parsing user interface specifications.

Reimplemented in scl::CParserScl.

virtual bool scl::CParserBase::saveRobotToFile ( scl::SRobotParsed arg_robot,
const std::string &  arg_file 
)
inlinevirtualinherited

Saves a robot definition to file. Takes the name of the robot and a file name as aguments.

Looks up the robot in the database and writes it to a file if it exists.

Reimplemented in scl::CParserSai, and scl::CParserScl.


The documentation for this class was generated from the following files: