00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <OGRE/OgreQuaternion.h>
00031 #include <OGRE/OgreVector3.h>
00032
00033 #include "rviz/default_plugin/interactive_markers/interactive_marker_control.h"
00034 #include "rviz/default_plugin/marker_display.h"
00035 #include "rviz/default_plugin/markers/marker_base.h"
00036 #include "rviz/properties/property.h"
00037 #include "rviz/properties/quaternion_property.h"
00038 #include "rviz/properties/vector_property.h"
00039
00040 #include "rviz/default_plugin/markers/marker_selection_handler.h"
00041
00042 namespace rviz
00043 {
00044
00045 MarkerSelectionHandler::MarkerSelectionHandler( const MarkerBase* marker, MarkerID id )
00046 : marker_( marker )
00047 , marker_id_( QString::fromStdString( id.first ) + "/" + QString::number( id.second ))
00048 {
00049 }
00050
00051 MarkerSelectionHandler::~MarkerSelectionHandler()
00052 {
00053 }
00054
00055 Ogre::Vector3 MarkerSelectionHandler::getPosition()
00056 {
00057 return Ogre::Vector3( marker_->getMessage()->pose.position.x,
00058 marker_->getMessage()->pose.position.y,
00059 marker_->getMessage()->pose.position.z );
00060 }
00061
00062 Ogre::Quaternion MarkerSelectionHandler::getOrientation()
00063 {
00064 return Ogre::Quaternion( marker_->getMessage()->pose.orientation.w,
00065 marker_->getMessage()->pose.orientation.x,
00066 marker_->getMessage()->pose.orientation.y,
00067 marker_->getMessage()->pose.orientation.z );
00068 }
00069
00070 void MarkerSelectionHandler::createProperties( const Picked& obj, Property* parent_property )
00071 {
00072 Property* group = new Property( "Marker " + marker_id_, QVariant(), "", parent_property );
00073 properties_.push_back( group );
00074
00075 position_property_ = new VectorProperty( "Position", getPosition(), "", group );
00076 position_property_->setReadOnly( true );
00077
00078 orientation_property_ = new QuaternionProperty( "Orientation", getOrientation(), "", group );
00079 orientation_property_->setReadOnly( true );
00080
00081 group->expand();
00082 }
00083
00084 void MarkerSelectionHandler::updateProperties()
00085 {
00086 position_property_->setVector( getPosition() );
00087 orientation_property_->setQuaternion( getOrientation() );
00088 }
00089
00090 }