From 5dc1ae5ad40356e419d80ea9740c885cc9e90888 Mon Sep 17 00:00:00 2001 From: Landwhich <156349813+Landwhich@users.noreply.github.com> Date: Sat, 4 Jul 2026 16:25:22 +0000 Subject: [PATCH 1/6] ready to test on pi --- src/Bringup/launch/antenna.launch.py | 5 ++++- .../ros_roboclaw/antenna_roboclaw_node.py | 12 +++++++++--- src/Nav/gps/gps/antenna_pointing_node.py | 4 +--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Bringup/launch/antenna.launch.py b/src/Bringup/launch/antenna.launch.py index cbbe7b36..f8e13e8d 100644 --- a/src/Bringup/launch/antenna.launch.py +++ b/src/Bringup/launch/antenna.launch.py @@ -61,7 +61,10 @@ def generate_launch_description(): "CountsPerRev": 8192 # based on 4096 encoder resolution and 2:1 gear ratio }, ], - remappings=[("/roboclaw_position", "/antenna/tracker_bearing")], + remappings=[ + ("/roboclaw_desired_position", "/antenna/tracker_bearing"), + ("/roboclaw_actual_position", "/antenna/roboclaw_encoder"), + ], ), # Optionally run the standalone basestation config script when requested ExecuteProcess( diff --git a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py index 2488e994..a1b56770 100644 --- a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py +++ b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py @@ -50,18 +50,21 @@ def __init__(self): self.zero_offset = 0 # ROS Interfaces - self.create_subscription(Float32, "/roboclaw_position", self.pos_callback, 5) + self.create_subscription(Float32, "/roboclaw_desired_position", self.pos_callback, 5) self.create_timer(1.0 / self.enc_read_freq, self.encoder_timer) + self.antenna_encoder_pub = self.create_publisher( + Float32, "/roboclaw_actual_position", 10 + ) # Angle to Encoder Command def pos_callback(self, msg: Float32): - norm = msg.data + norm = (msg.data / math.pi * 2) self.target_encoder = self.zero_offset + int(norm * self.counts_per_rev) error = self.wrap_error(self.target_encoder - self.current_encoder) - self.get_logger().info(f"target= {norm * 360:.2f}°, {self.target_encoder}") + # self.get_logger().info(f"target= {norm * 360:.2f}°, {self.target_encoder}") self.drive_to_position(self.current_encoder + error) @@ -83,6 +86,9 @@ def encoder_timer(self): self.current_encoder = enc + antenna_radians = (enc / counts_per_rev) * (math.pi * 2) + antenna_encoder_pub.publish(enc) + # Position Control def drive_to_position(self, target): """ diff --git a/src/Nav/gps/gps/antenna_pointing_node.py b/src/Nav/gps/gps/antenna_pointing_node.py index b5b8d90e..7a09d221 100644 --- a/src/Nav/gps/gps/antenna_pointing_node.py +++ b/src/Nav/gps/gps/antenna_pointing_node.py @@ -76,9 +76,7 @@ def update(self): def publish_bearing(self, bearing): msg = Float32() - msg.data = float(bearing) / ( - math.pi * 2 - ) # normalize the output for the roboclaw + msg.data = float(bearing) # radians follow the ros standard, don't normalize self.bearing_pub.publish(msg) def bearing(self, lat1, lon1, lat2, lon2): From 8427ed5ebd420d003dc58b9b4cfa4fd33fb8a15a Mon Sep 17 00:00:00 2001 From: Landwhich <156349813+Landwhich@users.noreply.github.com> Date: Sat, 4 Jul 2026 16:36:21 +0000 Subject: [PATCH 2/6] fixed a stupid name --- src/Bringup/launch/antenna.launch.py | 4 ++-- .../ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py | 6 ++++-- src/Nav/gps/gps/antenna_pointing_node.py | 4 +--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Bringup/launch/antenna.launch.py b/src/Bringup/launch/antenna.launch.py index f8e13e8d..cd5d9122 100644 --- a/src/Bringup/launch/antenna.launch.py +++ b/src/Bringup/launch/antenna.launch.py @@ -62,8 +62,8 @@ def generate_launch_description(): }, ], remappings=[ - ("/roboclaw_desired_position", "/antenna/tracker_bearing"), - ("/roboclaw_actual_position", "/antenna/roboclaw_encoder"), + ("/roboclaw_desired_position", "/antenna/target_bearing"), + ("/roboclaw_actual_position", "/antenna/bearing"), ], ), # Optionally run the standalone basestation config script when requested diff --git a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py index a1b56770..73b9d460 100644 --- a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py +++ b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py @@ -50,7 +50,9 @@ def __init__(self): self.zero_offset = 0 # ROS Interfaces - self.create_subscription(Float32, "/roboclaw_desired_position", self.pos_callback, 5) + self.create_subscription( + Float32, "/roboclaw_desired_position", self.pos_callback, 5 + ) self.create_timer(1.0 / self.enc_read_freq, self.encoder_timer) self.antenna_encoder_pub = self.create_publisher( Float32, "/roboclaw_actual_position", 10 @@ -58,7 +60,7 @@ def __init__(self): # Angle to Encoder Command def pos_callback(self, msg: Float32): - norm = (msg.data / math.pi * 2) + norm = msg.data / math.pi * 2 self.target_encoder = self.zero_offset + int(norm * self.counts_per_rev) diff --git a/src/Nav/gps/gps/antenna_pointing_node.py b/src/Nav/gps/gps/antenna_pointing_node.py index 7a09d221..e5733121 100644 --- a/src/Nav/gps/gps/antenna_pointing_node.py +++ b/src/Nav/gps/gps/antenna_pointing_node.py @@ -33,9 +33,7 @@ def __init__(self): self.create_subscription(NavSatFix, "/base_station/fix", self.base_cb, 2) self.create_subscription(NavSatFix, "/gps/fix", self.rover_cb, 2) - self.bearing_pub = self.create_publisher( - Float32, "/antenna/tracker_bearing", 10 - ) + self.bearing_pub = self.create_publisher(Float32, "/antenna/target_bearing", 10) self.timer = self.create_timer(1.0 / self.freq, self.update) From 4c0d17c9c2bcdb2da1fa6a2e9b0f58618923fe0a Mon Sep 17 00:00:00 2001 From: Landwich Date: Wed, 22 Jul 2026 21:17:23 +0000 Subject: [PATCH 3/6] antenna sends both the desired and actual encoder data --- src/Bringup/launch/antenna.launch.py | 30 +++++++++---------- .../ros_roboclaw/antenna_roboclaw_node.py | 6 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Bringup/launch/antenna.launch.py b/src/Bringup/launch/antenna.launch.py index cd5d9122..73af9fda 100644 --- a/src/Bringup/launch/antenna.launch.py +++ b/src/Bringup/launch/antenna.launch.py @@ -19,21 +19,21 @@ def generate_launch_description(): default_value="false", description="If true, load basestation config on startup", ), - launch_ros.actions.Node( - package="gps", - executable="gps_base_pub_node", - name="gps_base_pub_node", - parameters=[ - { - "Device": "/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00" - }, - {"Baudrate": 115200}, - {"Freq": 5.0}, # Publish rate (hz) - {"SvinMindur": 300}, # Survey in time (s) - {"SvinMinAccDur": 10_000}, # Survey in accuracy (mm) - {"QueueDepth": 10}, - ], - ), + # launch_ros.actions.Node( + # package="gps", + # executable="gps_base_pub_node", + # name="gps_base_pub_node", + # parameters=[ + # { + # "Device": "/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00" + # }, + # {"Baudrate": 115200}, + # {"Freq": 5.0}, # Publish rate (hz) + # {"SvinMindur": 300}, # Survey in time (s) + # {"SvinMinAccDur": 10_000}, # Survey in accuracy (mm) + # {"QueueDepth": 10}, + # ], + # ), launch_ros.actions.Node( package="gps", executable="antenna_pointing_node", diff --git a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py index 73b9d460..3e26116c 100644 --- a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py +++ b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py @@ -87,9 +87,9 @@ def encoder_timer(self): return self.current_encoder = enc - - antenna_radians = (enc / counts_per_rev) * (math.pi * 2) - antenna_encoder_pub.publish(enc) + antenna_radians = Float32() + antenna_radians.data = float(enc / self.counts_per_rev) * (math.pi * 2) + self.antenna_encoder_pub.publish(antenna_radians) # Position Control def drive_to_position(self, target): From fe47a8bb776f556fdf50c35b712fd6224bdb8756 Mon Sep 17 00:00:00 2001 From: Will Richards <156349813+Landwhich@users.noreply.github.com> Date: Fri, 24 Jul 2026 22:26:28 -0400 Subject: [PATCH 4/6] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/Bringup/launch/antenna.launch.py | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Bringup/launch/antenna.launch.py b/src/Bringup/launch/antenna.launch.py index 73af9fda..ca7811cb 100644 --- a/src/Bringup/launch/antenna.launch.py +++ b/src/Bringup/launch/antenna.launch.py @@ -19,21 +19,21 @@ def generate_launch_description(): default_value="false", description="If true, load basestation config on startup", ), - # launch_ros.actions.Node( - # package="gps", - # executable="gps_base_pub_node", - # name="gps_base_pub_node", - # parameters=[ - # { - # "Device": "/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00" - # }, - # {"Baudrate": 115200}, - # {"Freq": 5.0}, # Publish rate (hz) - # {"SvinMindur": 300}, # Survey in time (s) - # {"SvinMinAccDur": 10_000}, # Survey in accuracy (mm) - # {"QueueDepth": 10}, - # ], - # ), + launch_ros.actions.Node( + package="gps", + executable="gps_base_pub_node", + name="gps_base_pub_node", + parameters=[ + { + "Device": "/dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_GNSS_receiver-if00" + }, + {"Baudrate": 115200}, + {"Freq": 5.0}, # Publish rate (hz) + {"SvinMinDur": 300}, # Survey-in minimum duration (s) + {"SvinAccLimit": 10_000}, # Survey-in accuracy limit (mm) + {"QueueDepth": 10}, + ], + ), launch_ros.actions.Node( package="gps", executable="antenna_pointing_node", From 8c4e2e657c4b127127365bf5c1ae2d589b8418a1 Mon Sep 17 00:00:00 2001 From: Will Richards <156349813+Landwhich@users.noreply.github.com> Date: Fri, 24 Jul 2026 22:28:00 -0400 Subject: [PATCH 5/6] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py index 3e26116c..e5413360 100644 --- a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py +++ b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py @@ -87,8 +87,9 @@ def encoder_timer(self): return self.current_encoder = enc + enc_rel = (enc - self.zero_offset) % self.counts_per_rev antenna_radians = Float32() - antenna_radians.data = float(enc / self.counts_per_rev) * (math.pi * 2) + antenna_radians.data = (float(enc_rel) / self.counts_per_rev) * (math.pi * 2) self.antenna_encoder_pub.publish(antenna_radians) # Position Control From 46b3df9a106db793f61a06dbe74a5d57086ce168 Mon Sep 17 00:00:00 2001 From: Will Richards <156349813+Landwhich@users.noreply.github.com> Date: Fri, 24 Jul 2026 22:28:27 -0400 Subject: [PATCH 6/6] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py index e5413360..401e0511 100644 --- a/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py +++ b/src/HW-Devices/ros_roboclaw/ros_roboclaw/antenna_roboclaw_node.py @@ -60,7 +60,7 @@ def __init__(self): # Angle to Encoder Command def pos_callback(self, msg: Float32): - norm = msg.data / math.pi * 2 + norm = (float(msg.data) % (math.pi * 2)) / (math.pi * 2) self.target_encoder = self.zero_offset + int(norm * self.counts_per_rev)