1 #ifndef INTERFACE_SIM_TEST_GUI_H 2 #define INTERFACE_SIM_TEST_GUI_H 4 #include "SimulationGUI.h" 5 #include <Klampt/View/ViewPlot.h> 6 #include <Klampt/View/WorldDragWidget.h> 8 #include <Klampt/View/ObjectPoseWidget.h> 9 #include <KrisLibrary/utils/stringutils.h> 10 #include <KrisLibrary/utils/apputils.h> 13 #define GLUT_LEFT_BUTTON 0 14 #define GLUT_MIDDLE_BUTTON 1 15 #define GLUT_RIGHT_BUTTON 2 25 vector<bool> drawMeasurement;
81 AppUtils::ProgramSettings settings;
83 int cur_link,cur_driver;
86 enum {ModeNormal, ModeForceApplication};
88 vector<RobotPoseWidget> robotWidgets;
89 vector<RigidObjectPoseWidget> objectWidgets;
90 WidgetSet allRobotWidgets,allObjectWidgets;
94 int forceSpringActive;
95 Vector3 forceSpringAnchor;
96 int drawBBs,drawPoser,drawDesired,drawEstimated,drawContacts,drawWrenches,drawExpanded,drawTime,doLogging;
98 string contactStateLogFile, contactWrenchLogFile;
99 map<int,string> robotCommandLogFiles, robotSensedLogFiles, robotTorqueLogFiles;
101 vector<SensorPlot> sensorPlots;
102 vector<vector<bool> > drawSensors;
103 vector<GeometryAppearance> originalAppearance,expandedAppearance;
107 virtual void Start();
108 virtual bool OnCommand(
const string& cmd,
const string& args);
109 virtual bool OnIdle();
110 void ToggleSensorPlot(
int sensorIndex,
int enabled);
111 void ToggleSensorMeasurement(
int sensorIndex,
int measurement,
int enabled);
112 void ToggleDrawExpandedCheckbox(
int checked);
113 void SimStep(Real dt);
114 void SensorPlotUpdate();
116 bool LoadFile(
const char* fn);
119 virtual void RenderWorld();
120 virtual void RenderScreen();
121 virtual void DoPassiveMouseMove(
int x,
int y);
122 virtual void BeginDrag(
int x,
int y,
int button,
int modifiers);
123 virtual void EndDrag(
int x,
int y,
int button,
int modifiers);
124 virtual void DoFreeDrag(
int dx,
int dy,
int button);
127 if(button == GLUT_LEFT_BUTTON) DragPan(dx,dy);
132 if(button == GLUT_LEFT_BUTTON) DragZoom(dx,dy);
137 if(button == GLUT_LEFT_BUTTON) { camera.dist *= (1 + 0.01*Real(dy)); SendRefresh(); }
146 #include <KrisLibrary/GLdraw/GLScreenshotProgram.h> 148 #if defined (__APPLE__) || defined (MACOSX) 152 #endif //__APPLE__ || MACOSX 156 class GLUISimTestGUI :
public GLScreenshotProgram<GLUIGUI>
159 typedef GLScreenshotProgram<GLUIGUI>
BaseT;
163 AppUtils::ProgramSettings settings;
167 GLUI_Button* save_movie_button;
168 GLUI_Listbox* driver_listbox;
169 GLUI_Spinner* driver_value_spinner;
170 GLUI_String file_name;
172 vector<string> controllerSettings;
173 int controllerSettingIndex;
174 GLUI_Listbox* settingsBox;
175 GLUI_EditText* settingEdit;
176 vector<string> controllerCommands;
177 int controllerCommandIndex;
178 GLUI_EditText* commandEdit;
182 vector<bool> sensorDrawn;
183 vector<vector<bool> > sensorMeasurementDrawn;
184 GLUI_Listbox* sensorBox;
185 int sensorSelectIndex;
186 int sensorMeasurementSelectIndex;
187 GLUI_Checkbox* toggleSensorDrawCheckbox;
188 GLUI_Checkbox* toggleMeasurementDrawCheckbox;
189 GLUI_Button* isolateMeasurementButton;
190 GLUI_Listbox* measurementListbox;
193 virtual bool Initialize();
195 void UpdateControllerSettingGUI();
196 void UpdateSensorGUI();
197 void UpdateSensorMeasurementGUI();
198 virtual void Handle_Control(
int id);
199 virtual void Handle_Keypress(
unsigned char c,
int x,
int y);
200 virtual bool OnCommand(
const string& cmd,
const string& args);
virtual void DoAltDrag(int dx, int dy, int button)
Overload this for alt-dragging.
Definition: SimTestGUI.h:130
Generic simulation program.
Definition: SimulationGUI.h:38
A physical simulator for a WorldModel.
Definition: Simulator.h:69
Definition: SimTestGUI.h:21
A backend that processes mouse motion calls into dragging callbacks. Makes it a bit easier to determi...
Definition: NavigationGUI.h:15
SimTest program.
Definition: SimTestGUI.h:77
virtual void DoShiftDrag(int dx, int dy, int button)
Overload this for shift-dragging.
Definition: SimTestGUI.h:135
An OpenGL x-y auto-scrolling plot. Used in SimTest (Interface/SimTestGUI.h) to draw sensor data...
Definition: ViewPlot.h:14
Definition: GenericGUI.h:86
virtual void DoCtrlDrag(int dx, int dy, int button)
Overload this for control-dragging.
Definition: SimTestGUI.h:125
Definition: ContactDistance.h:6
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