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:42
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:142
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:114
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