#include <atomcomponent.h>
Inherits Component.
Inheritance diagram for AtomComponent:
Public Member Functions | |
AtomComponent (const OdeHandle &odeHandle, const OsgHandle &osgHandle, const ComponentConf &conf, const AtomConf &aconf) | |
~AtomComponent () | |
virtual void | deleteStructureRecursive () |
virtual int | getSensors (sensor *sensors, int sensornumber) |
Use this, to get all sensor values of all the joints of all subcomponents, and the sensors of all robots, belonging to all subcomponents. | |
virtual void | setMotors (const motor *motors, int motornumber) |
Sets the motor values for the joints connecting the component with its subcomponents, an recursivly the joints of all subComponents. | |
virtual int | getSensorNumber () |
Returns number of sensors; recursivly adding of the number of sensors all subcomponents and the robots of all Subcomponents. | |
virtual int | getMotorNumber () |
returns number of motors; recursivly adding of the number of sensors all subcomponents; at the moment only counts Hinge-, Slider-, Hinge2 and Universal-Joints; The Motor-Numbers of the robots of the Components is not counted. | |
virtual void | update () |
update the OSG notes here | |
virtual void | place (const Pos &pos) |
sets the vehicle to position pos | |
virtual void | place (const osg::Matrix &pose) |
sets the pose of the vehicle | |
virtual bool | collisionCallback (void *data, dGeomID o1, dGeomID o2) |
virtual bool | shellCollision (dGeomID o1, dGeomID o2) |
virtual void | doInternalStuff (GlobalData &globalData) |
this function is called in each timestep after control. | |
virtual Position | getPosition () const |
returns position of the object | |
virtual osg::Vec3 | getPositionbetweenComponents (Component *component) |
This is only a simple function, calculating the coordinates of the point exactly between two directly connected components. | |
virtual Primitive * | getMainPrimitive () const |
virtual componentConnection * | getStrongestSoftlinkofStructure () |
Searches for the softlink in the substructure of THIS component which has the highest binding strength. | |
virtual void | makeComponentStructureRoot () |
This changes the structure of all components connected with this component, so that this component will become the new root of this structure. | |
virtual double | getMotionForce () |
Calculates the linear force the Component has at the time of calling this function. | |
virtual double | getCollisionForce (AtomComponent *collAtom) |
Calculates the linear force between two components at the moment of calling this function. | |
virtual bool | fusionCondition (dGeomID o1, dGeomID o2) |
Tests if the conditions for fusion of two atoms are fulfilled. | |
virtual bool | fissionCondition (dGeomID o1, dGeomID o2, double force) |
now fission is allowed if there is a single connection, with a binding energy smaller than the force of the colission, but the minimum value for fission from atomconf has to be reached | |
virtual bool | collisionExclusionCondition (dGeomID o1, dGeomID o2) |
Test which collisions should not be handled. | |
virtual bool | fusion (AtomComponent *atom_to_fuse) |
fuses this AtomComponent with an other one | |
virtual void | disableStructureFusionRecursive () |
Sets all teh fusionDisable parameters of the structure belonging to THIS atom to true, so that no fusion will occur. | |
virtual void | enableStructureFusionRecursive () |
Sets all teh fusionDisable parameters of the structure belonging to THIS atom to false, so that fusion will occur. | |
virtual bool | fission (double force) |
fissions a AtomComponent from this AtomComponent | |
virtual void | fissionOf (componentConnection *tmpconnection) |
virtual AtomComponent * | getLeastFittestDivideComponent (int minsize, AtomComponent *currentBestDivideComponent) |
virtual AtomComponent * | getCopyOutofTable (std::vector< TableLine > &table) |
virtual AtomComponent * | copyBaseStructure (osg::Vec3 deltaposition, std::vector< TableLine > ©table) |
virtual AtomComponent * | copySoftlinkStructure (std::vector< TableLine > ©table) |
virtual AtomComponent * | copyCompleteStructure (osg::Vec3 deltaposition, AtomComponent *copystartcomponent) |
virtual bool | replication (AtomComponent *atom_to_recplicate) |
Replication. | |
virtual bool | replication_old (AtomComponent *atom_to_recplicate) |
Replication. | |
virtual void | setConnectionFitness (unsigned int number, double value) |
virtual void | setConnectionFitnessAll (double value) |
virtual double | getConnectionFitness (unsigned int number) |
virtual double | getConnectionFitness (AtomComponent *searchedsubcomponent) |
virtual double | getStructureFitness () |
virtual void | updateConnectionFitnessAll (AbstractController *controller) |
Static Public Member Functions | |
static AtomConf | getDefaultAtomConf () |
Public Attributes | |
AtomConf | atomconf |
Classes | |
class | connectionAddition |
AtomComponent | ( | const OdeHandle & | odeHandle, | |
const OsgHandle & | osgHandle, | |||
const ComponentConf & | conf, | |||
const AtomConf & | aconf | |||
) |
~AtomComponent | ( | ) |
bool collisionCallback | ( | void * | data, | |
dGeomID | o1, | |||
dGeomID | o2 | |||
) | [virtual] |
Reimplemented from Component.
bool collisionExclusionCondition | ( | dGeomID | o1, | |
dGeomID | o2 | |||
) | [virtual] |
Test which collisions should not be handled.
Geom | reference to the first atom | |
Geom | reference to the second atom |
AtomComponent * copyBaseStructure | ( | osg::Vec3 | deltaposition, | |
std::vector< TableLine > & | copytable | |||
) | [virtual] |
AtomComponent * copyCompleteStructure | ( | osg::Vec3 | deltaposition, | |
AtomComponent * | copystartcomponent | |||
) | [virtual] |
AtomComponent * copySoftlinkStructure | ( | std::vector< TableLine > & | copytable | ) | [virtual] |
void deleteStructureRecursive | ( | ) | [virtual] |
void disableStructureFusionRecursive | ( | ) | [virtual] |
Sets all teh fusionDisable parameters of the structure belonging to THIS atom to true, so that no fusion will occur.
void doInternalStuff | ( | GlobalData & | globalData | ) | [virtual] |
this function is called in each timestep after control.
It should perform robot-internal checks and actions, like acting and sensing of internal motors/sensors etc.
globalData | structure that contains global data from the simulation environment |
Implements OdeRobot.
void enableStructureFusionRecursive | ( | ) | [virtual] |
Sets all teh fusionDisable parameters of the structure belonging to THIS atom to false, so that fusion will occur.
bool fission | ( | double | force | ) | [virtual] |
fissions a AtomComponent from this AtomComponent
the | AtomComponent, to fission true if the fission was successfull, false if not |
bool fissionCondition | ( | dGeomID | o1, | |
dGeomID | o2, | |||
double | force | |||
) | [virtual] |
now fission is allowed if there is a single connection, with a binding energy smaller than the force of the colission, but the minimum value for fission from atomconf has to be reached
Geom | reference to the first atom | |
Geom | reference to the second atom |
void fissionOf | ( | componentConnection * | tmpconnection | ) | [virtual] |
bool fusion | ( | AtomComponent * | atom_to_fuse | ) | [virtual] |
fuses this AtomComponent with an other one
the | AtomComponent, to fuse with true if the fusion was successfull, false if not |
bool fusionCondition | ( | dGeomID | o1, | |
dGeomID | o2 | |||
) | [virtual] |
Tests if the conditions for fusion of two atoms are fulfilled.
Geom | reference to the first atom | |
Geom | reference to the second atom |
double getCollisionForce | ( | AtomComponent * | collAtom | ) | [virtual] |
Calculates the linear force between two components at the moment of calling this function.
double getConnectionFitness | ( | AtomComponent * | searchedsubcomponent | ) | [virtual] |
double getConnectionFitness | ( | unsigned int | number | ) | [virtual] |
AtomComponent * getCopyOutofTable | ( | std::vector< TableLine > & | table | ) | [virtual] |
static AtomConf getDefaultAtomConf | ( | ) | [inline, static] |
AtomComponent * getLeastFittestDivideComponent | ( | int | minsize, | |
AtomComponent * | currentBestDivideComponent | |||
) | [virtual] |
Primitive * getMainPrimitive | ( | ) | const [virtual] |
double getMotionForce | ( | ) | [virtual] |
Calculates the linear force the Component has at the time of calling this function.
int getMotorNumber | ( | ) | [virtual] |
returns number of motors; recursivly adding of the number of sensors all subcomponents; at the moment only counts Hinge-, Slider-, Hinge2 and Universal-Joints; The Motor-Numbers of the robots of the Components is not counted.
Reimplemented from Component.
Position getPosition | ( | ) | const [virtual] |
int getSensorNumber | ( | ) | [virtual] |
Returns number of sensors; recursivly adding of the number of sensors all subcomponents and the robots of all Subcomponents.
Reimplemented from Component.
int getSensors | ( | sensor * | sensors, | |
int | sensornumber | |||
) | [virtual] |
Use this, to get all sensor values of all the joints of all subcomponents, and the sensors of all robots, belonging to all subcomponents.
The sensor values have the following sequence: values of the component connecting joints, values of the robot of the component, values of component connecting joints of the first subcomponent, values of the robot of the first subcomponent, ...
robot | sensor values of the connecting joints of this component and all subcomponents |
!!!!!!!!!!!!!
Reimplemented from Component.
AtomComponent::componentConnection * getStrongestSoftlinkofStructure | ( | ) | [virtual] |
Searches for the softlink in the substructure of THIS component which has the highest binding strength.
double getStructureFitness | ( | ) | [virtual] |
void makeComponentStructureRoot | ( | ) | [virtual] |
This changes the structure of all components connected with this component, so that this component will become the new root of this structure.
void place | ( | const osg::Matrix & | pose | ) | [virtual] |
void place | ( | const Pos & | pos | ) | [virtual] |
sets the vehicle to position pos
pos | desired position of the robot |
Implements Component.
bool replication | ( | AtomComponent * | atom_to_recplicate | ) | [virtual] |
Replication.
They have to belong to two robots, so that touching each ofer causes a crossing over in her structure.
the | AtomComponent which belongs to the structure to replicate with, and which is the point where the replication will happen |
bool replication_old | ( | AtomComponent * | atom_to_recplicate | ) | [virtual] |
Replication.
void setConnectionFitness | ( | unsigned int | number, | |
double | value | |||
) | [virtual] |
void setConnectionFitnessAll | ( | double | value | ) | [virtual] |
void setMotors | ( | const motor * | motors, | |
int | motornumber | |||
) | [virtual] |
Sets the motor values for the joints connecting the component with its subcomponents, an recursivly the joints of all subComponents.
Reimplemented from Component.
bool shellCollision | ( | dGeomID | o1, | |
dGeomID | o2 | |||
) | [virtual] |
void update | ( | ) | [virtual] |
void updateConnectionFitnessAll | ( | AbstractController * | controller | ) | [virtual] |