Skip to content

Commit c4275c2

Browse files
committed
Fix orthoimage timestamp unintendedly being set to zero that prevented reference raster from updating with camera field of view movement
1 parent 1988583 commit c4275c2

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

ros/gisnav/gisnav/core/gis_node.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import cv2
88
import numpy as np
9-
import rclpy
109
import requests
1110
from cv_bridge import CvBridge
1211
from geographic_msgs.msg import BoundingBox, GeoPoint
@@ -534,7 +533,7 @@ def orthoimage(self) -> Optional[OrthoImage]:
534533
proj_str: FrameID = tf_.affine_to_proj(M)
535534

536535
# Assign timestamp
537-
orthoimage_msg.image.header.stamp = rclpy.time.Time().to_msg()
536+
orthoimage_msg.image.header.stamp = self.get_clock().now().to_msg()
538537
orthoimage_msg.dem.header.stamp = orthoimage_msg.image.header.stamp
539538

540539
orthoimage_msg.crs = String(data=proj_str)

ros/gisnav/gisnav/core/stereo_node.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def __init__(self, *args, **kwargs) -> None:
7373

7474
# setup publisher to pass launch test without image callback being
7575
# triggered
76-
self.pose_image
76+
self.pnp_image
7777

7878
# Initialize the transform broadcaster and listener
7979
self._tf_buffer = tf2_ros.Buffer()
@@ -86,12 +86,9 @@ def __init__(self, *args, **kwargs) -> None:
8686

8787
def _orthoimage_cb(self, msg: OrthoImage) -> None:
8888
# TODO: rotation and pose image should be cached atomically
89-
# TODO 2: fix use of "_orthoimage" - brittle if the private variable name is
90-
# changed
91-
if not hasattr(self, "_orthoimage") or (
92-
hasattr(self, "_orthoimage")
93-
and rclpy.time.Time.from_msg(msg.image.header.stamp)
94-
!= rclpy.time.Time.from_msg(self._orthoimage.image.header.stamp)
89+
if self._pose_image is None or (
90+
rclpy.time.Time.from_msg(msg.image.header.stamp)
91+
!= rclpy.time.Time.from_msg(self._pose_image.reference.header.stamp)
9592
):
9693
# Set cached rotation to None to trigger rotation and cropping on
9794
# new reference orthoimages. But only if the new orthoimage has a different
@@ -122,7 +119,7 @@ def camera_info(self) -> Optional[CameraInfo]:
122119

123120
def _keypoints_cb(self, msg: PointCloud2) -> None:
124121
"""Callback for :attr:`.image` message"""
125-
self.pose_image(msg)
122+
self.pnp_image(msg)
126123

127124
@property
128125
# @ROS.max_delay_ms(messaging.DELAY_FAST_MS) - gst plugin does not enable timestamp?
@@ -174,7 +171,7 @@ def _transform(
174171
ROS_TOPIC_RELATIVE_POSE_IMAGE,
175172
QoSPresetProfiles.SENSOR_DATA.value,
176173
)
177-
def pose_image(self, keypoint_cloud: PointCloud2) -> Optional[OrthoStereoImage]:
174+
def pnp_image(self, keypoint_cloud: PointCloud2) -> Optional[OrthoStereoImage]:
178175
"""Published aligned and cropped orthoimage consisting of query image,
179176
reference image, and optional reference elevation raster (DEM).
180177
"""

0 commit comments

Comments
 (0)