Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 28 additions & 16 deletions src/external_signage/src/external_signage/external_signage_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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,
Expand Down Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions src/signage/launch/signage.launch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
<arg name="signage_param" default="$(find-pkg-share signage)/config/signage_param.yaml" />
<arg name="fms_client_param" default="$(find-pkg-share signage_fms_client)/config/fms_client_param.yaml" />
<arg name="debug_mode" default="false" />
<arg name="use_external_signage" default="false" />
<node pkg="signage" exec="signage" output="screen">
<param from="$(var signage_param)"/>
<param name="debug_mode" value="$(var debug_mode)" />
</node>
<node pkg="external_signage" exec="external_signage" output="screen" />

<node pkg="external_signage" exec="external_signage" output="screen" if="$(var use_external_signage)" />
<node pkg="signage_fms_client" exec="signage_fms_client" output="screen" >
<param from="$(var fms_client_param)"/>
</node>
Expand Down
11 changes: 0 additions & 11 deletions src/signage/src/signage/ros_service_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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):
Expand All @@ -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)
Expand Down
16 changes: 0 additions & 16 deletions src/signage/src/signage/route_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand Down
Loading