Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve/perception replayer #39

Closed
wants to merge 6 commits into from
Closed
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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.py[cod]
*.pyc
__pycache__/
1 change: 1 addition & 0 deletions planning/planning_debug_tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ install(PROGRAMS
scripts/trajectory_visualizer.py
scripts/closest_velocity_checker.py
scripts/perception_replayer/perception_reproducer.py
scripts/perception_replayer/perception_reproducer_v2.py
scripts/perception_replayer/perception_replayer.py
scripts/update_logger_level.sh
DESTINATION lib/${PROJECT_NAME}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,22 +97,13 @@ def on_timer(self):
self.objects_pub.publish(objects_msg)

# traffic signals
# temporary support old auto msgs
if traffic_signals_msg:
if self.is_auto_traffic_signals:
traffic_signals_msg.header.stamp = timestamp
self.auto_traffic_signals_pub.publish(traffic_signals_msg)
else:
traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(traffic_signals_msg)
traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(traffic_signals_msg)
self.prev_traffic_signals_msg = traffic_signals_msg
elif self.prev_traffic_signals_msg:
if self.is_auto_traffic_signals:
self.prev_traffic_signals_msg.header.stamp = timestamp
self.auto_traffic_signals_pub.publish(self.prev_traffic_signals_msg)
else:
self.prev_traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(self.prev_traffic_signals_msg)
self.prev_traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(self.prev_traffic_signals_msg)

def onPushed(self, event):
if self.widget.button.isChecked():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
from autoware_perception_msgs.msg import DetectedObjects
from autoware_perception_msgs.msg import PredictedObjects
from autoware_perception_msgs.msg import TrackedObjects
from autoware_perception_msgs.msg import TrafficLightElement
from autoware_perception_msgs.msg import TrafficLightGroup
from autoware_perception_msgs.msg import TrafficLightGroupArray
from geometry_msgs.msg import PoseStamped
from geometry_msgs.msg import PoseWithCovarianceStamped
Expand All @@ -32,6 +34,7 @@
from rosbag2_py import StorageFilter
from rosidl_runtime_py.utilities import get_message
from sensor_msgs.msg import PointCloud2
from utils import get_starting_time
from utils import open_reader


Expand Down Expand Up @@ -79,20 +82,24 @@
PoseStamped, "/planning/mission_planning/goal", 1
)

self.traffic_signals_pub = self.create_publisher(
TrafficLightGroupArray, "/perception/traffic_light_recognition/traffic_signals", 1
)

# load rosbag
print("Stared loading rosbag")
if os.path.isdir(args.bag):
for bag_file in sorted(os.listdir(args.bag)):
if bag_file.endswith(self.args.rosbag_format):
self.load_rosbag(args.bag + "/" + bag_file)
bags = [
os.path.join(args.bag, base_name)
for base_name in os.listdir(args.bag)
if base_name.endswith(args.rosbag_format)
]
for bag_file in sorted(bags, key=get_starting_time):
self.load_rosbag(bag_file)
else:
self.load_rosbag(args.bag)
print("Ended loading rosbag")

self.traffic_signals_pub = self.create_publisher(
TrafficLightGroupArray, "/perception/traffic_light_recognition/traffic_signals", 1
)

# wait for ready to publish/subscribe
time.sleep(1.0)

Expand Down Expand Up @@ -123,10 +130,37 @@
msg_type = get_message(type_map[topic])
msg = deserialize_message(data, msg_type)
if topic == objects_topic:
if not isinstance(msg, self.objects_pub.msg_type):
# convert old autoware_auto_perception_msgs to new autoware_perception_msgs
new_msg = self.objects_pub.msg_type()
for field in msg.__slots__:
setattr(
new_msg, field, getattr(msg, field)
) # it's unsafe because the elements inside the message are still the old type, but it works for now on.
msg = new_msg
self.rosbag_objects_data.append((stamp, msg))

if topic == ego_odom_topic:
self.rosbag_ego_odom_data.append((stamp, msg))

if topic == traffic_signals_topic:
if not isinstance(msg, self.traffic_signals_pub.msg_type):
# convert old TrafficSignalArray msg to new TrafficLightGroupArray msg.
new_msg = self.traffic_signals_pub.msg_type()
new_msg.stamp = msg.stamp
for traffc_signal in msg.signals:

Check warning on line 151 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (traffc)
traffic_lignt_group = TrafficLightGroup()

Check warning on line 152 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (lignt)
traffic_lignt_group.traffic_light_group_id = traffc_signal.traffic_signal_id

Check warning on line 153 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (lignt)

Check warning on line 153 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (traffc)
for traffic_signal_element in traffc_signal.elements:

Check warning on line 154 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (traffc)
traffic_light_element = TrafficLightElement()
traffic_light_element.color = traffic_signal_element.color
traffic_light_element.shape = traffic_signal_element.shape
traffic_light_element.status = traffic_signal_element.status
traffic_light_element.confidence = traffic_signal_element.confidence
traffic_lignt_group.elements.append(traffic_light_element)

Check warning on line 160 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (lignt)
new_msg.traffic_light_groups.append(traffic_lignt_group)

Check warning on line 161 in planning/planning_debug_tools/scripts/perception_replayer/perception_replayer_common.py

View workflow job for this annotation

GitHub Actions / spell-check-partial

Unknown word (lignt)
msg = new_msg

self.rosbag_traffic_signals_data.append((stamp, msg))

def kill_online_perception_node(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,22 +106,13 @@ def on_timer(self):
self.recorded_ego_pub.publish(ego_odom[1])

# traffic signals
# temporary support old auto msgs
if traffic_signals_msg:
if self.is_auto_traffic_signals:
traffic_signals_msg.header.stamp = timestamp
self.auto_traffic_signals_pub.publish(traffic_signals_msg)
else:
traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(traffic_signals_msg)
traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(traffic_signals_msg)
self.prev_traffic_signals_msg = traffic_signals_msg
elif self.prev_traffic_signals_msg:
if self.is_auto_traffic_signals:
self.prev_traffic_signals_msg.header.stamp = timestamp
self.auto_traffic_signals_pub.publish(self.prev_traffic_signals_msg)
else:
self.prev_traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(self.prev_traffic_signals_msg)
self.prev_traffic_signals_msg.stamp = timestamp
self.traffic_signals_pub.publish(self.prev_traffic_signals_msg)
self.stopwatch.toc("transform and publish")

self.stopwatch.toc("total on_timer")
Expand Down
Loading
Loading