diff --git a/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-.zip b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-.zip index 08a8aad..a0e542e 100644 Binary files a/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-.zip and b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-.zip differ diff --git a/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-NPTH.drl b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-NPTH.drl new file mode 100644 index 0000000..8c8e6a2 --- /dev/null +++ b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-NPTH.drl @@ -0,0 +1,13 @@ +M48 +; DRILL file {KiCad 5.1.5+dfsg1-2build2} date Tue 25 Mar 2025 08:21:24 PM CDT +; FORMAT={-:-/ absolute / inch / decimal} +; #@! TF.CreationDate,2025-03-25T20:21:24-05:00 +; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.5+dfsg1-2build2 +; #@! TF.FileFunction,NonPlated,1,2,NPTH +FMAT,2 +INCH +% +G90 +G05 +T0 +M30 diff --git a/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-PTH.drl b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-PTH.drl new file mode 100644 index 0000000..d594f6e --- /dev/null +++ b/doc/Boards/ConnectBoard/elec/ConnectBoard/pcb/gerber/ConnectBoard-PTH.drl @@ -0,0 +1,201 @@ +M48 +; DRILL file {KiCad 5.1.5+dfsg1-2build2} date Tue 25 Mar 2025 08:21:24 PM CDT +; FORMAT={-:-/ absolute / inch / decimal} +; #@! TF.CreationDate,2025-03-25T20:21:24-05:00 +; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.5+dfsg1-2build2 +; #@! TF.FileFunction,Plated,1,2,PTH +FMAT,2 +INCH +T1C0.0157 +T2C0.0315 +T3C0.0394 +% +G90 +G05 +T1 +X6.101Y-4.981 +T2 +X5.4601Y-4.6001 +X5.4601Y-4.7001 +X5.4601Y-4.8001 +X5.4601Y-4.9001 +X5.7601Y-4.6001 +X5.7601Y-4.7001 +X5.7601Y-4.8001 +X5.7601Y-4.9001 +X5.4601Y-3.1301 +X5.4601Y-3.2301 +X5.4601Y-3.3301 +X5.4601Y-3.4301 +X5.7601Y-3.1301 +X5.7601Y-3.2301 +X5.7601Y-3.3301 +X5.7601Y-3.4301 +X5.4686Y-2.493 +X5.4686Y-2.593 +X5.4686Y-2.693 +X5.4686Y-2.793 +X5.7686Y-2.493 +X5.7686Y-2.593 +X5.7686Y-2.693 +X5.7686Y-2.793 +X5.4601Y-4.2001 +X5.4601Y-4.3001 +X5.4601Y-4.4001 +X5.4601Y-4.5001 +X5.7601Y-4.2001 +X5.7601Y-4.3001 +X5.7601Y-4.4001 +X5.7601Y-4.5001 +X5.4686Y-2.0901 +X5.4686Y-2.1901 +X5.4686Y-2.2901 +X5.4686Y-2.3901 +X5.7686Y-2.0901 +X5.7686Y-2.1901 +X5.7686Y-2.2901 +X5.7686Y-2.3901 +X5.4601Y-3.5301 +X5.4601Y-3.6301 +X5.4601Y-3.7301 +X5.4601Y-3.8301 +X5.7601Y-3.5301 +X5.7601Y-3.6301 +X5.7601Y-3.7301 +X5.7601Y-3.8301 +T3 +X5.9401Y-3.8301 +X6.0401Y-3.8301 +X6.1401Y-3.8301 +X5.9401Y-4.8001 +X6.0401Y-4.8001 +X6.1401Y-4.8001 +X5.9401Y-4.5001 +X6.0401Y-4.5001 +X6.1401Y-4.5001 +X5.1191Y-4.2751 +X5.1191Y-4.3751 +X5.1191Y-4.4751 +X5.1191Y-4.5751 +X5.1191Y-4.6751 +X5.1191Y-4.7751 +X5.2191Y-4.2751 +X5.2191Y-4.3751 +X5.2191Y-4.4751 +X5.2191Y-4.5751 +X5.2191Y-4.6751 +X5.2191Y-4.7751 +X5.9401Y-4.4001 +X6.0401Y-4.4001 +X6.1401Y-4.4001 +X5.9386Y-2.693 +X6.0386Y-2.693 +X6.1386Y-2.693 +X5.1191Y-3.1751 +X5.1191Y-3.2751 +X5.1191Y-3.3751 +X5.1191Y-3.4751 +X5.1191Y-3.5751 +X5.1191Y-3.6751 +X5.2191Y-3.1751 +X5.2191Y-3.2751 +X5.2191Y-3.3751 +X5.2191Y-3.4751 +X5.2191Y-3.5751 +X5.2191Y-3.6751 +X5.9401Y-3.7301 +X6.0401Y-3.7301 +X6.1401Y-3.7301 +X5.9386Y-2.393 +X6.0386Y-2.393 +X6.1386Y-2.393 +X5.9386Y-2.293 +X6.0386Y-2.293 +X6.1386Y-2.293 +X5.9401Y-4.0001 +X6.0401Y-4.0001 +X6.1401Y-4.0001 +X5.9386Y-2.593 +X6.0386Y-2.593 +X6.1386Y-2.593 +X4.219Y-2.075 +X4.219Y-2.175 +X4.219Y-2.275 +X4.219Y-2.375 +X4.219Y-2.475 +X4.219Y-2.575 +X4.319Y-2.075 +X4.319Y-2.175 +X4.319Y-2.275 +X4.319Y-2.375 +X4.319Y-2.475 +X4.319Y-2.575 +X5.9386Y-2.793 +X6.0386Y-2.793 +X6.1386Y-2.793 +X3.951Y-2.171 +X3.951Y-2.271 +X3.951Y-2.371 +X3.951Y-2.471 +X5.9386Y-2.193 +X6.0386Y-2.193 +X6.1386Y-2.193 +X5.9386Y-2.493 +X6.0386Y-2.493 +X6.1386Y-2.493 +X5.9401Y-3.3301 +X6.0401Y-3.3301 +X6.1401Y-3.3301 +X5.9401Y-3.2301 +X6.0401Y-3.2301 +X6.1401Y-3.2301 +X5.9401Y-4.2001 +X6.0401Y-4.2001 +X6.1401Y-4.2001 +X5.9386Y-2.9601 +X6.0386Y-2.9601 +X6.1386Y-2.9601 +X5.1191Y-2.0751 +X5.1191Y-2.1751 +X5.1191Y-2.2751 +X5.1191Y-2.3751 +X5.1191Y-2.4751 +X5.1191Y-2.5751 +X5.2191Y-2.0751 +X5.2191Y-2.1751 +X5.2191Y-2.2751 +X5.2191Y-2.3751 +X5.2191Y-2.4751 +X5.2191Y-2.5751 +X5.9401Y-4.9001 +X6.0401Y-4.9001 +X6.1401Y-4.9001 +X5.9401Y-4.6001 +X6.0401Y-4.6001 +X6.1401Y-4.6001 +X5.9401Y-4.3001 +X6.0401Y-4.3001 +X6.1401Y-4.3001 +X5.9401Y-3.5301 +X6.0401Y-3.5301 +X6.1401Y-3.5301 +X5.941Y-5.071 +X6.041Y-5.071 +X6.141Y-5.071 +X5.9401Y-4.7001 +X6.0401Y-4.7001 +X6.1401Y-4.7001 +X5.9401Y-3.4301 +X6.0401Y-3.4301 +X6.1401Y-3.4301 +X5.9401Y-3.6301 +X6.0401Y-3.6301 +X6.1401Y-3.6301 +X5.9401Y-3.1301 +X6.0401Y-3.1301 +X6.1401Y-3.1301 +X5.9386Y-2.093 +X6.0386Y-2.093 +X6.1386Y-2.093 +T0 +M30 diff --git a/doc/Nodes/SonarArrayNode/SonarArrayNode.md b/doc/Nodes/SonarArrayNode/SonarArrayNode.md index 5cc00fd..d81f166 100644 --- a/doc/Nodes/SonarArrayNode/SonarArrayNode.md +++ b/doc/Nodes/SonarArrayNode/SonarArrayNode.md @@ -46,4 +46,24 @@ Examples: ### Sequence Diagrams ![](../../../nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png) -![](../../../nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png) \ No newline at end of file +![](../../../nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png) + +## Diagnostics Strategy +| Status | Diagnostic Type | Message | Level | Description | +| --- | --- | --- | --- | --- | +| READY | COMMUNICATIONS | INITIALIZING | INFO | Set when Comms with Sonar Array are initializing. | +| READY | COMMUNICATIONS | INITIALIZING_ERROR | ERROR | Set when the Comms port to the Sonar Array can't be initialized. | +| READY | COMMUNICATIONS | DEVICE_NOT_AVAILABLE | ERROR | Set when Comm Port becomes unavailable. | +| READY | COMMUNICATIONS | NODATA | ERROR | Set when Comm Port never received data. | +| READY | COMMUNICATIONS | NOERROR | INFO | Set when no error is present. | +| READY | DATA_STORAGE | INITIALIZING | INFO | Set when Driver is initializing configuration. | +| READY | DATA_STORAGE | INITIALIZING_ERROR | ERROR | Set when Driver can't initialize configuration. | +| READY | DATA_STORAGE | NOERROR | INFO | Set when no error is found with Data Storage. | +| READY | SENSORS | INITIALIZING | INFO | Set when Sensors are Initializing. | +| READY | SENSORS | DROPPING_PACKETS | WARN | Set when Sensor Array is missing data. | +| READY | SENSORS | DEVICE_NOT_AVAILABLE | ERROR | Set when Sonar Array becomes unavailable. | +| READY | SENSORS | NODATA | ERROR | Set when no Sensor data has been received. | +| READY | SENSORS | NOERROR | INFO | Set when no error is present with Sensors. | +| READY | SYSTEM_RESOURCE | INITIALIZING | INFO | Set when Driver is initializing System Resource monitoring. | +| READY | SYSTEM_RESOURCE | INITIALIZING_ERROR | ERROR | Set when Driver can't initialize System Resource monitoring. | +| READY | SYSTEM_RESOURCE | NOERROR | INFO | Set when no error is present with System Resource monitoring. | \ No newline at end of file diff --git a/nodes/SonarArrayDriverNode/doc/SonarArrayDriverNodeSequenceDiagram.puml b/nodes/SonarArrayDriverNode/doc/SonarArrayDriverNodeSequenceDiagram.puml index 41c5a51..582fb8c 100644 --- a/nodes/SonarArrayDriverNode/doc/SonarArrayDriverNodeSequenceDiagram.puml +++ b/nodes/SonarArrayDriverNode/doc/SonarArrayDriverNodeSequenceDiagram.puml @@ -15,6 +15,8 @@ alt initialize node -> process: enable_diagnostics() node -> process++: finish_initialization() process -> driver++: init() + activate driver + driver --> process--: diagnostic[] process --> node-- node -> node: finish_initialization() node -> node: rescan_nodes() @@ -30,8 +32,8 @@ alt loops node -> node++: run_loop1 node -> process++: update(0.02, now) process -> driver++: update(0.02) - driver --> process--: diag - process --> node--: diag + driver --> process--: diagnostic[] + process --> node--: diagnostic[] node -> process++: get_sonar_data() process -> driver++: get_sonar_data() driver --> process--: sonar_data diff --git a/nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png b/nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png index f54ed91..50626ee 100644 Binary files a/nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png and b/nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png differ diff --git a/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverClassDiagram.puml b/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverClassDiagram.puml index 578df43..65f2f19 100644 --- a/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverClassDiagram.puml +++ b/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverClassDiagram.puml @@ -15,19 +15,19 @@ package sensor_msgs { } namespace sonar_array { interface ISonarArrayNodeDriver #LimeGreen { - +{abstract} bool init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) + +{abstract} Diagnostic[] init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) +{abstract} bool is_fully_initialized() +{abstract} bool set_comm_device(std::string comm_device, int speed) - +{abstract} Diagnostic update(double current_time_sec, double dt) + +{abstract} Diagnostic[] update(double current_time_sec, double dt) +{abstract} bool finish() +{abstract} string pretty(string mode) +{abstract} sensor_msgs::Range[] get_sonar_data() +{abstract} std::string pretty(sensor_msgs::Range[] sonar_data) } abstract BaseSonarArrayNodeDriver #LimeGreen { - +bool init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) + +Diagnostic[] init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) +bool is_fully_initialized() - +Diagnostic update(double current_time_sec, double dt) + +Diagnostic[] update(double current_time_sec, double dt) +string pretty(string mode) +sensor_msgs::Range[] get_sonar_data() +std::string pretty(sensor_msgs::Range[] sonar_data) @@ -37,9 +37,9 @@ namespace sonar_array { } ISonarArrayNodeDriver <|.. BaseSonarArrayNodeDriver class SonarArrayNodeDriver #LimeGreen { - +bool init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) - +bool set_comm_device(std::string comm_device, int speed) - +Diagnostic update(double current_time_sec, double dt) + +Diagnostic[] init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) + +Diagnostic[] set_comm_device(std::string comm_device, int speed) + +Diagnostic[] update(double current_time_sec, double dt) +string pretty(string mode) +bool finish() +int readFromSerialPort(char[] buffer, int size) @@ -48,9 +48,9 @@ namespace sonar_array { } BaseSonarArrayNodeDriver <|-- SonarArrayNodeDriver class MockSonarArrayNodeDriver #LimeGreen { - +bool init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) - +bool set_comm_device(std::string comm_device, int speed) - +Diagnostic update(double current_time_sec, double dt) + +Diagnostic[] init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) + +Diagnostic[] set_comm_device(std::string comm_device, int speed) + +Diagnostic[] update(double current_time_sec, double dt) +string pretty(string mode) +bool finish() } diff --git a/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverSequenceDiagram.puml b/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverSequenceDiagram.puml index 9585e2b..b808a53 100644 --- a/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverSequenceDiagram.puml +++ b/nodes/SonarArrayDriverNode/driver/doc/SonarArrayNodeDriverSequenceDiagram.puml @@ -11,26 +11,26 @@ activate user user -> interface++: init(Diagnostic diagnostic, Logger logger,sensor_msgs::Range[] sonars) interface -> driver++: init(Diagnostic diagnostic,Logger logger,sensor_msgs::Range[] sonars) driver -> base++: init(Diagnostic diagnostic, Logger, logger,sensor_msgs::Range[] sonars) -base --> driver--: status -driver --> interface--: status -interface --> user--: status +base --> driver--: diagnostic[] +driver --> interface--: diagnostic[] +interface --> user--: diagnostic[] user -> driver++: set_comm_device(string port_name, int baud_rate) driver -> driver: fully_initialized = true -driver --> user--: status +driver --> user--: diagnostic[] end alt update user -> interface++: update(double current_time, double dt) interface -> driver++: update(double current_time, double dt) driver -> base++: update(double current_time, doublt dt) -base --> driver--: diagnostic +base --> driver--: diagnostic[] driver -> driver: buffer = readFromSerialPort() driver -> parser++: parsePacket(buffer) parser --> driver--: packet driver -> driver: updateSonarData(packet) -driver --> interface--: diagnostic -interface --> user--: diagnostic +driver --> interface--: diagnostic[] +interface --> user--: diagnostic[] end @enduml \ No newline at end of file diff --git a/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png b/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png index fb78e60..bda4809 100644 Binary files a/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png and b/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png differ diff --git a/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png b/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png index 9a85374..2f41e48 100644 Binary files a/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png and b/nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png differ