diff --git a/src/external_signage/src/external_signage/external_signage_core.py b/src/external_signage/src/external_signage/external_signage_core.py
index 5fa8552..b5633d6 100644
--- a/src/external_signage/src/external_signage/external_signage_core.py
+++ b/src/external_signage/src/external_signage/external_signage_core.py
@@ -10,7 +10,7 @@
from std_msgs.msg import Bool
from ament_index_python.packages import get_package_share_directory
import external_signage.packet_tools as packet_tools
-from autoware_adapi_v1_msgs.msg import MrmState
+from autoware_adapi_v1_msgs.msg import MrmState, OperationModeState
from std_msgs.msg import String
from level4_mode_manager_msgs.msg import Level4DrivingStatus
@@ -137,9 +137,10 @@ def __init__(self, node):
self.node.get_logger().error(str(e))
self.autoware_status = {
- "driving": True,
+ "driving": False,
"mrm": False,
}
+ self.is_autoware_launch = False
# ros interface
api_qos = rclpy.qos.QoSProfile(
@@ -148,10 +149,17 @@ def __init__(self, node):
reliability=rclpy.qos.QoSReliabilityPolicy.RELIABLE,
durability=rclpy.qos.QoSDurabilityPolicy.TRANSIENT_LOCAL,
)
+ airport_mode_qos = rclpy.qos.QoSProfile(
+ history=rclpy.qos.QoSHistoryPolicy.KEEP_LAST,
+ depth=10,
+ reliability=rclpy.qos.QoSReliabilityPolicy.RELIABLE,
+ durability=rclpy.qos.QoSDurabilityPolicy.VOLATILE,
+ )
- node.create_service(SetBool, "/signage/trigger_external", self.trigger_external_signage)
node.create_service(SetBool, "/signage/mode_change", self.change_mode)
- self._sub_airport_mode = node.create_subscription(Bool, "/signage/airport_mode", self.change_airport_mode, api_qos)
+ self._sub_airport_mode = node.create_subscription(
+ Bool, "/signage/airport_mode", self.change_airport_mode, airport_mode_qos
+ )
self.mode_status_pub_ = node.create_publisher(Bool, "/signage/mode_status", api_qos)
self.setting_pub_ = node.create_publisher(String, "/signage/external/settings", api_qos)
self._sub_mrm = node.create_subscription(
@@ -160,6 +168,12 @@ def __init__(self, node):
self.sub_mrm_callback,
api_qos,
)
+ self._sub_operation_mode = node.create_subscription(
+ OperationModeState,
+ "/api/operation_mode/state",
+ self.sub_operation_mode_callback,
+ api_qos,
+ )
self._sub_is_driving_level = node.create_subscription(
Level4DrivingStatus,
@@ -225,29 +239,27 @@ def send_data(self, display_key, data_key):
sender = DataSender(self.bus, self.parser, self.protocol, self.node.get_logger())
sender.send(data, ack_query_ack, ack_data_chunk)
- # Lv4のときは自動運転中かどうかで表示を変更する。Lv2のときは変更しない
- def trigger_external_signage(self, request, response):
+ # operation modeを受け取り、Lv4のときは自動運転中かどうかで表示を変更する。Lv2のときは変更しない
+ def sub_operation_mode_callback(self, msg):
try:
- self.autoware_status["driving"] = request.data
+ self.is_autoware_launch = True
+ self.autoware_status["driving"] = msg.mode == OperationModeState.AUTONOMOUS
if self._settings["in_experiment"]:
- return response
+ return
elif self._settings["airport"]:
if self.autoware_status["mrm"]:
self.display_signage("mrm")
+ elif self.autoware_status["driving"]:
+ self.display_signage("auto")
else:
- if request.data:
- self.display_signage("auto")
- else:
- self.display_signage("null")
+ self.display_signage("null")
else:
- if request.data:
+ if self.autoware_status["driving"]:
self.display_signage("auto")
else:
self.display_signage("null")
- response.success = True
except Exception as e:
- self.node.get_logger().error(str(e))
- return response
+ self.node.get_logger().error("Unable to get the operation mode, ERROR: " + str(e))
# MRMが発生していて空港モードの場合は「緊急停止中」表示にする
def sub_mrm_callback(self, msg):
diff --git a/src/signage/launch/signage.launch.xml b/src/signage/launch/signage.launch.xml
index fafc03f..a708160 100755
--- a/src/signage/launch/signage.launch.xml
+++ b/src/signage/launch/signage.launch.xml
@@ -3,12 +3,12 @@
+
-
-
+
diff --git a/src/signage/src/signage/ros_service_interface.py b/src/signage/src/signage/ros_service_interface.py
index f390fe2..32c8700 100644
--- a/src/signage/src/signage/ros_service_interface.py
+++ b/src/signage/src/signage/ros_service_interface.py
@@ -16,7 +16,6 @@
import rclpy
import time
import threading
-from std_srvs.srv import SetBool
from autoware_adapi_v1_msgs.srv import AcceptStart
from std_srvs.srv import Trigger
@@ -35,7 +34,6 @@ def __init__(self, node, parameter_interface):
self._cli_accept_start = self.__create_client(
AcceptStart, "/api/motion/accept_start"
)
- self._cli_trigger_external = self.__create_client(SetBool, "/signage/trigger_external")
# service call function
def accept_start(self):
@@ -45,15 +43,6 @@ def accept_start(self):
request = AcceptStart.Request()
self.__service_call(self._cli_accept_start, request, True)
- # service call function
- def trigger_external_signage(self, on):
- if self._parameter.debug_mode:
- return
-
- request = SetBool.Request()
- request.data = on
- self.__service_call(self._cli_trigger_external, request, True)
-
# common denominator
def __create_client(self, service_type, service_name):
client = self._node.create_client(service_type, service_name)
diff --git a/src/signage/src/signage/route_handler.py b/src/signage/src/signage/route_handler.py
index d7dd41b..393fc65 100644
--- a/src/signage/src/signage/route_handler.py
+++ b/src/signage/src/signage/route_handler.py
@@ -54,7 +54,6 @@ def __init__(
self._in_slowing_state = False
self._announced_depart = False
self._announced_arrive = False
- self._trigger_external_signage = False
self._processing_thread = False
self.process_station_list_from_fms()
@@ -298,20 +297,12 @@ def route_checker_callback(self):
self._is_stopping = False
self._announced_depart = False
- if (
- not self._trigger_external_signage
- and self._autoware.information.autoware_control
- ):
- self._service_interface.trigger_external_signage(True)
- self._trigger_external_signage = True
if (
not self._announce_engage
and self._parameter.signage_stand_alone
and self._autoware.information.autoware_control
):
self._announce_interface.send_announce("engage")
- self._service_interface.trigger_external_signage(True)
- self._trigger_external_signage = True
self._announce_engage = True
elif self._autoware.information.route_state in [RouteState.ARRIVED, RouteState.UNSET]:
# Check whether the vehicle arrive to goal
@@ -321,13 +312,6 @@ def route_checker_callback(self):
self._announce_engage = False
self._announced_arrive = False
- if (
- self._autoware.information.operation_mode != OperationModeState.AUTONOMOUS
- or self._autoware.information.autoware_control != True
- ) and self._trigger_external_signage:
- self._service_interface.trigger_external_signage(False)
- self._trigger_external_signage = False
-
if self._prev_route_state != RouteState.SET:
if self._autoware.information.route_state == RouteState.SET:
self.process_station_list_from_fms(force_update=True)