common_sr_ur_unlock_tests.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 # Copyright 2021 Shadow Robot Company Ltd.
4 #
5 # This program is free software: you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by the Free
7 # Software Foundation version 2 of the License.
8 #
9 # This program is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 # more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with this program. If not, see <http://www.gnu.org/licenses/>.
16 
17 import rospy
18 import rostest
19 from actionlib_msgs.msg import GoalStatusArray
20 from unittest import TestCase, TestSuite
21 from std_msgs.msg import Bool
22 from std_srvs.srv import Trigger
23 from ur_dashboard_msgs.srv import IsProgramRunning
24 from sr_robot_launch.sr_ur_arm_unlock import SrUrUnlock
25 from sr_robot_launch.mock_sr_ur_robot_hw import MockUrRobotHW
26 from ur_dashboard_msgs.msg import SafetyMode, ProgramState, RobotMode
27 import sys
28 
29 
31  def arm_setup(self, side):
32  self.press_pedal()
33  self.assertTrue(self.get_program_running(side))
34 
35  def arm_mock_dashboard_server(self, side):
36  self.assertFalse(self.get_program_running(side))
37 
38  def e_stop(self, side, release_estop_before_pedal=True):
39  self.assertFalse(self.get_program_running(side))
40  self.assertFalse(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
41  RobotMode.RUNNING)
42  self.press_pedal()
43  rospy.sleep(0.01)
44  self.assertTrue(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
45  RobotMode.RUNNING)
46  self.assertTrue(self.get_program_running(side))
47  self.mock_dashboard[side].robot_state.emergency_stop(latch=True)
48  self.assertTrue(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
49  SafetyMode.ROBOT_EMERGENCY_STOP)
50  self.assertFalse(self.get_program_running(side))
51  self.assertFalse(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
52  RobotMode.RUNNING)
53  self.mock_dashboard[side].robot_state.emergency_stop(latch=False)
54  self.assertFalse(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
55  SafetyMode.ROBOT_EMERGENCY_STOP)
56  self.press_pedal()
57  self.assertTrue(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
58  SafetyMode.NORMAL)
59  self.assertTrue(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode == RobotMode.RUNNING)
60  self.assertTrue(self.get_program_running(side))
61 
62  def fault(self, side):
63  self.press_pedal()
64  self.assertTrue(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
65  RobotMode.RUNNING)
66  self.assertTrue(self.get_program_running(side))
67  self.mock_dashboard[side].robot_state.fault()
68  self.assertTrue(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
69  SafetyMode.FAULT)
70  self.assertFalse(self.get_program_running(side))
71  self.press_pedal()
72  self.assertTrue(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
73  SafetyMode.NORMAL)
74  self.assertTrue(self.get_program_running(side))
75 
76  def arm_power_cycle(self, side):
77  self.assertTrue(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
78  RobotMode.POWER_OFF)
79  self.assertFalse(self.get_program_running(side))
80  self.press_pedal()
81  self.assertTrue(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
82  RobotMode.RUNNING)
83  self.assertTrue(self.get_program_running(side))
84  self.press_pedal()
85  self.assertFalse(self.mock_dashboard[side].robot_state.get_robot_mode().robot_mode.mode ==
86  RobotMode.RUNNING)
87  self.assertFalse(self.get_program_running(side))
88 
89  def get_program_running(self, side):
90  service_call = rospy.ServiceProxy(self.service_string[side], IsProgramRunning)
91  response = service_call()
92  return response.program_running
93 
94  def press_pedal(self):
95  self.sr_ur_arm_unlock.release_or_brake_arm_cb(Bool(True))
96 
97  def arm_fault_bimanual(self, sides):
98  self.assertFalse(self.get_program_running('right'))
99  self.assertFalse(self.get_program_running('left'))
100  self.assertTrue(self.mock_dashboard['right'].robot_state.get_robot_mode().robot_mode.mode ==
101  RobotMode.POWER_OFF)
102  self.assertTrue(self.mock_dashboard['left'].robot_state.get_robot_mode().robot_mode.mode ==
103  RobotMode.POWER_OFF)
104  self.press_pedal()
105  self.assertTrue(self.mock_dashboard['right'].robot_state.get_robot_mode().robot_mode.mode ==
106  RobotMode.RUNNING)
107  self.assertTrue(self.mock_dashboard['left'].robot_state.get_robot_mode().robot_mode.mode ==
108  RobotMode.RUNNING)
109  self.assertTrue(self.get_program_running('right'))
110  self.assertTrue(self.get_program_running('left'))
111  for side in sides:
112  self.mock_dashboard[side].robot_state.fault()
113  for side in sides:
114  self.assertTrue(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
115  SafetyMode.FAULT)
116  self.press_pedal()
117  for side in sides:
118  self.assertFalse(self.mock_dashboard[side].robot_state.get_safety_mode().safety_mode.mode ==
119  SafetyMode.FAULT)
120  self.assertTrue(self.get_program_running('right'))
121  self.assertTrue(self.get_program_running('left'))
def e_stop(self, side, release_estop_before_pedal=True)


sr_robot_launch
Author(s): Kirsty Ellis
autogenerated on Mon Feb 28 2022 23:52:26