18 #ifndef _GAZEBO_GUI_JOINTMAKER_HH_ 
   19 #define _GAZEBO_GUI_JOINTMAKER_HH_ 
   26 #include <ignition/math/Pose3.hh> 
   27 #include <ignition/math/Vector3.hh> 
   46   class recursive_mutex;
 
   66     class MEUserCmdManager;
 
   69     class JointMakerPrivate;
 
  111       public: 
void Reset();
 
  114       public: 
void EnableEventHandlers();
 
  117       public: 
void DisableEventHandlers();
 
  121       public: 
void AddJoint(
const std::string &_type);
 
  125       public: 
void AddJoint(
const JointType _type);
 
  137       public: std::string CreateHotSpot(
JointData *_joint);
 
  140       public: 
void Update();
 
  145       public: 
void RemoveJoint(
const std::string &_jointName);
 
  149       public: 
void RemoveJointByUser(
const std::string &_jointName);
 
  153       public: 
void RemoveJointsByLink(
const std::string &_linkName);
 
  159       public: std::vector<JointData *> JointDataByLink(
 
  160           const std::string &_linkName) 
const;
 
  163       public: 
void GenerateSDF();
 
  167       public: sdf::ElementPtr SDF() 
const;
 
  172       public: 
static unsigned int JointAxisCount(
 
  178       public: 
static std::string TypeAsString(
 
  189       public: 
static std::string JointMaterial(
const std::string &_type);
 
  202       public: 
unsigned int JointCount();
 
  208       public: 
void CreateJointFromSDF(sdf::ElementPtr _jointElem,
 
  209           const std::string &_modelName = 
"");
 
  216       public: 
void AddScopedLinkName(
const std::string &_name);
 
  220       public slots: 
void ShowJoints(
const bool _show);
 
  225       public: 
void SetSelected(
const std::string &_name, 
const bool selected);
 
  231           const bool selected);
 
  235       public: std::map<std::string, std::string> LinkList() 
const;
 
  240       public slots: 
void OnType(
const int _typeInt);
 
  246       public slots: 
void SetAxis(
const std::string &_axis,
 
  247           const ignition::math::Vector3d &_value);
 
  252       public: 
void SetJointPose(
const ignition::math::Pose3d &_pose);
 
  258       public: 
void SetParentLink(
const std::string &_name);
 
  264       public: 
void SetChildLink(
const std::string &_name);
 
  273       public: 
void SetLinksRelativePose(
 
  274           const ignition::math::Pose3d &_pose, 
const bool _resetAll,
 
  275           const int _resetAxis = -1);
 
  283       public: 
void AlignLinks(
const bool _childToParent,
 
  284           const std::string &_axis, 
const std::string &_mode,
 
  285           const bool _reverse);
 
  288       public: 
void FinalizeCreation();
 
  321       private: 
void OpenInspector(
const std::string &_name);
 
  326       private: std::string ScopedLinkName(
const std::string &_name);
 
  330       private: 
void ShowContextMenu(
const std::string &_joint);
 
  333       private: 
void DeselectAll();
 
  338       private: 
void OnSetSelectedEntity(
const std::string &_name,
 
  339           const std::string &_mode);
 
  345       private: 
void OnSetSelectedJoint(
const std::string &_name,
 
  346           const bool _selected);
 
  350       private: 
void OnLinkInserted(
const std::string &_linkName);
 
  354       private: 
void OnLinkRemoved(
const std::string &_linkName);
 
  360       private: 
JointData *CreateJointLine(
const std::string &_name,
 
  367           const std::string &_name);
 
  389       Q_SIGNALS: 
void JointAdded();
 
  393       Q_SIGNALS: 
void EmitLinkInserted(
const std::string &_linkId);
 
  397       Q_SIGNALS: 
void EmitLinkRemoved(
const std::string &_linkId);
 
  400       private slots: 
void OnOpenInspector();
 
  404       private slots: 
void OnDelete();
 
  407       public: 
static std::map<JointMaker::JointType, std::string> 
jointTypes;
 
  413       public: 
static std::map<JointMaker::JointType, std::string>
 
  418       private: std::unique_ptr<JointMakerPrivate> dataPtr;
 
  430       public: 
void OpenInspector();
 
  434       public: 
void Update();
 
  437       public: 
void UpdateMsg();
 
  479       public: std::vector<ignition::math::Vector3d> 
axes;
 
  491       private slots: 
void OnOpenInspector();
 
  495       private slots: 
void OnApply();
 
Class for drawing lines that can change. 
Definition: DynamicLines.hh:37
 
Generic description of a mouse event. 
Definition: MouseEvent.hh:35
 
Ball joint. 
Definition: JointMaker.hh:99
 
none 
Definition: JointMaker.hh:85
 
rendering::VisualPtr parent
Parent visual the joint is connected to. 
Definition: JointMaker.hh:452
 
static std::vector< ignition::math::Vector3d > unitVectors
Constant vector containing [UnitX, UnitY, UnitZ]. 
Definition: JointMaker.hh:410
 
Screw joint. 
Definition: JointMaker.hh:95
 
Hinge joint. 
Definition: JointMaker.hh:91
 
Fixed joint. 
Definition: JointMaker.hh:87
 
GAZEBO_VISIBLE msgs::Joint::Type ConvertJointType(const std::string &_str)
Convert a string to a msgs::Joint::Type enum. 
 
Generic description of a keyboard event. 
Definition: KeyEvent.hh:32
 
boost::shared_ptr< Joint > JointPtr
Definition: PhysicsTypes.hh:117
 
static std::map< JointMaker::JointType, std::string > jointMaterials
A map of joint type to its corresponding material. 
Definition: JointMaker.hh:414
 
msgs::JointPtr jointMsg
Msg containing joint data. 
Definition: JointMaker.hh:485
 
Slider joint. 
Definition: JointMaker.hh:89
 
ignition::math::Pose3d parentPose
Definition: JointMaker.hh:459
 
Hinge2 joint. 
Definition: JointMaker.hh:93
 
Ogre::BillboardSet * handles
Visual handle used to represent joint parent. 
Definition: JointMaker.hh:473
 
Handles the creation of joints in the model editor. 
Definition: JointMaker.hh:76
 
JointInspector * inspector
Inspector for configuring joint properties. 
Definition: JointMaker.hh:488
 
Universal joint. 
Definition: JointMaker.hh:97
 
Class which manages user commands in the model editor. 
Definition: MEUserCmdManager.hh:144
 
rendering::DynamicLines * line
Visual line used to represent joint connecting parent and child. 
Definition: JointMaker.hh:470
 
JointMaker::JointType type
Type of joint. 
Definition: JointMaker.hh:476
 
rendering::JointVisualPtr jointVisual
Joint visual. 
Definition: JointMaker.hh:446
 
std::shared_ptr< JointVisual > JointVisualPtr
Definition: RenderTypes.hh:141
 
A class to inspect and modify joints. 
Definition: JointInspector.hh:42
 
std::vector< ignition::math::Vector3d > axes
Last known axes values. 
Definition: JointMaker.hh:479
 
ignition::math::Pose3d childPose
Definition: JointMaker.hh:463
 
std::string name
Name of the joint. 
Definition: JointMaker.hh:440
 
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:113
 
rendering::VisualPtr child
Child visual the joint is connected to. 
Definition: JointMaker.hh:455
 
rendering::VisualPtr hotspot
Visual of the hotspot 
Definition: JointMaker.hh:449
 
static std::map< JointMaker::JointType, std::string > jointTypes
A map of joint type to its string value. 
Definition: JointMaker.hh:407
 
rendering::VisualPtr visual
Visual of the dynamic line. 
Definition: JointMaker.hh:443
 
bool dirty
True if the joint needs update. 
Definition: JointMaker.hh:482
 
ignition::math::Vector3d childScale
Definition: JointMaker.hh:467
 
JointType
Definition: JointMaker.hh:82
 
Helper class to store joint data. 
Definition: JointMaker.hh:425