|
From: <MP...@us...> - 2008-07-23 22:10:47
|
Revision: 1998
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=1998&view=rev
Author: MPPics
Date: 2008-07-23 22:10:54 +0000 (Wed, 23 Jul 2008)
Log Message:
-----------
Camera viewer changes and gui-simulator interaction fixes.
Modified Paths:
--------------
pkg/trunk/drivers/robot/pr2/pr2Core/include/pr2Core/pr2Core.h
pkg/trunk/robot_descriptions/gazebo_robot_description/world/pr2.model
pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp
pkg/trunk/visualization/pr2_gui/pr2_gui.fbp
pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp
pkg/trunk/visualization/pr2_gui/src/launcherimpl.cpp
pkg/trunk/visualization/pr2_gui/src/launcherimpl.h
pkg/trunk/visualization/pr2_gui/src/pr2_gui.cpp
pkg/trunk/visualization/pr2_gui/src/pr2_gui.h
pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.cpp
pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.h
Modified: pkg/trunk/drivers/robot/pr2/pr2Core/include/pr2Core/pr2Core.h
===================================================================
--- pkg/trunk/drivers/robot/pr2/pr2Core/include/pr2Core/pr2Core.h 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/drivers/robot/pr2/pr2Core/include/pr2Core/pr2Core.h 2008-07-23 22:10:54 UTC (rev 1998)
@@ -5,46 +5,47 @@
namespace PR2
{
+ static const int PR2_FRAMEID_COUNT = 37; //TODO: replace with the xml file
- enum PR2_FRAMEID{
- FRAMEID_CASTER_FL_WHEEL_L = 101 , // FIXME: this is a hack until we have a frameid server
- FRAMEID_CASTER_FL_WHEEL_R ,
- FRAMEID_CASTER_FL_BODY ,
- FRAMEID_CASTER_FR_WHEEL_L ,
- FRAMEID_CASTER_FR_WHEEL_R ,
- FRAMEID_CASTER_FR_BODY ,
- FRAMEID_CASTER_RL_WHEEL_L ,
- FRAMEID_CASTER_RL_WHEEL_R ,
- FRAMEID_CASTER_RL_BODY ,
- FRAMEID_CASTER_RR_WHEEL_L ,
- FRAMEID_CASTER_RR_WHEEL_R ,
- FRAMEID_CASTER_RR_BODY ,
- FRAMEID_BASE ,
- FRAMEID_TORSO ,
- FRAMEID_ARM_L_TURRET ,
- FRAMEID_ARM_L_SHOULDER ,
- FRAMEID_ARM_L_UPPERARM ,
- FRAMEID_ARM_L_ELBOW ,
- FRAMEID_ARM_L_FOREARM ,
- FRAMEID_ARM_L_WRIST ,
- FRAMEID_ARM_L_HAND ,
- FRAMEID_ARM_L_FINGER_1 ,
- FRAMEID_ARM_L_FINGER_2 ,
- FRAMEID_ARM_R_TURRET ,
- FRAMEID_ARM_R_SHOULDER ,
- FRAMEID_ARM_R_UPPERARM ,
- FRAMEID_ARM_R_ELBOW ,
- FRAMEID_ARM_R_FOREARM ,
- FRAMEID_ARM_R_WRIST ,
- FRAMEID_ARM_R_HAND ,
- FRAMEID_ARM_R_FINGER_1 ,
- FRAMEID_ARM_R_FINGER_2 ,
- FRAMEID_HEAD_PAN_BASE ,
- FRAMEID_HEAD_TILT_BASE ,
- FRAMEID_STEREO_BLOCK ,
- FRAMEID_TILT_LASER_BLOCK ,
- FRAMEID_BASE_LASER_BLOCK ,
- MAX_FRAMEIDS
+ static const char *PR2_FRAMEID[] = { //TODO: replace with the xml file
+ "FRAMEID_CASTER_FL_WHEEL_L" ,//0
+ "FRAMEID_CASTER_FL_WHEEL_R" ,//1
+ "FRAMEID_CASTER_FL_BODY" ,//2
+ "FRAMEID_CASTER_FR_WHEEL_L" ,//3
+ "FRAMEID_CASTER_FR_WHEEL_R" ,//4
+ "FRAMEID_CASTER_FR_BODY" ,//5
+ "FRAMEID_CASTER_RL_WHEEL_L" ,//6
+ "FRAMEID_CASTER_RL_WHEEL_R" ,//7
+ "FRAMEID_CASTER_RL_BODY" ,//8
+ "FRAMEID_CASTER_RR_WHEEL_L" ,//9
+ "FRAMEID_CASTER_RR_WHEEL_R" ,//10
+ "FRAMEID_CASTER_RR_BODY" ,//11
+ "FRAMEID_BASE" ,//12
+ "FRAMEID_TORSO" ,//13
+ "FRAMEID_ARM_L_TURRET" ,//14
+ "FRAMEID_ARM_L_SHOULDER" ,//15
+ "FRAMEID_ARM_L_UPPERARM" ,//16
+ "FRAMEID_ARM_L_ELBOW" ,//17
+ "FRAMEID_ARM_L_FOREARM" ,//18
+ "FRAMEID_ARM_L_WRIST" ,//19
+ "FRAMEID_ARM_L_HAND" ,//20
+ "FRAMEID_ARM_L_FINGER_1" ,//21
+ "FRAMEID_ARM_L_FINGER_2" ,//22
+ "FRAMEID_ARM_R_TURRET" ,//23
+ "FRAMEID_ARM_R_SHOULDER" ,//24
+ "FRAMEID_ARM_R_UPPERARM" ,//25
+ "FRAMEID_ARM_R_ELBOW" ,//26
+ "FRAMEID_ARM_R_FOREARM" ,//27
+ "FRAMEID_ARM_R_WRIST" ,//28
+ "FRAMEID_ARM_R_HAND" ,//29
+ "FRAMEID_ARM_R_FINGER_1" ,//30
+ "FRAMEID_ARM_R_FINGER_2" ,//31
+ "FRAMEID_HEAD_PAN_BASE" ,//32
+ "FRAMEID_HEAD_TILT_BASE" ,//33
+ "FRAMEID_STEREO_BLOCK" ,//34
+ "FRAMEID_TILT_LASER_BLOCK" ,//35
+ "FRAMEID_BASE_LASER_BLOCK" ,//36
+ "END"
};
enum PR2_JOINT_CONTROL_MODE{
Modified: pkg/trunk/robot_descriptions/gazebo_robot_description/world/pr2.model
===================================================================
--- pkg/trunk/robot_descriptions/gazebo_robot_description/world/pr2.model 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/robot_descriptions/gazebo_robot_description/world/pr2.model 2008-07-23 22:10:54 UTC (rev 1998)
@@ -1198,8 +1198,8 @@
<laserCount>1</laserCount>
<origin>0.0 0.0 0.05</origin>
- <minAngle>-135</minAngle>
- <maxAngle> 135</maxAngle>
+ <minAngle>-45</minAngle>
+ <maxAngle> 45</maxAngle>
<minRange>0.05</minRange>
<maxRange>10.0</maxRange>
Modified: pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp
===================================================================
--- pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/simulators/rosgazebo/src/RosGazeboNode.cpp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -289,7 +289,7 @@
//advertise<std_msgs::LaserScan>("laser");
advertise<std_msgs::LaserScan>("scan");
advertise<std_msgs::RobotBase2DOdom>("odom");
- advertise<std_msgs::Image>("image");
+ advertise<std_msgs::Image>("PTZR_image");
advertise<std_msgs::Image>("image_ptz_right");
advertise<std_msgs::Image>("image_ptz_left");
advertise<std_msgs::Image>("image_wrist_right");
Modified: pkg/trunk/visualization/pr2_gui/pr2_gui.fbp
===================================================================
--- pkg/trunk/visualization/pr2_gui/pr2_gui.fbp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/pr2_gui.fbp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -32,7 +32,7 @@
<property name="minimum_size">452,273</property>
<property name="name">launcher</property>
<property name="pos"></property>
- <property name="size">953,406</property>
+ <property name="size">1474,523</property>
<property name="style">wxDEFAULT_FRAME_STYLE</property>
<property name="subclass"></property>
<property name="title">Launcher</property>
@@ -864,7 +864,7 @@
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
- <event name="OnRightUp"></event>
+ <event name="OnRightUp">PTZL_click</event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
@@ -1034,7 +1034,7 @@
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_HORIZONTAL</property>
<property name="proportion">1</property>
- <object class="wxFlexGridSizer" expanded="0">
+ <object class="wxFlexGridSizer" expanded="1">
<property name="cols">1</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">0</property>
@@ -1059,7 +1059,7 @@
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">1</property>
- <object class="wxStaticBoxSizer" expanded="0">
+ <object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">Controls</property>
<property name="minimum_size"></property>
@@ -1888,7 +1888,7 @@
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
- <event name="OnRightUp"></event>
+ <event name="OnRightUp">PTZR_click</event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
Modified: pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/src/Vis3d.cpp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -207,9 +207,9 @@
//static const char *modelPaths[] = {"","","pr2_models/caster1000r2.3DS","","","pr2_models/caster1000r2.3DS","","","pr2_models/caster1000r2.3DS","","","pr2_models/caster1000r2.3DS","pr2_models/base1000r.3DS","pr2_models/body1000r.3DS","pr2_models/sh-pan1000.3DS","pr2_models/sh-pitch1000.3DS","pr2_models/sh-roll1000.3DS","","","","","","","pr2_models/sh-pan1000.3DS","pr2_models/sh-pitch1000.3DS","pr2_models/sh-roll1000.3DS","","","","","","","pr2_models/head-pan1000.3DS","pr2_models/head-tilt1000.3DS","","",""};
static const char *modelPaths[] = {"../pr2_models/wheel.3DS","../pr2_models/wheel.3DS","../pr2_models/caster.3DS","../pr2_models/wheel.3DS","../pr2_models/wheel.3DS","../pr2_models/caster.3DS","../pr2_models/wheel.3DS","../pr2_models/wheel.3DS","../pr2_models/caster.3DS","../pr2_models/wheel.3DS","../pr2_models/wheel.3DS","../pr2_models/caster.3DS","../pr2_models/base.3DS","../pr2_models/body.3DS","../pr2_models/sh-pan.3DS","../pr2_models/sh-pitch.3DS","../pr2_models/sh-roll.3DS","../pr2_models/el-pitch.3DS","../pr2_models/fa-roll.3DS","../pr2_models/wr-pitch.3DS","../pr2_models/wr-roll.3DS","","","../pr2_models/sh-pan.3DS","../pr2_models/sh-pitch.3DS","../pr2_models/sh-roll.3DS","../pr2_models/el-pitch.3DS","../pr2_models/fa-roll.3DS","../pr2_models/wr-pitch.3DS","../pr2_models/wr-roll.3DS","","","../pr2_models/head-pan.3DS","../pr2_models/head-tilt.3DS","","",""};
pLocalRenderer->lock();
- for(int i = 0; i < PR2::MAX_FRAMEIDS-PR2::FRAMEID_CASTER_FL_WHEEL_L; i++)
+ for(int i = 0; i < PR2::PR2_FRAMEID_COUNT; i++)
{
- if (i != 21 && i != 22 && i != 30 && i != 31 && i < 31){
+ //if (i != 21 && i != 22 && i != 30 && i != 31 && i < 31){
libTF::TFPose aPose;
aPose.x = 0;
aPose.y = 0;
@@ -218,7 +218,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.lookup("FRAMEID_CASTER_FL_WHEEL_L");
+ aPose.frame = this->tfClient.lookup(PR2::PR2_FRAMEID[i]);// + i
libTF::TFPose inBaseFrame;
try
{
@@ -236,13 +236,16 @@
inBaseFrame.frame = this->tfClient.lookup("FRAMEID_BASE");
}
std::cout << "Coordinates for : " << i << "; "<<inBaseFrame.x << ", " << inBaseFrame.y << ", " << inBaseFrame.z << "; "<<inBaseFrame.roll << ", " << inBaseFrame.pitch << ", " << inBaseFrame.yaw <<std::endl;
- ILModel *tempModel = new ILModel(pLocalRenderer->manager(), intermediate, (irr::c8*)modelPaths[i], this->tfClient.lookup("FRAMEID_CASTER_FL_WHEEL_L"), (float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z, (float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
- tempModel->getNode()->getMaterial(0).AmbientColor.set(255,100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)));
- model.push_back(tempModel);
+ if(modelPaths[i] != "")
+ {
+ ILModel *tempModel = new ILModel(pLocalRenderer->manager(), intermediate, (irr::c8*)modelPaths[i], this->tfClient.lookup(PR2::PR2_FRAMEID[i]), (float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z, (float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
+ tempModel->getNode()->getMaterial(0).AmbientColor.set(255,100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)),100+int(155.0*rand()/(RAND_MAX + 1.0)));
+ model.push_back(tempModel);
}
else
model.push_back(NULL);
}
+ std::cout << "Loaded all models\n";
myNode->subscribe("transform",transform, &Vis3d::newTransform,this);
pLocalRenderer->unlock();
}
@@ -635,9 +638,11 @@
void Vis3d::newTransform()
{
- for(int i = 0; i < PR2::MAX_FRAMEIDS-PR2::FRAMEID_CASTER_FL_WHEEL_L; i++)
+ //std::cout << "New Transform!\n";
+ for(int i = 0; i < PR2::PR2_FRAMEID_COUNT; i++)
{
- if (i != 21 && i != 22 && i != 30 && i != 31 && i < 31){
+ //std::cout << "i = " << i << std::endl;
+ //if (i != 21 && i != 22 && i != 30 && i != 31 && i < 31){
libTF::TFPose aPose;
aPose.x = 0;
aPose.y = 0;
@@ -646,7 +651,7 @@
aPose.pitch = 0;
aPose.yaw = 0;
aPose.time = 0;
- aPose.frame = this->tfClient.lookup("FRAMEID_CASTER_FL_WHEEL_L");
+ aPose.frame = this->tfClient.lookup(PR2::PR2_FRAMEID[i]);
libTF::TFPose inBaseFrame;
try
{
@@ -664,9 +669,12 @@
inBaseFrame.time = 0;
inBaseFrame.frame = this->tfClient.lookup("FRAMEID_BASE");
}
- model[i]->setPosition((float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z);
- model[i]->setRotation((float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
- }
+ if(model[i] != NULL)
+ {
+ model[i]->setPosition((float)inBaseFrame.x,(float)inBaseFrame.y, (float)inBaseFrame.z);
+ model[i]->setRotation((float)inBaseFrame.roll,(float)(inBaseFrame.pitch), (float)(inBaseFrame.yaw));
+ }
+ //}
}
}
Modified: pkg/trunk/visualization/pr2_gui/src/launcherimpl.cpp
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/launcherimpl.cpp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/src/launcherimpl.cpp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -5,6 +5,9 @@
launcher( parent )
{
PTZLCodec = new ImageCodec<std_msgs::Image>(&PTZLImage);
+ PTZRCodec = new ImageCodec<std_msgs::Image>(&PTZRImage);
+ WristLCodec = new ImageCodec<std_msgs::Image>(&WristLImage);
+ WristRCodec = new ImageCodec<std_msgs::Image>(&WristRImage);
wxInitAllImageHandlers();
LeftDock_FGS->Hide(HeadLaser_RB,true);
@@ -260,7 +263,7 @@
tiltPTZL_S->Enable(true);
zoomPTZL_S->Enable(true);
PTZL_B->Enable(true);
- myNode->subscribe("image", PTZLImage, &LauncherImpl::incomingPTZLImageConn,this);
+ myNode->subscribe("PTZL_image", PTZLImage, &LauncherImpl::incomingPTZLImageConn,this);
myNode->subscribe("PTZL_state", PTZL_state, &LauncherImpl::incomingPTZLState,this);
myNode->advertise<std_msgs::PTZActuatorCmd>("PTZL_cmd");
@@ -283,6 +286,21 @@
}
}
+void LauncherImpl::PTZL_click( wxMouseEvent& event)
+{
+ ptz_cmd.pan.valid = 1;
+ float h_mid = ((float)PTZL_B->GetSize().GetWidth())/2.0f;
+ float v_mid = ((float)PTZL_B->GetSize().GetHeight())/2.0f;
+ float delH = (event.m_x - h_mid)/h_mid*(21.0f-((float)zoomPTZL_S->GetValue())/500.0f);
+ float delV = (event.m_y - v_mid)/v_mid*(15.0f-((float)zoomPTZL_S->GetValue())/700.0f);
+ ptz_cmd.pan.cmd = panPTZL + delH;
+ ptz_cmd.tilt.valid = 1;
+ ptz_cmd.tilt.cmd = tiltPTZL - delV;
+ ptz_cmd.zoom.valid = 0;
+ //std::cout << "Click: " << ptz_cmd.pan.cmd << ", " << ptz_cmd.tilt.cmd << std::endl << "Diff: " << delH << ", " << delV << std::endl << "At: " << panPTZR << ", " << tiltPTZR << std::endl;
+ myNode->publish("PTZL_cmd",ptz_cmd);
+}
+
void LauncherImpl::incomingPTZLState()
{
//std::cout << "receiving position L\n";
@@ -375,20 +393,42 @@
}
}
+void LauncherImpl::PTZR_click( wxMouseEvent& event)
+{
+ ptz_cmd.pan.valid = 1;
+ float h_mid = ((float)PTZR_B->GetSize().GetWidth())/2.0f;
+ float v_mid = ((float)PTZR_B->GetSize().GetHeight())/2.0f;
+ float delH = (event.m_x - h_mid)/h_mid*(21.0f-((float)zoomPTZR_S->GetValue())/500.0f);
+ float delV = (event.m_y - v_mid)/v_mid*(15.0f-((float)zoomPTZR_S->GetValue())/700.0f);
+ ptz_cmd.pan.cmd = panPTZR + delH;
+ ptz_cmd.tilt.valid = 1;
+ ptz_cmd.tilt.cmd = tiltPTZR - delV;
+ ptz_cmd.zoom.valid = 0;
+ //std::cout << "Click: " << ptz_cmd.pan.cmd << ", " << ptz_cmd.tilt.cmd << std::endl << "Diff: " << delH << ", " << delV << std::endl << "At: " << panPTZR << ", " << tiltPTZR << std::endl;
+ myNode->publish("PTZR_cmd",ptz_cmd);
+}
+
void LauncherImpl::incomingPTZRState()
{
//std::cout << "receiving position R\n";
if(PTZR_state.zoom.pos_valid)
zoomPTZR_S->SetValue(round(PTZR_state.zoom.pos));
if(PTZR_state.tilt.pos_valid)
+ {
+ tiltPTZR = PTZR_state.tilt.pos;
tiltPTZR_S->SetValue(round(PTZR_state.tilt.pos));
+ }
if(PTZR_state.pan.pos_valid)
+ {
+ panPTZR = PTZR_state.pan.pos;
panPTZR_S->SetValue(round(PTZR_state.pan.pos));
+ }
//std::cout << "getting pos " << PTZR_state.pan.pos << " " << PTZR_state.tilt.pos << " " << PTZR_state.zoom.pos << endl;
}
void LauncherImpl::incomingPTZRImageConn()
{
+ //std::cout << "image\n";
if(PTZR_GET_NEW_IMAGE)
{
PTZR_GET_NEW_IMAGE = false;
@@ -600,3 +640,11 @@
{
// TODO: Implement EmergencyStop
}
+
+template <class T> const T& max ( const T& a, const T& b ) {
+ return (b<a)?a:b;
+}
+
+template <class T> const T& min ( const T& a, const T& b ) {
+ return (a<b)?a:b;
+}
Modified: pkg/trunk/visualization/pr2_gui/src/launcherimpl.h
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/launcherimpl.h 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/src/launcherimpl.h 2008-07-23 22:10:54 UTC (rev 1998)
@@ -139,6 +139,10 @@
void PTZR_ptzChanged(wxScrollEvent& event);
///(Publisher) Sends a position command to the left PTZ
void PTZL_ptzChanged(wxScrollEvent& event);
+ ///Centers the right PTZ on a clicked location
+ void PTZR_click( wxMouseEvent& event);
+ ///Centers the left PTZ on a clicked location
+ void PTZL_click( wxMouseEvent& event);
public:
//Variables
@@ -178,6 +182,8 @@
bool WristR_GET_NEW_IMAGE;
///Flag stating a new frame can be displayed for the left wrist
bool WristL_GET_NEW_IMAGE;
+ ///Floats to keep track of PTZs
+ float panPTZR, tiltPTZR, panPTZL, tiltPTZL;
///wx bitmap object necessary for displaying camera/pictures
wxBitmap *PTZL_bmp;
///wx bitmap object necessary for displaying camera/pictures
Modified: pkg/trunk/visualization/pr2_gui/src/pr2_gui.cpp
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/pr2_gui.cpp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/src/pr2_gui.cpp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -344,6 +344,7 @@
HeadLaser_RB->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( launcher::HeadLaserChanged ), NULL, this );
panPTZL_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
zoomPTZL_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
+ PTZL_B->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( launcher::PTZL_click ), NULL, this );
tiltPTZL_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
Visualization_CB->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( launcher::startStop_Visualization ), NULL, this );
Topdown_CB->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( launcher::startStopTopdown ), NULL, this );
@@ -354,6 +355,7 @@
EmStop_B->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( launcher::EmergencyStop ), NULL, this );
panPTZR_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
zoomPTZR_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
+ PTZR_B->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( launcher::PTZR_click ), NULL, this );
tiltPTZR_S->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
}
@@ -371,6 +373,7 @@
HeadLaser_RB->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( launcher::HeadLaserChanged ), NULL, this );
panPTZL_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
zoomPTZL_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
+ PTZL_B->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( launcher::PTZL_click ), NULL, this );
tiltPTZL_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZL_ptzChanged ), NULL, this );
Visualization_CB->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( launcher::startStop_Visualization ), NULL, this );
Topdown_CB->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( launcher::startStopTopdown ), NULL, this );
@@ -381,5 +384,6 @@
EmStop_B->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( launcher::EmergencyStop ), NULL, this );
panPTZR_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
zoomPTZR_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
+ PTZR_B->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( launcher::PTZR_click ), NULL, this );
tiltPTZR_S->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( launcher::PTZR_ptzChanged ), NULL, this );
}
Modified: pkg/trunk/visualization/pr2_gui/src/pr2_gui.h
===================================================================
--- pkg/trunk/visualization/pr2_gui/src/pr2_gui.h 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/pr2_gui/src/pr2_gui.h 2008-07-23 22:10:54 UTC (rev 1998)
@@ -85,6 +85,7 @@
virtual void viewChanged( wxCommandEvent& event ){ event.Skip(); }
virtual void HeadLaserChanged( wxCommandEvent& event ){ event.Skip(); }
virtual void PTZL_ptzChanged( wxScrollEvent& event ){ event.Skip(); }
+ virtual void PTZL_click( wxMouseEvent& event ){ event.Skip(); }
virtual void startStop_Visualization( wxCommandEvent& event ){ event.Skip(); }
virtual void startStopTopdown( wxCommandEvent& event ){ event.Skip(); }
virtual void startStop_PTZL( wxCommandEvent& event ){ event.Skip(); }
@@ -93,10 +94,11 @@
virtual void startStop_WristR( wxCommandEvent& event ){ event.Skip(); }
virtual void EmergencyStop( wxCommandEvent& event ){ event.Skip(); }
virtual void PTZR_ptzChanged( wxScrollEvent& event ){ event.Skip(); }
+ virtual void PTZR_click( wxMouseEvent& event ){ event.Skip(); }
public:
- launcher( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Launcher"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 953,406 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("launcher") );
+ launcher( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Launcher"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1474,523 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("launcher") );
~launcher();
};
Modified: pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.cpp
===================================================================
--- pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.cpp 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.cpp 2008-07-23 22:10:54 UTC (rev 1998)
@@ -52,8 +52,8 @@
#define TILT_MAX (90.0f)
#define ZOOM_SCALE (10.0f)
-#define ZOOM_MIN (0.0f)
-#define ZOOM_MAX (10000.0F)
+#define ZOOM_MIN (1.0f)
+#define ZOOM_MAX (9999.0F)
#define POSITION_TICK_LENGTH (20)
#define POSITION_TICK_WIDTH (5)
@@ -592,6 +592,25 @@
m_ImagePanel->Refresh();
}
+void CameraPanel::OnMiddleMouseUp( wxMouseEvent& event )
+{
+ wxSize scale = m_ImagePanel->GetSize();
+
+ float h_mid = ((float)scale.GetWidth())/2.0f;
+ float v_mid = ((float)scale.GetHeight())/2.0f;
+
+ float delH = (event.m_x - h_mid)/h_mid*(21.0f-(m_CurrentZoom)/500.0f);
+ float delV = (event.m_y - v_mid)/v_mid*(15.0f-(m_CurrentZoom)/700.0f);
+
+ m_PTZControlMessage.pan.valid = 1;
+ m_PTZControlMessage.pan.cmd = std::min(std::max(m_CurrentPan + delH, PAN_MIN), PAN_MAX);
+ m_PTZControlMessage.tilt.valid = 1;
+ m_PTZControlMessage.tilt.cmd = std::min(std::max(m_CurrentTilt - delV, TILT_MIN), TILT_MAX);
+ m_PTZControlMessage.zoom.valid = 0;
+
+ m_ROSNode->publish(m_PTZControlTopic, m_PTZControlMessage);
+}
+
void CameraPanel::OnRightMouseDown( wxMouseEvent& event )
{
if ( !IsPTZControlEnabled() )
Modified: pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.h
===================================================================
--- pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.h 2008-07-23 21:46:59 UTC (rev 1997)
+++ pkg/trunk/visualization/wx_ros/wx_camera_panel/src/wx_camera_panel/CameraPanel.h 2008-07-23 22:10:54 UTC (rev 1998)
@@ -121,7 +121,6 @@
void DrawNewZoomLocation( wxDC& dc );
/// Draws the current zoom location (latest data from the camera)
void DrawCurrentZoomLocation( wxDC& dc );
-
/// Draw a pan tickmark
void DrawPan( wxDC& dc, wxPen& pen, float pan );
/// Draw a tilt tickmark
@@ -150,6 +149,8 @@
void OnRightMouseDown( wxMouseEvent& event );
/// wx callback, called when the right mouse button is released on the image panel
void OnRightMouseUp( wxMouseEvent& event );
+ /// wx callback, called when the middle mouse button is released on the image panel
+ void OnMiddleMouseUp( wxMouseEvent& event );
/// wx callback, called when the left mouse button is pressed on the image panel
void OnLeftMouseDown( wxMouseEvent& event );
/// wx callback, called when the left mouse button is released on the image panel
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|