CoinRobotViewerAdapter.h
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package ArmarXGuiPlugins::RobotTrajectoryDesigner::Visualization
17 * @author Timo Birr
18 * @date 2018
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22#ifndef COINROBOTVIEWERADAPTER_H
23#define COINROBOTVIEWERADAPTER_H
24
27#include "RobotViewer.h"
28#include "RobotVisualization.h"
29
30///COIN3D-INCLUDES
31#include "Inventor/SoPath.h"
32#include "Inventor/SoPickedPoint.h"
33#include "Inventor/draggers/SoDragger.h"
34#include "Inventor/nodes/SoSelection.h"
35
36namespace armarx
37{
38 /**
39 * @brief The CoinRobotViewerAdapter class
40 */
42 {
43 public:
44 /**
45 * @brief CoinRobotViewerAdapter
46 * @param widget the parent widget on the gui
47 */
48 CoinRobotViewerAdapter(QWidget* widget);
50 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
51 /// METHODS FOR VISUALIZATION SETUP
52 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
53 void addRobotVisualization(VirtualRobot::RobotPtr robot, QString selectedChain) override;
54 void addSceneVisualization(VirtualRobot::ScenePtr scene) override;
55 void setCamera(const Eigen::VectorXf position,
56 const Eigen::VectorXf pointAtA,
57 const Eigen::VectorXf pointAtB) override;
58 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
59 /// METHODS FOR TRANSITIONS
60 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
61 void addTransitionVisualization(int index, std::vector<PoseBasePtr> transition) override;
63 std::vector<PoseBasePtr> transition) override;
64 void removeTransitionVisualization(int index) override;
65 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
66 /// METHODS FOR WAYPOINTS
67 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
69 PoseBasePtr waypoint,
70 VirtualRobot::EndEffectorPtr tcp) override;
71 void removeWaypointVisualization(int index) override;
72 void removeAllWaypointVisualizations() override;
73 void setSelectedWaypoint(int index) override;
74
75 void clearTrajectory() override;
76
77 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
78 /// SETTING MANIPULATOR
79 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
80 void setManipulator(VirtualRobot::RobotNodeSetPtr kc,
81 std::vector<float> jointAngles) override;
82 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
83 /// UPDATING OF VISUALIZATION
84 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
85 RobotVisualizationPtr reproduce(QWidget* parent) override;
86
87 void updateRobotVisualization() override;
88 void enableVisualization() override;
89 void disableVisualization() override;
90
91
92 //inherited by VisualizationSubject
93 Eigen::Matrix4f getManipulatorPose() override;
94 int getSelectedWaypoint() override;
95
96 protected:
98
99 private:
100 AdvancedCoinVisualizationFactoryPtr factory; //produces Visualizations
101 std::shared_ptr<RobotViewer> viewer; //adaptedClass
102 SoDragger* dragger; //muss vor manipCallback initialisiert werden
103 void refreshSelectedPoint();
104 SoNodeList transitions;
105 SoNodeList wayPoints;
106 int selectedWaypoint;
107 int wayPointCounter;
108
109 //Manipulator Utils
110 static void manipFinishCallback(void* data, SoDragger* dragger);
111 static void manipMovedCallback(void* data, SoDragger* dragger);
112 static void autoFollowSensorTimerCB(void* data, SoSensor* sensor);
113 ManipulatorVisualization* manipulator;
114 SoTimerSensor* autoFollowSensor;
115 bool manipulatorMoved;
116
117
118 //Visualization Update
119 SoTimerSensor* robotUpdateSensor;
120 static void robotUpdateTimerCB(void* data, SoSensor* sensor);
121 bool startUpCameraPositioningFlag = true;
122 SoCamera* camera; //pointer to camera of viewer to change perspective easyly
123
124 //Selection utils
125 SoSelection* selected;
126 static void made_selection(void* data, SoPath* path);
127 static void unmade_selection(void* data, SoPath* path);
128 static SoPath* pickFilterCB(void* data, const SoPickedPoint* pick);
129 };
130} // namespace armarx
131
132
133#endif
uint8_t index
AdvancedVisualizationFactoryPtr createAdvancedVisualizationFactory() override
CoinRobotViewerAdapter(QWidget *widget)
CoinRobotViewerAdapter.
void removeWaypointVisualization(int index) override
removeWaypointVisualization removes the Waypoint with index so that it is no longer visualized
void addRobotVisualization(VirtualRobot::RobotPtr robot, QString selectedChain) override
METHODS FOR VISUALIZATION SETUP.
void clearTrajectory() override
clearTrajectory removes all visualization of waypoints and transitions but keeps the robot and the ma...
void setSelectedWaypoint(int index) override
removeWaypointVisualization removes the Waypoint with index so that it is no longer visualized
void updateRobotVisualization() override
UPDATING OF VISUALIZATION.
void addSceneVisualization(VirtualRobot::ScenePtr scene) override
addSceneVisualization visualizes the whole scene where the robot is placed in
void addWaypointVisualization(int index, PoseBasePtr waypoint, VirtualRobot::EndEffectorPtr tcp) override
METHODS FOR WAYPOINTS.
void addTransitionVisualization(int index, std::vector< PoseBasePtr > transition) override
METHODS FOR TRANSITIONS.
void enableVisualization() override
enableVisualization shows the viewer
Eigen::Matrix4f getManipulatorPose() override
INHERITED BY OBSERVER.
RobotVisualizationPtr reproduce(QWidget *parent) override
UPDATING OF VISUALIZATION.
void removeTransitionVisualization(int index) override
removeTransitionVisualization removes visualization of a certain transition
int getSelectedWaypoint() override
getSelectedWaypoint
void highlightTransitionVisualization(int index, std::vector< PoseBasePtr > transition) override
highlightTransitionVisualization highlights the transition with index i by changing the color of all ...
void setManipulator(VirtualRobot::RobotNodeSetPtr kc, std::vector< float > jointAngles) override
SETTING MANIPULATOR.
void removeAllWaypointVisualizations() override
removeAllWaypointVisualizations removes all waypoints that are currently visualized
void disableVisualization() override
disableVisualization hides the viewer
void setCamera(const Eigen::VectorXf position, const Eigen::VectorXf pointAtA, const Eigen::VectorXf pointAtB) override
setCamera sets the camera at a certain position
VirtualRobot::RobotPtr robot
VirtualRobot::ScenePtr scene
std::shared_ptr< class Robot > RobotPtr
Definition Bus.h:19
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< AdvancedCoinVisualizationFactory > AdvancedCoinVisualizationFactoryPtr
std::shared_ptr< AdvancedVisualizationFactory > AdvancedVisualizationFactoryPtr
std::shared_ptr< RobotVisualization > RobotVisualizationPtr