1 #ifndef USER_INTERFACE_H 2 #define USER_INTERFACE_H 5 #include <Klampt/Modeling/DynamicPath.h> 6 #include <KrisLibrary/camera/viewport.h> 7 #include <Klampt/Planning/RobotCSpace.h> 8 #include <Klampt/Planning/PlannerSettings.h> 9 #include <Klampt/Planning/RealTimePlanner.h> 10 #include "RobotInterface.h" 11 #include "InputProcessor.h" 12 #include <KrisLibrary/utils/threadutils.h> 27 RobotModel* GetRobot()
const {
return world->robots[0].get(); }
28 void GetClickRay(
int mx,
int my,Ray3D& ray)
const;
32 virtual string Name()
const {
return "Unnamed"; }
33 virtual string Description()
const {
return "Unnamed"; }
34 virtual string Instructions()
const {
return ""; }
35 virtual void DrawGL() { }
44 virtual string ActivateEvent(
bool enable) {
return ""; }
45 virtual string MouseInputEvent(
int mx,
int my,
bool drag) {
return ""; }
46 virtual string SpaceballEvent(
const RigidTransform& T) {
return ""; }
47 virtual string KeypressEvent(
unsigned char c,
int mx,
int my) {
return ""; }
48 virtual string UpdateEvent() {
return ""; }
52 Camera::Viewport* viewport;
65 virtual string Name()
const {
return "JointPoser"; }
66 virtual string Description()
const {
return "Joint poser"; }
67 virtual string Instructions()
const {
return "Click and drag to pose individual joints"; }
68 virtual string ActivateEvent(
bool enabled);
69 virtual string MouseInputEvent(
int mx,
int my,
bool drag);
70 virtual string UpdateEvent();
87 void SetProcessor(shared_ptr<InputProcessorBase>& newProcessor);
88 bool ObjectiveChanged();
89 shared_ptr<PlannerObjectiveBase> GetObjective();
92 virtual string Instructions()
const {
if(inputProcessor)
return inputProcessor->Instructions();
else return ""; }
93 virtual string ActivateEvent(
bool enabled);
94 virtual void DrawGL();
95 virtual string MouseInputEvent(
int mx,
int my,
bool drag);
96 virtual string SpaceballEvent(
const RigidTransform& T);
97 virtual string UpdateEvent();
99 shared_ptr<InputProcessorBase> inputProcessor;
100 shared_ptr<PlannerObjectiveBase> currentObjective;
110 virtual string Name()
const {
return "PointPoser"; }
111 virtual string Description()
const {
return "Point poser"; }
112 virtual string UpdateEvent();
124 virtual string Name()
const {
return "UnnamedPlanner"; }
125 virtual string Description()
const {
return "Unnamed planner interface"; }
127 virtual string ActivateEvent(
bool enabled);
128 virtual string UpdateEvent();
129 virtual string Instructions()
const;
131 shared_ptr<RealTimePlanner> planner;
132 shared_ptr<PlannerObjectiveBase> plannerObjective;
149 virtual string Name()
const {
return "IKPointPoser"; }
150 virtual string Description()
const {
return "Smart point poser"; }
151 virtual string ActivateEvent(
bool enabled);
153 shared_ptr<SingleRobotCSpace> cspace;
162 virtual string Name()
const {
return "RRTPointPoser"; }
163 virtual string Description()
const {
return "Goal-based point poser"; }
164 virtual string ActivateEvent(
bool enabled);
169 shared_ptr<SingleRobotCSpace> cspace;
193 virtual string Name()
const {
return "UnnamedPlanner"; }
194 virtual string Description()
const {
return "Unnamed planner interface"; }
196 string Instructions()
const;
197 virtual string ActivateEvent(
bool enabled);
198 virtual string UpdateEvent();
204 virtual string Name()
const {
return "IKPointPoser"; }
205 virtual string Description()
const {
return "Safety Filter"; }
206 virtual string ActivateEvent(
bool enabled);
208 shared_ptr<SingleRobotCSpace> cspace;
215 virtual string Name()
const {
return "RRTPointPoser"; }
216 virtual string Description()
const {
return "Sampling-Based Planner"; }
218 virtual string ActivateEvent(
bool enabled);
220 shared_ptr<SingleRobotCSpace> cspace;
Definition: RobotInterface.h:29
double startObjectiveThreshold
Definition: UserInterface.h:139
A goal that measures point-to-point distance.
Definition: PlannerObjective.h:177
A structure containing settings that should be used for collision detection, contact solving...
Definition: PlannerSettings.h:43
An interface that uses the real-time RRT motion planner to achieve the user's objective.
Definition: UserInterface.h:159
An interface to a planning thread.
Definition: RealTimePlanner.h:287
An abstract base class for a user interface.
Definition: UserInterface.h:22
Defines the WorldModel class.
An interface that uses numerical IK to solve for a Cartesian objective function. Assumes that IK is f...
Definition: UserInterface.h:107
Definition: UserInterface.h:201
shared_ptr< PlannerObjectiveBase > plannerObjective
this is needed to maintain object pointed to by planner's objective
Definition: UserInterface.h:183
An interface that uses a real-time planner to solve for an arbitrary objective function. Subclasses must choose which type of planner to use.
Definition: UserInterface.h:119
A base class for a multithreaded planning robot UI. Subclasses must call planningThread.SetStartConfig(), SetCSpace(), and SetPlanner().
Definition: UserInterface.h:179
Definition: UserInterface.h:212
The main robot type used in RobotSim.
Definition: Robot.h:83
An interface uses safe IK as the real-time planner class to achieve the user's objective.
Definition: UserInterface.h:146
An interface that allows the user to pose individual joints using mouse dragging. ...
Definition: UserInterface.h:62
Definition: ContactDistance.h:6
double startObjectiveThreshold
Definition: UserInterface.h:188
The main world class containing multiple robots, objects, and static geometries (terrains). Lights and other viewport information may also be stored here.
Definition: World.h:24