simulator-sdk  1.14
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
alrobotmodel.h
1 
5 #ifndef ALROBOTMODEL_H
6 #define ALROBOTMODEL_H
7 
8 #include <almath/types/altransform.h>
9 #include <almath/types/alposition3d.h>
10 #include <string>
11 
12 #include <qi/macro.hpp>
13 
14 #ifdef alrobotmodel_EXPORTS
15 # define ALROBOTMODEL_API QI_EXPORT_API
16 #elif defined(alrobotmodel_IMPORTS)
17 # define ALROBOTMODEL_API QI_IMPORT_API
18 #else
19 # define ALROBOTMODEL_API
20 #endif
21 
22 namespace Sim
23 {
24 
25  class Actuator;
26  class AngleActuator;
27  class AngleSensor;
28  class AngleSpeedActuator;
29  class AngleSpeedSensor;
30  class BumperSensor;
31  class CameraSensor;
32  class CoupledActuator;
33  class CoupledSensor;
34  class DepthInfraredSensor;
35  class FSRSensor;
36  class InertialSensor;
37  class SonarSensor;
38  class TactileSensor;
39  class DepthInfraredSensor;
40  class LEDActuator;
41  class Joint;
42  class Link;
43  class Sensor;
44  class TorqueActuator;
45  class TorqueSensor;
46  class WheelTorqueActuator;
48  class WheelVelocitySensor;
49 
52 class ALROBOTMODEL_API Model
53 {
54  public:
55 
60  Model(const std::string& pathToModel);
62  ~Model();
63 
65  const std::string& name() const;
66 
67 
70  const std::string& configFile() const;
71 
72 
75  std::vector<const Joint*> joints() const;
78  const Joint* joint(const std::string& jointName) const;
79 
82  std::vector<const Link*> links() const;
85  const Link* link(const std::string& linkName) const;
89  const Link* rootLink() const;
90 
93  std::vector<const Actuator*> actuators() const;
96  const Actuator* actuator(const std::string& actuatorName) const;
97 
100  std::vector<const AngleActuator*> angleActuators() const;
103  const AngleActuator* angleActuator(const std::string& actuatorName) const;
104 
107  std::vector<const CoupledActuator*> coupledActuators() const;
110  const CoupledActuator* coupledActuator(
111  const std::string& actuatorName) const;
112 
115  std::vector<const TorqueActuator*> torqueActuators() const;
118  const TorqueActuator* torqueActuator(
119  const std::string& actuatorName) const;
120 
123  std::vector<const AngleSpeedActuator*> angleSpeedActuators() const;
126  const AngleSpeedActuator* angleSpeedActuator(
127  const std::string& actuatorName) const;
128 
131  std::vector<const WheelTorqueActuator*> wheelTorqueActuators() const;
134  const WheelTorqueActuator* wheelTorqueActuator(
135  const std::string& actuatorName) const;
136 
139  std::vector<const WheelVelocityActuator*> wheelVelocityActuators() const;
142  const WheelVelocityActuator* wheelVelocityActuator(
143  const std::string& actuatorName) const;
144 
147  std::vector<const LEDActuator*> ledActuators() const;
150  const LEDActuator* ledActuator(const std::string& actuatorName) const;
151 
154  std::vector<const Sensor*> sensors() const;
157  const Sensor* sensor(const std::string& sensorName) const;
158 
161  std::vector<const AngleSensor*> angleSensors() const;
164  const AngleSensor* angleSensor(const std::string& sensorName) const;
165 
168  std::vector<const CoupledSensor*> coupledSensors() const;
171  const CoupledSensor* coupledSensor(const std::string& sensorName) const;
172 
175  std::vector<const TorqueSensor*> torqueSensors() const;
178  const TorqueSensor* torqueSensor(const std::string& sensorName) const;
179 
182  std::vector<const AngleSpeedSensor*> angleSpeedSensors() const;
185  const AngleSpeedSensor* angleSpeedSensor(
186  const std::string& sensorName) const;
187 
190  std::vector<const WheelVelocitySensor*> wheelVelocitySensors() const;
193  const WheelVelocitySensor* wheelVelocitySensor(
194  const std::string& sensorName) const;
195 
198  std::vector<const CameraSensor*> cameraSensors() const;
201  const CameraSensor* cameraSensor(const std::string& sensorName) const;
202 
205  std::vector<const FSRSensor*> fsrSensors() const;
208  const FSRSensor* fsrSensor(const std::string& sensorName) const;
209 
212  std::vector<const InertialSensor*> inertialSensors() const;
215  const InertialSensor* inertialSensor(const std::string& sensorName) const;
216 
219  std::vector<const SonarSensor*> sonarSensors() const;
222  const SonarSensor* sonarSensor(const std::string& sensorName) const;
223 
226  std::vector<const BumperSensor*> bumperSensors() const;
229  const BumperSensor* bumperSensor(const std::string& sensorName) const;
230 
233  std::vector<const TactileSensor*> tactileSensors() const;
236  const TactileSensor* tactileSensor(const std::string& sensorName) const;
237 
240  std::vector<const DepthInfraredSensor*> depthInfraredSensors() const;
243  const DepthInfraredSensor* depthInfraredSensor(
244  const std::string& sensorName) const;
245 
247  class ModelImpl* a_impl;
248 };
249 
252 class ALROBOTMODEL_API Frame
253 {
254  public:
257  Frame();
259  ~Frame();
261  const std::string& name() const;
266  const AL::Math::Transform& position() const;
268  const Frame* parentFrame() const;
272  const AL::Math::Transform& localPosition() const;
277  static AL::Math::Transform globalPosition(
278  const Frame* frame);
280  class FrameImpl* a_impl;
281 };
282 
285 class ALROBOTMODEL_API Joint
286 {
287  public:
290  Joint();
292  ~Joint();
296  const Frame* frame() const;
298  const std::string& name() const;
303  const Link* parentLink() const;
308  const Link* childLink() const;
310  class JointImpl* a_impl;
311 };
312 
316 ALROBOTMODEL_API bool frictionCoeff(
317  const std::string& frictionMaterial1,
318  const std::string& frictionMaterial2,
319  float& frictionCoeff);
320 
324 class ALROBOTMODEL_API MassData
325 {
326  public:
330  MassData();
332  virtual ~MassData();
334  float mass() const;
339  const AL::Math::Position3D& CoM() const;
342  const std::vector<float>& inertiaMatrix() const;
344  class MassDataImpl* a_impl;
345 };
346 
350 class ALROBOTMODEL_API VisualData
351 {
352  public:
356  VisualData();
358  virtual ~VisualData();
365  const std::string& meshPath() const;
368  const AL::Math::Transform& meshTransform() const;
370  class VisualDataImpl* a_impl;
371 };
372 
375 class ALROBOTMODEL_API Link
376 {
377  public:
378  enum LinkType
379  {
380  CLASSIC,
381  WHEEL_OMNI,
382  };
385  Link();
387  virtual ~Link();
393  const Frame* frame() const;
395  const std::string& name() const;
398  const Joint* parentJoint() const;
401  const std::vector<const Joint*> childrenJoints() const;
403  const MassData* mass() const;
405  const std::string& frictionMaterial() const;
407  const VisualData* visual() const;
409  LinkType type() const;
411  class LinkImpl* a_impl;
412 };
413 
417 class ALROBOTMODEL_API Actuator
418 {
419  public:
421  enum Type
422  {
423  ANGLE_MOTOR,
424  COUPLED_MOTOR,
425  TORQUE_MOTOR,
426  ANGLE_SPEED_MOTOR,
427  WHEEL_TORQUE,
428  WHEEL_VELOCITY,
431 
432  };
436  Actuator();
438  ~Actuator();
440  const Frame* frame() const;
442  const virtual std::string& name() const;
444  Type type() const;
447  virtual int bufferSize() const = 0;
449  class ActuatorImpl* a_impl;
450 };
451 
455 class ALROBOTMODEL_API AngleActuator: public Actuator
456 {
457  public:
461  AngleActuator();
463  ~AngleActuator();
466  const AngleActuator* reflectedSymmetric() const;
469  bool reflectedSymmetricReversed() const;
471  double proportionalGain() const;
474  virtual int bufferSize() const;
476  float startValue() const;
478  float minValue() const;
480  float maxValue() const;
483  float maxSpeed() const;
485  const Joint* controlledJoint() const;
486 };
487 
491 class ALROBOTMODEL_API CoupledActuator: public Actuator
492 {
493  public:
497  CoupledActuator();
499  ~CoupledActuator();
502  const CoupledActuator* reflectedSymmetric() const;
505  bool reflectedSymmetricReversed() const;
507  double proportionalGain() const;
510  virtual int bufferSize() const;
513  float startValue() const;
516  float minValue() const;
519  float maxValue() const;
521  float maxSpeed() const;
524  std::vector<std::pair<const Joint*, float> >
525  controlledJointAndRatios() const;
526 };
527 
531 class ALROBOTMODEL_API TorqueActuator: public Actuator
532 {
533  public:
537  TorqueActuator();
539  ~TorqueActuator();
542  const TorqueActuator* reflectedSymmetric() const;
545  bool reflectedSymmetricReversed() const;
547  double proportionalGain() const;
549  double derivativeGain() const;
552  virtual int bufferSize() const;
555  float startValue() const;
558  float minValue() const;
561  float maxValue() const;
563  const Joint* controlledJoint() const;
564 };
565 
569 class ALROBOTMODEL_API AngleSpeedActuator: public Actuator
570 {
571  public:
580  const AngleSpeedActuator* reflectedSymmetric() const;
583  bool reflectedSymmetricReversed() const;
585  double derivativeGain() const;
588  virtual int bufferSize() const;
591  float startValue() const;
594  float minValue() const;
597  float maxValue() const;
599  const Joint* controlledJoint() const;
600 };
601 
605 class ALROBOTMODEL_API WheelTorqueActuator: public Actuator
606 {
607  public:
615  double proportionalGain() const;
617  double derivativeGain() const;
620  virtual int bufferSize() const;
622  // Newton per meter).
623  float maxTorque() const;
625  const Joint* controlledJoint() const;
626 };
627 
631 class ALROBOTMODEL_API WheelVelocityActuator: public Actuator
632 {
633  public:
641  double derivativeGain() const;
644  virtual int bufferSize() const;
646  // Newton per meter).
647  float maxVelocity() const;
649  const Joint* controlledJoint() const;
650 };
651 
654 class ALROBOTMODEL_API LEDActuator: public Actuator
655 {
656  public:
657  enum Color
658  {
659  RED,
660  GREEN,
661  BLUE
662  };
663 
664  public:
668  LEDActuator();
670  ~LEDActuator();
673  virtual int bufferSize() const;
675  Color color() const;
676 };
677 
681 class ALROBOTMODEL_API Sensor
682 {
683  public:
685  enum Type
686  {
687  ANGLE,
688  COUPLED,
689  SONAR,
690  CAMERA,
691  FSR,
692  INERTIAL,
693  BUMPER,
694  TORQUE,
695  ANGLE_SPEED,
696  WHEEL_VELOCITY,
697  TACTILE,
698  DEPTH_INFRARED,
704  };
708  Sensor();
710  ~Sensor();
712  const Frame* frame() const;
714  virtual const std::string& name() const;
716  Type type() const;
719  virtual int bufferSize() const = 0;
721  class SensorImpl* a_impl;
722 };
723 
727 class ALROBOTMODEL_API DCMSensor: public Sensor
728 {
729  public:
733  DCMSensor();
735  ~DCMSensor();
738  const std::vector<std::string>& dcmKeys() const;
741  virtual int bufferSize() const = 0;
742 };
743 
744 
748 class ALROBOTMODEL_API AngleSensor: public DCMSensor
749 {
750  public:
754  AngleSensor();
756  ~AngleSensor();
759  virtual int bufferSize() const;
760 };
761 
764 class ALROBOTMODEL_API CoupledSensor: public DCMSensor
765 {
766  public:
770  CoupledSensor();
772  ~CoupledSensor();
775  virtual int bufferSize() const;
776 };
777 
781 class ALROBOTMODEL_API TorqueSensor: public DCMSensor
782 {
783  public:
787  TorqueSensor();
789  ~TorqueSensor();
792  virtual int bufferSize() const;
793 };
794 
799 class ALROBOTMODEL_API AngleSpeedSensor: public DCMSensor
800 {
801  public:
807  ~AngleSpeedSensor();
810  virtual int bufferSize() const;
811 };
812 
817 class ALROBOTMODEL_API WheelVelocitySensor: public DCMSensor
818 {
819  public:
828  virtual int bufferSize() const;
829 };
830 
833 class ALROBOTMODEL_API CameraSensor: public Sensor
834 {
835  public:
839  CameraSensor();
841  ~CameraSensor();
844  virtual int bufferSize() const;
846  int width() const;
848  int height() const;
849 };
850 
853 class ALROBOTMODEL_API FSRSensor: public DCMSensor
854 {
855  public:
859  FSRSensor();
861  ~FSRSensor();
864  virtual int bufferSize() const;
865 };
866 
869 class ALROBOTMODEL_API InertialSensor: public DCMSensor
870 {
871  public:
875  InertialSensor();
877  ~InertialSensor();
880  virtual int bufferSize() const;
881 };
882 
885 class ALROBOTMODEL_API SonarSensor: public DCMSensor
886 {
887  public:
891  SonarSensor();
893  ~SonarSensor();
896  virtual int bufferSize() const;
897 };
898 
901 class ALROBOTMODEL_API BumperSensor: public DCMSensor
902 {
903  public:
907  BumperSensor();
909  ~BumperSensor();
912  virtual int bufferSize() const;
913 };
914 
917 class ALROBOTMODEL_API TactileSensor: public DCMSensor
918 {
919  public:
923  TactileSensor();
925  ~TactileSensor();
928  virtual int bufferSize() const;
929 };
930 
933 class ALROBOTMODEL_API DepthInfraredSensor: public DCMSensor
934 {
935  public:
944  virtual int bufferSize() const;
945 };
946 
969 
970 }
971 
972 #endif // ALROBOTMODEL_H