Skip to content
Merged
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
1 change: 1 addition & 0 deletions vmd3_radar_driver/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ def destroy_node(self):
"""Clean up the node and stop polling."""
self.get_logger().info("Destroying VMD3RadarNode")
self._running = False
self._thread.join()
super().destroy_node()


Expand Down
7 changes: 5 additions & 2 deletions vmd3_radar_driver/vmd3.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import math
import enum
import time
import struct
from collections import namedtuple
import threading
import queue
Expand Down Expand Up @@ -139,6 +140,7 @@ def __init__(self, tcp_ip: str = '192.168.100.201', tcp_port: int = 6172, udp_po
self._sock_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
local_ip = self._sock_tcp.getsockname()[0]
self._sock_udp.bind((local_ip, udp_port))
self._sock_udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self._sock_udp.setsockopt(socket.SOL_SOCKET, SO_TIMESTAMP, 1)

# Initialize connection with sensor
Expand All @@ -154,17 +156,18 @@ def _udp_receiver(self):
packet_length = 1500
while self._receiver_running:
try:
#packet, _ = self._sock_udp.recvfrom(packet_length)
packet, ancdata, flags, addr = self._sock_udp.recvmsg(packet_length, 1024)
packet_timestamp = time.time() # Fallback timestamp
for cmsg_level, cmsg_type, cmsg_data in ancdata:
if cmsg_level == socket.SOL_SOCKET and cmsg_type == SO_TIMESTAMP:
tv_sec, tv_usec = struct.unpack('ll', cmsg_data)
packet_timestamp = tv_sec + tv_usec / 1e6 # Packet receive timestamp
print("PKT Timestamp:", packet_timestamp)
#packet, _ = self._sock_udp.recvfrom(packet_length)

self._udp_queue.put((packet, packet_timestamp))
except Exception:
import traceback
traceback.print_exc()
continue

def check_send(self, command: bytes):
Expand Down
Loading