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 
36 namespace 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;
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
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
armarx::CoinRobotViewerAdapter::enableVisualization
void enableVisualization() override
enableVisualization shows the viewer
Definition: CoinRobotViewerAdapter.cpp:346
armarx::CoinRobotViewerAdapter
The CoinRobotViewerAdapter class.
Definition: CoinRobotViewerAdapter.h:41
AdvancedCoinVisualizationFactory.h
index
uint8_t index
Definition: EtherCATFrame.h:59
armarx::CoinRobotViewerAdapter::removeWaypointVisualization
void removeWaypointVisualization(int index) override
removeWaypointVisualization removes the Waypoint with index so that it is no longer visualized
Definition: CoinRobotViewerAdapter.cpp:293
armarx::CoinRobotViewerAdapter::disableVisualization
void disableVisualization() override
disableVisualization hides the viewer
Definition: CoinRobotViewerAdapter.cpp:352
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::CoinRobotViewerAdapter::addWaypointVisualization
void addWaypointVisualization(int index, PoseBasePtr waypoint, VirtualRobot::EndEffectorPtr tcp) override
METHODS FOR WAYPOINTS.
Definition: CoinRobotViewerAdapter.cpp:249
scene3D::ScenePtr
std::shared_ptr< Scene > ScenePtr
Definition: PointerDefinitions.h:36
armarx::RobotVisualization::scene
VirtualRobot::ScenePtr scene
Definition: RobotVisualization.h:160
armarx::CoinRobotViewerAdapter::removeTransitionVisualization
void removeTransitionVisualization(int index) override
removeTransitionVisualization removes visualization of a certain transition
Definition: CoinRobotViewerAdapter.cpp:199
armarx::CoinRobotViewerAdapter::removeAllWaypointVisualizations
void removeAllWaypointVisualizations() override
removeAllWaypointVisualizations removes all waypoints that are currently visualized
Definition: CoinRobotViewerAdapter.cpp:302
armarx::CoinRobotViewerAdapter::setSelectedWaypoint
void setSelectedWaypoint(int index) override
removeWaypointVisualization removes the Waypoint with index so that it is no longer visualized
Definition: CoinRobotViewerAdapter.cpp:312
armarx::CoinRobotViewerAdapter::highlightTransitionVisualization
void highlightTransitionVisualization(int index, std::vector< PoseBasePtr > transition) override
highlightTransitionVisualization highlights the transition with index i by changing the color of all ...
Definition: CoinRobotViewerAdapter.cpp:207
armarx::RobotVisualization
Definition: RobotVisualization.h:38
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::RobotVisualization::robot
VirtualRobot::RobotPtr robot
Definition: RobotVisualization.h:161
ManipulatorVisualization.h
armarx::AdvancedVisualizationFactoryPtr
std::shared_ptr< AdvancedVisualizationFactory > AdvancedVisualizationFactoryPtr
Definition: AdvancedVisualizationFactory.h:334
armarx::CoinRobotViewerAdapter::addSceneVisualization
void addSceneVisualization(VirtualRobot::ScenePtr scene) override
addSceneVisualization visualizes the whole scene where the robot is placed in
Definition: CoinRobotViewerAdapter.cpp:167
armarx::CoinRobotViewerAdapter::createAdvancedVisualizationFactory
AdvancedVisualizationFactoryPtr createAdvancedVisualizationFactory() override
Definition: CoinRobotViewerAdapter.cpp:243
armarx::CoinRobotViewerAdapter::clearTrajectory
void clearTrajectory() override
clearTrajectory removes all visualization of waypoints and transitions but keeps the robot and the ma...
Definition: CoinRobotViewerAdapter.cpp:358
armarx::channels::KinematicUnitObserver::jointAngles
const KinematicUnitDatafieldCreator jointAngles("jointAngles")
armarx::RobotVisualizationPtr
std::shared_ptr< RobotVisualization > RobotVisualizationPtr
Definition: RobotVisualization.h:165
armarx::CoinRobotViewerAdapter::updateRobotVisualization
void updateRobotVisualization() override
UPDATING OF VISUALIZATION.
Definition: CoinRobotViewerAdapter.cpp:340
armarx::CoinRobotViewerAdapter::setManipulator
void setManipulator(VirtualRobot::RobotNodeSetPtr kc, std::vector< float > jointAngles) override
SETTING MANIPULATOR.
Definition: CoinRobotViewerAdapter.cpp:322
armarx::CoinRobotViewerAdapter::CoinRobotViewerAdapter
CoinRobotViewerAdapter(QWidget *widget)
CoinRobotViewerAdapter.
Definition: CoinRobotViewerAdapter.cpp:54
RobotVisualization.h
armarx::ManipulatorVisualization
Definition: ManipulatorVisualization.h:55
armarx::CoinRobotViewerAdapter::getManipulatorPose
Eigen::Matrix4f getManipulatorPose() override
INHERITED BY OBSERVER.
Definition: CoinRobotViewerAdapter.cpp:230
armarx::CoinRobotViewerAdapter::setCamera
void setCamera(const Eigen::VectorXf position, const Eigen::VectorXf pointAtA, const Eigen::VectorXf pointAtB) override
setCamera sets the camera at a certain position
Definition: CoinRobotViewerAdapter.cpp:175
RobotViewer.h
armarx::CoinRobotViewerAdapter::reproduce
RobotVisualizationPtr reproduce(QWidget *parent) override
UPDATING OF VISUALIZATION.
Definition: CoinRobotViewerAdapter.cpp:371
armarx::CoinRobotViewerAdapter::addTransitionVisualization
void addTransitionVisualization(int index, std::vector< PoseBasePtr > transition) override
METHODS FOR TRANSITIONS.
Definition: CoinRobotViewerAdapter.cpp:189
armarx::CoinRobotViewerAdapter::~CoinRobotViewerAdapter
~CoinRobotViewerAdapter()
Definition: CoinRobotViewerAdapter.cpp:92
armarx::CoinRobotViewerAdapter::addRobotVisualization
void addRobotVisualization(VirtualRobot::RobotPtr robot, QString selectedChain) override
METHODS FOR VISUALIZATION SETUP.
Definition: CoinRobotViewerAdapter.cpp:127
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::AdvancedCoinVisualizationFactoryPtr
std::shared_ptr< AdvancedCoinVisualizationFactory > AdvancedCoinVisualizationFactoryPtr
Definition: AdvancedCoinVisualizationFactory.h:48
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19
armarx::CoinRobotViewerAdapter::getSelectedWaypoint
int getSelectedWaypoint() override
getSelectedWaypoint
Definition: CoinRobotViewerAdapter.cpp:236