|
|
|
|
@ -24,7 +24,7 @@ class UnityRobotController(RobotController):
|
|
|
|
|
self._node.declare_parameter('fire_ext_pixel_speed', 1.0)
|
|
|
|
|
self._node.declare_parameter('fire_ext_max_capacity', 5)
|
|
|
|
|
|
|
|
|
|
self._node.declare_parameter('max_tilt_deg', 15.)
|
|
|
|
|
self._node.declare_parameter('max_tilt_deg', 90.)
|
|
|
|
|
|
|
|
|
|
self._lin_max = self._node.get_parameter('max_linear_speed').value
|
|
|
|
|
self._ang_max = self._node.get_parameter('max_angular_speed').value
|
|
|
|
|
@ -32,6 +32,8 @@ class UnityRobotController(RobotController):
|
|
|
|
|
self._max_tilt = np.deg2rad(self._node.get_parameter('max_tilt_deg').value)
|
|
|
|
|
self._FALL = False
|
|
|
|
|
|
|
|
|
|
self._LIGHTS = False
|
|
|
|
|
|
|
|
|
|
fire_ext_max_capacity = self._node.get_parameter('fire_ext_max_capacity').value
|
|
|
|
|
|
|
|
|
|
super().__init__(fire_ext_max_capacity = fire_ext_max_capacity)
|
|
|
|
|
@ -46,6 +48,9 @@ class UnityRobotController(RobotController):
|
|
|
|
|
|
|
|
|
|
self.fe_burst_srv = self._node.create_client(Trigger, 'fe_burst')
|
|
|
|
|
|
|
|
|
|
self.lights_srv = self._node.create_client(Trigger, '/unity/light_trigger')
|
|
|
|
|
self.fall_reset_srv = self._node.create_client(Trigger, '/unity/robot_reset_trigger')
|
|
|
|
|
|
|
|
|
|
self.start_time = self.get_time_seconds() # TODO save it when first cmd is given
|
|
|
|
|
|
|
|
|
|
# TODO create collision subscriber from Unity
|
|
|
|
|
@ -92,7 +97,7 @@ class UnityRobotController(RobotController):
|
|
|
|
|
self._node.get_logger().error("Fire extinguisher is out of fuel!")
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
self._node.get_logger().error("Fire extingusher burst is performing")
|
|
|
|
|
self._node.get_logger().info("Fire extingusher burst is performing")
|
|
|
|
|
future = self.fe_burst_srv.call_async(Trigger.Request())
|
|
|
|
|
future.add_done_callback(self._fe_burst_done_cb)
|
|
|
|
|
return True
|
|
|
|
|
@ -153,6 +158,32 @@ class UnityRobotController(RobotController):
|
|
|
|
|
self.pub_status()
|
|
|
|
|
self._FALL = fall
|
|
|
|
|
|
|
|
|
|
def send_lights_cmd(self):
|
|
|
|
|
future = self.lights_srv.call_async(Trigger.Request())
|
|
|
|
|
future.add_done_callback(self._lights_done_cb)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _lights_done_cb(self, future):
|
|
|
|
|
result = future.result()
|
|
|
|
|
self._LIGHTS = not self._LIGHTS
|
|
|
|
|
self._node.get_logger().info(f"Lights is {'ON' if self._LIGHTS else 'OFF'}")
|
|
|
|
|
|
|
|
|
|
def send_fall_reset_cmd(self):
|
|
|
|
|
if self._FALL:
|
|
|
|
|
self._node.get_logger().info("Trying to reset robot...")
|
|
|
|
|
future = self.fall_reset_srv.call_async(Trigger.Request())
|
|
|
|
|
future.add_done_callback(self._fall_reset_done_cb)
|
|
|
|
|
else:
|
|
|
|
|
self._node.get_logger().error("Robot didnot fall yet")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _fall_reset_done_cb(self, future):
|
|
|
|
|
result = future.result()
|
|
|
|
|
self._FALL = False
|
|
|
|
|
self._node.get_logger().info(f"Fall reset done {result.success} {result.message}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|