|
From: <rob...@us...> - 2009-05-11 23:57:13
|
Revision: 15210
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=15210&view=rev
Author: rob_wheeler
Date: 2009-05-11 23:57:06 +0000 (Mon, 11 May 2009)
Log Message:
-----------
Add a service to halt motors, and add a corresponding button to the dashboard.
Modified Paths:
--------------
pkg/trunk/drivers/motor/ethercat_hardware/include/ethercat_hardware/ethercat_hardware.h
pkg/trunk/drivers/motor/ethercat_hardware/src/ethercat_hardware.cpp
pkg/trunk/robot_control_loops/pr2_etherCAT/src/main.cpp
pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/hardware_panel.py
Added Paths:
-----------
pkg/trunk/visualization/pr2_dashboard/formbuilder/motor_panel.fbp
pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/motor.py
pkg/trunk/visualization/pr2_dashboard/xrc/motor_panel.xrc
Removed Paths:
-------------
pkg/trunk/visualization/pr2_dashboard/formbuilder/reset_panel.fbp
pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/reset.py
pkg/trunk/visualization/pr2_dashboard/xrc/reset_panel.xrc
Modified: pkg/trunk/drivers/motor/ethercat_hardware/include/ethercat_hardware/ethercat_hardware.h
===================================================================
--- pkg/trunk/drivers/motor/ethercat_hardware/include/ethercat_hardware/ethercat_hardware.h 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/drivers/motor/ethercat_hardware/include/ethercat_hardware/ethercat_hardware.h 2009-05-11 23:57:06 UTC (rev 15210)
@@ -63,7 +63,7 @@
/*!
* \brief update send most recent motor commands and retrieve updates. This command must be run at a sufficient rate or else the motors will be disabled.
*/
- void update(bool reset);
+ void update(bool reset, bool halt);
/*!
* \brief Initialize the EtherCAT Master Library.
Modified: pkg/trunk/drivers/motor/ethercat_hardware/src/ethercat_hardware.cpp
===================================================================
--- pkg/trunk/drivers/motor/ethercat_hardware/src/ethercat_hardware.cpp 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/drivers/motor/ethercat_hardware/src/ethercat_hardware.cpp 2009-05-11 23:57:06 UTC (rev 15210)
@@ -318,7 +318,7 @@
}
}
-void EthercatHardware::update(bool reset)
+void EthercatHardware::update(bool reset, bool halt)
{
unsigned char *current, *last;
@@ -327,6 +327,9 @@
// Convert HW Interface commands to MCB-specific buffers
current = current_buffer_;
+ if (halt)
+ halt_motors_ = true;
+
if (reset)
{
reset_state_ = 2 * num_slaves_;
Modified: pkg/trunk/robot_control_loops/pr2_etherCAT/src/main.cpp
===================================================================
--- pkg/trunk/robot_control_loops/pr2_etherCAT/src/main.cpp 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/robot_control_loops/pr2_etherCAT/src/main.cpp 2009-05-11 23:57:06 UTC (rev 15210)
@@ -94,6 +94,7 @@
static int g_quit = 0;
static bool g_reset_motors = true;
+static bool g_halt_motors = false;
static const int NSEC_PER_SEC = 1e+9;
static struct
@@ -238,13 +239,14 @@
{
accumulator_set<double, stats<tag::max, tag::mean> > zero;
acc = zero;
- ec.update(true);
+ ec.update(true, g_halt_motors);
g_reset_motors = false;
}
else
{
- ec.update(false);
+ ec.update(false, g_halt_motors);
}
+ g_halt_motors = false;
double after_ec = now();
mcn.update();
double after_mc = now();
@@ -288,7 +290,7 @@
ec.hw_->actuators_[i]->command_.enable_ = false;
ec.hw_->actuators_[i]->command_.effort_ = 0;
}
- ec.update(false);
+ ec.update(false, true);
publisher.stop();
if (rtpublisher) delete rtpublisher;
@@ -313,6 +315,12 @@
return true;
}
+bool haltMotorsService(std_srvs::Empty::Request &req, std_srvs::Empty::Response &resp)
+{
+ g_halt_motors = true;
+ return true;
+}
+
void warnOnSecondary(int sig)
{
void *bt[32];
@@ -518,6 +526,7 @@
node->advertiseService("shutdown", shutdownService);
node->advertiseService("reset_motors", resetMotorsService);
+ node->advertiseService("halt_motors", haltMotorsService);
//Start thread
int rv;
Added: pkg/trunk/visualization/pr2_dashboard/formbuilder/motor_panel.fbp
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/formbuilder/motor_panel.fbp (rev 0)
+++ pkg/trunk/visualization/pr2_dashboard/formbuilder/motor_panel.fbp 2009-05-11 23:57:06 UTC (rev 15210)
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<wxFormBuilder_Project>
+ <FileVersion major="1" minor="9" />
+ <object class="Project" expanded="1">
+ <property name="class_decoration"></property>
+ <property name="code_generation">XRC</property>
+ <property name="disconnect_events">1</property>
+ <property name="encoding">UTF-8</property>
+ <property name="event_generation">connect</property>
+ <property name="file">motor_panel</property>
+ <property name="first_id">1000</property>
+ <property name="help_provider">none</property>
+ <property name="internationalize">0</property>
+ <property name="name">Motor Panel</property>
+ <property name="namespace"></property>
+ <property name="path">../xrc</property>
+ <property name="precompiled_header"></property>
+ <property name="relative_path">1</property>
+ <property name="use_enum">0</property>
+ <property name="use_microsoft_bom">0</property>
+ <object class="Panel" expanded="1">
+ <property name="bg"></property>
+ <property name="context_help"></property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="font"></property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="maximum_size"></property>
+ <property name="minimum_size"></property>
+ <property name="name">MotorPanel</property>
+ <property name="pos"></property>
+ <property name="size">337,221</property>
+ <property name="subclass"></property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style">wxTAB_TRAVERSAL</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnInitDialog"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer1</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxStaticBoxSizer" expanded="1">
+ <property name="id">wxID_ANY</property>
+ <property name="label">Motors</property>
+ <property name="minimum_size"></property>
+ <property name="name">sbSizer1</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <event name="OnUpdateUI"></event>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxButton" expanded="1">
+ <property name="bg"></property>
+ <property name="context_help"></property>
+ <property name="default">0</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="font"></property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Halt Motors</property>
+ <property name="maximum_size"></property>
+ <property name="minimum_size"></property>
+ <property name="name">halt_motors_button</property>
+ <property name="permission">protected</property>
+ <property name="pos"></property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnButtonClick"></event>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxButton" expanded="1">
+ <property name="bg"></property>
+ <property name="context_help"></property>
+ <property name="default">0</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="font"></property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Reset Motors</property>
+ <property name="maximum_size"></property>
+ <property name="minimum_size"></property>
+ <property name="name">reset_motors_button</property>
+ <property name="permission">protected</property>
+ <property name="pos"></property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnButtonClick"></event>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</wxFormBuilder_Project>
Deleted: pkg/trunk/visualization/pr2_dashboard/formbuilder/reset_panel.fbp
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/formbuilder/reset_panel.fbp 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/visualization/pr2_dashboard/formbuilder/reset_panel.fbp 2009-05-11 23:57:06 UTC (rev 15210)
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<wxFormBuilder_Project>
- <FileVersion major="1" minor="9" />
- <object class="Project" expanded="1">
- <property name="class_decoration"></property>
- <property name="code_generation">XRC</property>
- <property name="disconnect_events">1</property>
- <property name="encoding">UTF-8</property>
- <property name="event_generation">connect</property>
- <property name="file">reset_panel</property>
- <property name="first_id">1000</property>
- <property name="help_provider">none</property>
- <property name="internationalize">0</property>
- <property name="name">Reset Panel</property>
- <property name="namespace"></property>
- <property name="path">../xrc</property>
- <property name="precompiled_header"></property>
- <property name="relative_path">1</property>
- <property name="use_enum">0</property>
- <property name="use_microsoft_bom">0</property>
- <object class="Panel" expanded="1">
- <property name="bg"></property>
- <property name="context_help"></property>
- <property name="enabled">1</property>
- <property name="fg"></property>
- <property name="font"></property>
- <property name="hidden">0</property>
- <property name="id">wxID_ANY</property>
- <property name="maximum_size"></property>
- <property name="minimum_size"></property>
- <property name="name">ResetPanel</property>
- <property name="pos"></property>
- <property name="size">337,221</property>
- <property name="subclass"></property>
- <property name="tooltip"></property>
- <property name="window_extra_style"></property>
- <property name="window_name"></property>
- <property name="window_style">wxTAB_TRAVERSAL</property>
- <event name="OnChar"></event>
- <event name="OnEnterWindow"></event>
- <event name="OnEraseBackground"></event>
- <event name="OnInitDialog"></event>
- <event name="OnKeyDown"></event>
- <event name="OnKeyUp"></event>
- <event name="OnKillFocus"></event>
- <event name="OnLeaveWindow"></event>
- <event name="OnLeftDClick"></event>
- <event name="OnLeftDown"></event>
- <event name="OnLeftUp"></event>
- <event name="OnMiddleDClick"></event>
- <event name="OnMiddleDown"></event>
- <event name="OnMiddleUp"></event>
- <event name="OnMotion"></event>
- <event name="OnMouseEvents"></event>
- <event name="OnMouseWheel"></event>
- <event name="OnPaint"></event>
- <event name="OnRightDClick"></event>
- <event name="OnRightDown"></event>
- <event name="OnRightUp"></event>
- <event name="OnSetFocus"></event>
- <event name="OnSize"></event>
- <event name="OnUpdateUI"></event>
- <object class="wxBoxSizer" expanded="1">
- <property name="minimum_size"></property>
- <property name="name">bSizer1</property>
- <property name="orient">wxVERTICAL</property>
- <property name="permission">none</property>
- <object class="sizeritem" expanded="1">
- <property name="border">5</property>
- <property name="flag">wxALL|wxEXPAND</property>
- <property name="proportion">1</property>
- <object class="wxButton" expanded="1">
- <property name="bg"></property>
- <property name="context_help"></property>
- <property name="default">0</property>
- <property name="enabled">1</property>
- <property name="fg"></property>
- <property name="font"></property>
- <property name="hidden">0</property>
- <property name="id">wxID_ANY</property>
- <property name="label">Reset Motors</property>
- <property name="maximum_size"></property>
- <property name="minimum_size"></property>
- <property name="name">reset_motors_button</property>
- <property name="permission">protected</property>
- <property name="pos"></property>
- <property name="size"></property>
- <property name="style"></property>
- <property name="subclass"></property>
- <property name="tooltip"></property>
- <property name="window_extra_style"></property>
- <property name="window_name"></property>
- <property name="window_style"></property>
- <event name="OnButtonClick"></event>
- <event name="OnChar"></event>
- <event name="OnEnterWindow"></event>
- <event name="OnEraseBackground"></event>
- <event name="OnKeyDown"></event>
- <event name="OnKeyUp"></event>
- <event name="OnKillFocus"></event>
- <event name="OnLeaveWindow"></event>
- <event name="OnLeftDClick"></event>
- <event name="OnLeftDown"></event>
- <event name="OnLeftUp"></event>
- <event name="OnMiddleDClick"></event>
- <event name="OnMiddleDown"></event>
- <event name="OnMiddleUp"></event>
- <event name="OnMotion"></event>
- <event name="OnMouseEvents"></event>
- <event name="OnMouseWheel"></event>
- <event name="OnPaint"></event>
- <event name="OnRightDClick"></event>
- <event name="OnRightDown"></event>
- <event name="OnRightUp"></event>
- <event name="OnSetFocus"></event>
- <event name="OnSize"></event>
- <event name="OnUpdateUI"></event>
- </object>
- </object>
- </object>
- </object>
- </object>
-</wxFormBuilder_Project>
Modified: pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/hardware_panel.py
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/hardware_panel.py 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/hardware_panel.py 2009-05-11 23:57:06 UTC (rev 15210)
@@ -36,7 +36,7 @@
import wx
import wx.aui
from wx import xrc
-import reset
+import motor
import ocean_battery_driver
from ocean_battery_driver.ibps_panel import *
import pr2_power_board
@@ -56,11 +56,11 @@
sizer.Add(self._notebook, 1, wx.EXPAND)
self.SetSizer(sizer)
- self._reset_panel = reset.ResetPanel(self)
+ self._motor_panel = motor.MotorPanel(self)
self._battery_panel = BatteryPanel(self)
self._powerboard_panel = PowerBoardPanel(self)
self._notebook.AddPage(self._powerboard_panel, "Power Board", True)
- self._notebook.AddPage(self._reset_panel, "Reset")
+ self._notebook.AddPage(self._motor_panel, "Motors")
self._notebook.AddPage(self._battery_panel, "Battery")
Added: pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/motor.py
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/motor.py (rev 0)
+++ pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/motor.py 2009-05-11 23:57:06 UTC (rev 15210)
@@ -0,0 +1,76 @@
+# Software License Agreement (BSD License)
+#
+# Copyright (c) 2008, Willow Garage, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of the Willow Garage nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+import roslib
+roslib.load_manifest('pr2_dashboard')
+
+import wx
+from wx import xrc
+import rospy
+import std_srvs.srv
+
+PKG='pr2_dashboard'
+
+class MotorPanel(wx.Panel):
+ def __init__(self, parent):
+ wx.Panel.__init__(self, parent)
+
+ xrc_path = roslib.packages.get_pkg_dir(PKG) + '/xrc/motor_panel.xrc'
+
+ self._xrc = xrc.XmlResource(xrc_path)
+ self._real_panel = self._xrc.LoadPanel(self, 'MotorPanel')
+ sizer = wx.BoxSizer(wx.VERTICAL)
+ sizer.Add(self._real_panel, 1, wx.EXPAND)
+ self.SetSizer(sizer)
+
+ self._reset_motors = xrc.XRCCTRL(self._real_panel, "reset_motors_button")
+ self._halt_motors = xrc.XRCCTRL(self._real_panel, "halt_motors_button")
+
+ self._reset_motors.Bind(wx.EVT_BUTTON, self.on_reset_motors)
+ self._halt_motors.Bind(wx.EVT_BUTTON, self.on_halt_motors)
+
+ def on_reset_motors(self, event):
+ reset = rospy.ServiceProxy("reset_motors", std_srvs.srv.Empty)
+
+ try:
+ reset()
+ except rospy.ServiceException:
+ rospy.logerr('Failed to reset the motors: service call failed')
+
+ def on_halt_motors(self, event):
+ halt = rospy.ServiceProxy("halt_motors", std_srvs.srv.Empty)
+
+ try:
+ halt()
+ except rospy.ServiceException:
+ rospy.logerr('Failed to halt the motors: service call failed')
+
Deleted: pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/reset.py
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/reset.py 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/visualization/pr2_dashboard/src/pr2_dashboard/reset.py 2009-05-11 23:57:06 UTC (rev 15210)
@@ -1,66 +0,0 @@
-# Software License Agreement (BSD License)
-#
-# Copyright (c) 2008, Willow Garage, Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-# * Neither the name of the Willow Garage nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-import roslib
-roslib.load_manifest('pr2_dashboard')
-
-import wx
-from wx import xrc
-import rospy
-import std_srvs.srv
-
-PKG='pr2_dashboard'
-
-class ResetPanel(wx.Panel):
- def __init__(self, parent):
- wx.Panel.__init__(self, parent)
-
- xrc_path = roslib.packages.get_pkg_dir(PKG) + '/xrc/reset_panel.xrc'
-
- self._xrc = xrc.XmlResource(xrc_path)
- self._real_panel = self._xrc.LoadPanel(self, 'ResetPanel')
- sizer = wx.BoxSizer(wx.VERTICAL)
- sizer.Add(self._real_panel, 1, wx.EXPAND)
- self.SetSizer(sizer)
-
- self._reset_motors = xrc.XRCCTRL(self._real_panel, "reset_motors_button")
-
- self._reset_motors.Bind(wx.EVT_BUTTON, self.on_reset_motors)
-
- def on_reset_motors(self, event):
- reset = rospy.ServiceProxy("reset_motors", std_srvs.srv.Empty)
-
- try:
- reset()
- except rospy.ServiceException:
- rospy.logerr('Failed to reset the motors: service call failed')
-
Added: pkg/trunk/visualization/pr2_dashboard/xrc/motor_panel.xrc
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/xrc/motor_panel.xrc (rev 0)
+++ pkg/trunk/visualization/pr2_dashboard/xrc/motor_panel.xrc 2009-05-11 23:57:06 UTC (rev 15210)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
+ <object class="wxPanel" name="MotorPanel">
+ <style>wxTAB_TRAVERSAL</style>
+ <size>337,221</size>
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxEXPAND</flag>
+ <border>5</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Motors</label>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxALL|wxEXPAND</flag>
+ <border>5</border>
+ <object class="wxButton" name="halt_motors_button">
+ <label>Halt Motors</label>
+ <default>0</default>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxALL|wxEXPAND</flag>
+ <border>5</border>
+ <object class="wxButton" name="reset_motors_button">
+ <label>Reset Motors</label>
+ <default>0</default>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</resource>
+
Deleted: pkg/trunk/visualization/pr2_dashboard/xrc/reset_panel.xrc
===================================================================
--- pkg/trunk/visualization/pr2_dashboard/xrc/reset_panel.xrc 2009-05-11 23:56:16 UTC (rev 15209)
+++ pkg/trunk/visualization/pr2_dashboard/xrc/reset_panel.xrc 2009-05-11 23:57:06 UTC (rev 15210)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
- <object class="wxPanel" name="ResetPanel">
- <style>wxTAB_TRAVERSAL</style>
- <size>337,221</size>
- <object class="wxBoxSizer">
- <orient>wxVERTICAL</orient>
- <object class="sizeritem">
- <option>1</option>
- <flag>wxALL|wxEXPAND</flag>
- <border>5</border>
- <object class="wxButton" name="reset_motors_button">
- <label>Reset Motors</label>
- <default>0</default>
- </object>
- </object>
- </object>
- </object>
-</resource>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|