1 #ifndef ROBOT_POSE_WIDGET_H 2 #define ROBOT_POSE_WIDGET_H 4 #include <KrisLibrary/GLdraw/Widget.h> 5 #include <KrisLibrary/GLdraw/TransformWidget.h> 6 #include <KrisLibrary/robotics/IK.h> 35 virtual bool Hover(
int x,
int y,Camera::Viewport& viewport,
double& distance)
override;
36 virtual void SetHighlight(
bool active)
override;
37 virtual bool BeginDrag(
int x,
int y,Camera::Viewport& viewport,
double& distance)
override;
38 virtual void Drag(
int dx,
int dy,Camera::Viewport& viewport)
override;
39 virtual void DrawGL(Camera::Viewport& viewport)
override;
40 void InitDefaultAppearance();
45 GLDraw::GLColor highlightColor;
46 int hoverLink,affectedLink,affectedDriver;
47 vector<int> activeDofs;
48 vector<int> highlightedLinks;
51 vector<GLDraw::GeometryAppearance> poserAppearance;
61 void ClearLink(
int link);
63 void FixPoint(
int link,
const Vector3& localpt);
65 void FixLink(
int link);
67 void Add(
const IKGoal& goal);
69 void AttachWidget(
int widget,
int link);
71 void SetPoseAndWidgetTransform(
int widget,
const RigidTransform& T);
73 void RefreshWidgets();
75 int HoverWidget()
const;
77 int ActiveWidget()
const;
80 virtual void DrawGL(Camera::Viewport& viewport)
override;
81 virtual void Drag(
int dx,
int dy,Camera::Viewport& viewport)
override;
84 virtual bool Hover(
int x,
int y,Camera::Viewport& viewport,
double& closestDistance)
override;
85 virtual bool BeginDrag(
int x,
int y,Camera::Viewport& viewport,
double& closestDistance)
override;
88 vector<IKGoal> poseGoals;
89 vector<GLDraw::TransformWidget> poseWidgets;
102 const Config& Pose()
const {
return linkPoser.poseConfig; }
103 void SetPose(
const Config& q);
104 vector<IKGoal>& Constraints() {
return ikPoser.poseGoals; }
107 Config Pose_Conditioned(
const Config& qref)
const;
113 bool FixCurrentPoint();
115 bool DeleteConstraint();
117 void SetAttachIKMode(
bool);
119 void SetPoseIKMode(
bool);
121 void SetFixedPoseIKMode(
bool);
123 void SetDeleteIKMode(
bool);
126 bool SolveIK(
int iters=0,Real tol=0);
128 bool SolveIKFixedBase(
int iters=0,Real tol=0);
130 bool SolveIKFixedJoint(
int fixedJoint,
int iters=0,Real tol=0);
132 virtual void DrawGL(Camera::Viewport& viewport)
override;
133 virtual bool BeginDrag(
int x,
int y,Camera::Viewport& viewport,
double& distance)
override;
134 virtual void Drag(
int dx,
int dy,Camera::Viewport& viewport)
override;
135 virtual void EndDrag()
override;
136 virtual void Keypress(
char c)
override;
142 GLDraw::TransformWidget basePoser;
145 enum { ModeNormal, ModeIKAttach, ModeIKPose, ModeIKPoseFixed, ModeIKDelete };
149 vector<Config> undoConfigs;
150 vector<vector<pair<int,RigidTransform> > > undoTransforms;
Draws the robot (potentially color-coded)
Definition: ViewRobot.h:14
The main robot type used in RobotSim.
Definition: Robot.h:83
Definition: ContactDistance.h:6