Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
fb7507b
Sonar data from pool test on 10/19 added to /onboard/src/sonar/sweep_…
AnthonZh Oct 24, 2025
b011ac8
Renamed sweep data
AnthonZh Oct 25, 2025
f512d5a
Added skeletons for fourier
AnthonZh Oct 30, 2025
3cf834e
Added fourier transform to sonar image processing
AnthonZh Oct 31, 2025
22c2a38
changed return of fourier transform to include the gradian space image
AnthonZh Nov 1, 2025
3a5bcbb
Changing Sonar Package
AnthonZh Nov 1, 2025
ac4556c
Sonar Denoising
AnthonZh Nov 4, 2025
63fe11a
Ready for 11/8 Pool Test program - added comments to indicate tempora…
AnthonZh Nov 7, 2025
c81bb3a
Fixed the Pool Test error with wrong variable name
AnthonZh Nov 12, 2025
1002a8f
Move methods from Sonar class which are more utility than interfacing…
AnthonZh Nov 12, 2025
14221b9
Ported over and began documenting code to find the regressions and di…
AnthonZh Nov 12, 2025
b7c0c3a
Update Sonar Object Detection
AnthonZh Nov 14, 2025
fe3e77f
Merge branch 'main' into sonar-processing
AnthonZh Nov 14, 2025
7539ce3
Fixed the program so that sonar request does not crash
duke-robotics-oogway Nov 14, 2025
69f7efa
Ported over normal and object detection code
AnthonZh Nov 20, 2025
fd11cea
Finished porting over get_xy_of_object_in_sweep
AnthonZh Nov 20, 2025
880da11
Ported one last method from sonar to sonar_utils (convert_to_ros_comp…
AnthonZh Nov 21, 2025
91f1742
Update sonar so that it runs on land, need to test for pool
duke-robotics-oogway Nov 21, 2025
f84beea
Transform poses & angles to account for cartesian forward being along…
AnthonZh Nov 22, 2025
dc619fd
Transform pose into posestamped
AnthonZh Nov 22, 2025
2628af0
Fixed sonar issues: the main issue was passing in ints to the pose in…
duke-robotics-oogway Dec 5, 2025
d589694
Clean up Sonar Imports and make sonar_image from int array be a uint8…
AnthonZh Dec 6, 2025
3a3c58a
Added scikit-image to dockerfile for sonar
duke-robotics-oogway Dec 6, 2025
5c1666c
Changed topic names to better reflect what is being published, make c…
duke-robotics-oogway Dec 6, 2025
b7a7e6a
Merge branch 'main' into sonar-processing
AnthonZh Dec 8, 2025
24545e7
Fix linting issues
AnthonZh Dec 8, 2025
e014c8e
Created a README for the sonar package
AnthonZh Jan 9, 2026
4aae791
Fixed Sonar pose estimation from 1/11 pool test
duke-robotics-oogway Jan 11, 2026
f5d083f
Added wall angle publisher
AnthonZh Jan 12, 2026
c33da01
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
duke-robotics-oogway Jan 14, 2026
cc3066d
Testing
pranavbijith1 Jan 15, 2026
d8a9cd5
Linting sonar.py, sonar_object_detection.py, and sonar_tasks.py
AnthonZh Jan 17, 2026
115f26e
Linting pt 2: sonar_tasks.py, sonar_utils.py, and sonar.py
AnthonZh Jan 17, 2026
bf22900
cv is broken so tried dead reckon prequal
duke-robotics-oogway Jan 18, 2026
ffd1462
Fixed sonar/wall/angle topic and make it publish relevant wall angle …
duke-robotics-oogway Jan 18, 2026
7086cc0
removed get_normal_angle task
pranavbijith1 Jan 23, 2026
62da56d
Re-added normal angle getter method
pranavbijith1 Jan 23, 2026
865c17c
Revert spillover from prequal branch
AnthonZh Jan 23, 2026
865c8d3
sonar tasks debuggers updated
pranavbijith1 Jan 23, 2026
b52d325
Fixed linting errors we determined to be real errors (a few linting e…
AnthonZh Jan 23, 2026
a88ac8a
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
AnthonZh Jan 23, 2026
0f6ac2e
Linting test
viethungle-vt1401 Jan 23, 2026
a5e367a
fixed the logger
pranavbijith1 Jan 23, 2026
5af7600
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
viethungle-vt1401 Jan 23, 2026
e9d2586
added an await for the future
pranavbijith1 Jan 24, 2026
53e06a5
converted normal_angle to degrees
pranavbijith1 Jan 24, 2026
271f916
Fixed sonar tasks using land testing, added more robust checks and re…
duke-robotics-oogway Jan 24, 2026
ebbf3b6
Removed semicolons on return statements
duke-robotics-oogway Jan 24, 2026
75a04a7
fixed f strings
pranavbijith1 Jan 24, 2026
510c17e
fixed f strings
pranavbijith1 Jan 24, 2026
0eca97a
fixed errors using linting
pranavbijith1 Jan 24, 2026
5f75667
Added wall angle onto SonarSweepRequest's response
AnthonZh Feb 7, 2026
a09cbc2
fixed linting issue in get_xy_of_object_in_sweep
AnthonZh Feb 7, 2026
d05bb60
Added new sonar task to align to a wall, need to check my geometry, t…
AnthonZh Feb 7, 2026
c0f80a1
Fixing rotate_to_normal
duke-robotics-oogway Feb 8, 2026
bec9f5b
Added cases for rotate_to_normal
AnthonZh Feb 8, 2026
1c44082
Made merges more likely
AnthonZh Feb 22, 2026
4cc8b78
Revert "Added cases for rotate_to_normal"
duke-robotics-oogway Feb 22, 2026
11071a6
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
duke-robotics-oogway Mar 1, 2026
f9888eb
Made merges even more likely
duke-robotics-oogway Mar 1, 2026
dfe60fa
move await to rotate_to_normal so we directly interface with the future
AnthonZh Mar 6, 2026
79bfa1f
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
AnthonZh Mar 6, 2026
520859d
Merge branch 'sonar-processing' of github.com:DukeRobotics/robosub-ro…
duke-robotics-oogway Mar 6, 2026
b06783d
Testing on Oogway + Fix DockerFile
duke-robotics-oogway Mar 6, 2026
1777f2a
Fixed Future awaited twice error, issue in task.py primarily
duke-robotics-oogway Mar 6, 2026
56c07b5
Cleaning up Sonar from pool test code
AnthonZh Mar 19, 2026
2682f3b
Fixed sonar
duke-robotics-oogway Mar 29, 2026
1a723af
Merge branch 'main' into sonar-processing
AnthonZh Apr 2, 2026
bdf794c
Linting to prepare for PR
AnthonZh Apr 2, 2026
7f1f3c6
Updated Readme to include types and removed floating point errors
AnthonZh Apr 5, 2026
2cd0da9
Made SonarSegmentation2 name more descriptive, reverted prequal chang…
AnthonZh Apr 5, 2026
a369011
Merge branch 'main' into sonar-processing
ChuChuCodes0414 Apr 15, 2026
9fe76b9
Apply suggestions from code review
AnthonZh Apr 16, 2026
4131b14
Follow suggestion on valueerror
AnthonZh Apr 16, 2026
fb0b572
Apply suggestions from code review
AnthonZh Apr 16, 2026
1d9039b
Fixed GlobalSonarSegmentation issue
AnthonZh Apr 16, 2026
a9cf416
Fix linting issues
AnthonZh Apr 16, 2026
a01dd87
Remove unnecessary code and packages
duke-robotics-oogway Apr 18, 2026
0ee2947
anthony changes
duke-robotics-oogway Apr 18, 2026
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
5 changes: 4 additions & 1 deletion core/src/custom_msgs/msg/SonarSweepResponse.msg
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,8 @@ geometry_msgs/Pose pose
# Normal angle
float64 normal_angle

# Angle of wall
float64 angle_of_wall

# Object is there
bool is_object
bool is_object
1 change: 1 addition & 0 deletions core/src/custom_msgs/srv/SonarSweepRequest.srv
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ bool is_object

geometry_msgs/PoseStamped pose
float64 normal_angle
float64 angle_of_wall
39 changes: 39 additions & 0 deletions onboard/src/sonar/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Sonar

The sonar package listens from sonar ping data from the Blue Robotics Ping360. We then run a denoising pipeline which primarily utilizes 2D FFTs to allow for object detection within the scan. The package publishes sonar scans as they are run.

## Structure
The following are the folders and files in the sonar package:
`config`: Robot-specific config files for the sonar package.
`launch`: Contains the launch files for the Sonar package.
`resource`: Empty ROS2 resource directory.
`sonar`:
- `decode_ping_python_360.py`: Directly interfaces with the Ping360 to decode messages.
- `sonar_image_processing.py`: Contains utility methods to process Sonar images.
- `sonar_object_detection.py`: Contains pipeline for sonar denoising and object detection.
- `sonar_utils.py`: Contains utility sonar methods for sonar calculations.
- `sonar_test_client`: Creates client node to send sonar sweep requests.
- `sonar.py`: Contains logic to initialize and run the sonar node.
`sweep_data`: Sample raw sonar scan data.

## Config
The `config` directory contains robot-specific `.yaml` files. The format is as follows:
```yaml
Comment thread
AnthonZh marked this conversation as resolved.
ftdi: <string> FTDI device serial number of the USB-to-serial adapter used by the Ping360
center_gradians: <float> Referencing heading for center direction of the sonar
increase_ccw: <bool> Whether angle values increases counterclockwise or not
```

## Topics

### Published
- `/sonar/image/raw`
- When the sonar pipeline runs, it publishes the raw sonar image to this topic
- Type: `sensor_msgs/CompressedImage`
- `/sonar/image/compressed`
- When the sonar pipeline runs, it publishes the denoised image to this topic
- Type: `sensor_msgs/CompressedImage`
- `/sonar/wall/angle`
- When the sonar pipeline runs, it publishes the relative angle of a wall (if found) to the robot
- When it faces directly at a wall: 0 radians, if it is parallel with the wall on the right side: pi/2 radians, if it is parallel with the wall on the left side: -pi/2 radians.
- Type: `std_msgs/msg/Float32`
Loading
Loading