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
2 changes: 1 addition & 1 deletion Lexicon.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ _Summary_:Typically used in this project when referring to a ROS Node.

_Related Terms_:

_Example_: [Sonar Array Node](nodes/SonarArrayNode/)
_Example_: [Sonar Array Node](nodes/SonarArrayDriverNode/)

| References |
| --- |
Expand Down
7 changes: 3 additions & 4 deletions doc/Development/rviz.rviz
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ Panels:
- /Status1
- /Grid1
- /Range1
- /Range1/Status1
Splitter Ratio: 0.5
Tree Height: 719
- Class: rviz/Selection
Expand Down Expand Up @@ -60,7 +59,7 @@ Visualization Manager:
Color: 252; 233; 79
Enabled: true
Name: Range
Queue Size: 10
Queue Size: 20
Topic: /robot/sonar
Unreliable: false
Value: true
Expand Down Expand Up @@ -108,9 +107,9 @@ Visualization Manager:
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.6803983449935913
Pitch: -0.024601440876722336
Target Frame: <Fixed Frame>
Yaw: 1.220400333404541
Yaw: 1.1404004096984863
Saved: ~
Window Geometry:
Displays:
Expand Down
2 changes: 1 addition & 1 deletion doc/Nodes/Nodes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# Nodes
| Status | Node |
| --- | --- |
| STARTED | [Sonar Array Node](SonarArrayNode/SonarArrayNode.md) |
| STARTED | [Sonar Array Node](SonarArrayDriverNode/SonarArrayDriverNode.md) |
8 changes: 4 additions & 4 deletions doc/Nodes/SonarArrayNode/SonarArrayNode.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ Examples:
## Software Design
### Class Diagrams
![](../../output/Legend.png)
![](../../../nodes/SonarArrayNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png)
![](../../../nodes/SonarArrayNode/doc/output/SonarArrayNodeClassDiagram.png)
![](../../../nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverClassDiagram.png)
![](../../../nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeClassDiagram.png)

### Sequence Diagrams
![](../../../nodes/SonarArrayNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png)
![](../../../nodes/SonarArrayNode/doc/output/SonarArrayNodeSequenceDiagram.png)
![](../../../nodes/SonarArrayDriverNode/driver/doc/output/SonarArrayNodeDriverSequenceDiagram.png)
![](../../../nodes/SonarArrayDriverNode/doc/output/SonarArrayDriverNodeSequenceDiagram.png)
6 changes: 3 additions & 3 deletions doc/SonarArrayPackageDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
title Sonar Array Package Diagram

package sonar_array {
class SonarArrayNode #Yellow
class SonarArrayNodeDriver #Yellow
SonarArrayNode --> SonarArrayNodeDriver
class SonarArrayDriverNode <<ROS>> #Orange
class SonarArrayNodeDriver #Orange
SonarArrayDriverNode --> SonarArrayNodeDriver
}

@enduml
Binary file modified doc/output/SonarArrayPackageDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@startuml
title Sonar Array Node Class Diagram
title Sonar Array Driver Node Class Diagram
package ros {
class Publisher
}
Expand All @@ -11,7 +11,7 @@ package sensor_msgs {
class Range <<(M,#FFFF00)>>
}
package sonar_array {
class SonarArrayNode {
class SonarArrayDriverNode <<ROS>> #Orange {
+const std::string BASE_NODE_NAME
+const uint16_t MAJOR_RELEASE_VERSION
+const uint16_t MINOR_RELEASE_VERSION
Expand All @@ -20,7 +20,7 @@ package sonar_array {
+const eros::System::MainSystem DIAGNOSTIC_SYSTEM
+const eros::System::SubSystem DIAGNOSTIC_SUBSYSTEM
+const eros::System::Component DIAGNOSTIC_COMPONENT
+SonarArrayNodeProcess* get_process()
+SonarArrayDriverNodeProcess* get_process()
+bool start()
+eros::eros_diagnostic::Diagnostic finish_initialization()
+bool run_loop1()
Expand All @@ -37,22 +37,26 @@ package sonar_array {
+system_commandAction_Callback(const eros::system_commandGoalConstPtr& goal)
+command_Callback(const eros::command::ConstPtr& t_msg)

-SonarArrayNodeProcess* process;
-SonarArrayDriverNodeProcess* process;
}
class SonarArrayNodeProcess {
class SonarArrayDriverNodeProcess #Orange {
+eros::eros_diagnostic::Diagnostic finish_initialization()
+reset()
+eros::eros_diagnostic::Diagnostic update(double t_dt, double t_ros_time)
+std::vector<eros::eros_diagnostic::Diagnostic> new_commandmsg(eros::command msg)
+std::vector<eros::eros_diagnostic::Diagnostic> check_programvariables()
+cleanup()
-SonarArrayNodeDriver driver
-ISonarArrayNodeDriver driver

}
class ISonarArrayNodeDriver #LimeGreen
class SonarArrayNodeDriver #LimeGreen
BaseNode <|-- SonarArrayNode
BaseNodeProcess <|-- SonarArrayNodeProcess
SonarArrayNode -> SonarArrayNodeProcess
SonarArrayNodeProcess -> SonarArrayNodeDriver
class MockSonarArrayNodeDriver #LimeGreen
BaseNode <|-- SonarArrayDriverNode
BaseNodeProcess <|-- SonarArrayDriverNodeProcess
SonarArrayDriverNode -> SonarArrayDriverNodeProcess
SonarArrayDriverNodeProcess --> ISonarArrayNodeDriver
ISonarArrayNodeDriver <|-- SonarArrayNodeDriver
ISonarArrayNodeDriver <|-- MockSonarArrayNodeDriver
}
@enduml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
@startuml
title Sonar Array Node Sequence Diagram
title Sonar Array Driver Node Sequence Diagram
actor User as user
participant SonarArrayNode as node
participant SonarArrayNodeProcess as process
participant SonarArrayDriverNode as node
participant SonarArrayDriverNodeProcess as process
participant SonarArrayNodeDriver as driver
participant Logger as logger

alt initialize
activate node
node -> node++: start()
node -> node: initialize_diagnostic
node -> process++: SonarArrayNodeProcess()
node -> process++: SonarArrayDriverNodeProcess()
node -> node: preinitialize_basenode()
node -> process: enable_diagnostics()
node -> process++: finish_initialization()
Expand All @@ -28,6 +28,15 @@ end
alt loops
alt loop1
node -> node++: run_loop1
node -> process++: update(0.02, now)
process -> driver++: update(0.02)
driver --> process--: diag
process --> node--: diag
node -> process++: get_sonar_data()
process -> driver++: get_sonar_data()
driver --> process--: sonar_data
process --> node--: sonar_data
node --> user: sonardata_pub.publish(sonar_data)
node--
end
alt loop2
Expand Down Expand Up @@ -57,9 +66,7 @@ alt loops
node -> user: publish(latest_diagnostics)
end
alt run_10hz
node -> process++: update(0.1, now)
process -> driver++: update(0.1)
driver --> process--



alt if diag.level >= NOTICE
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ bool MockSonarArrayNodeDriver::init(eros::eros_diagnostic::Diagnostic _diagnosti
eros::eros_diagnostic::Diagnostic MockSonarArrayNodeDriver::update(double current_time_sec,
double dt) {
diagnostic = BaseSonarArrayNodeDriver::update(current_time_sec, dt);
for (std::size_t i = 0; i < sonars.size(); ++i) {
sonars.at(i).range = sonars.at(i).range += 0.001;
if (sonars.at(i).range > 2.0) {
sonars.at(i).range = 0.0;
}
}
return diagnostic;
}
std::string MockSonarArrayNodeDriver::pretty(std::string mode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,21 @@ TEST(BasicTest, TestDefinitions) {
}
TEST(BasicTest, TestOperation) {
Logger* logger = new Logger("DEBUG", "UnitTestMockSonarArrayNodeDriver");
MockSonarArrayNodeDriver SUT;
ISonarArrayNodeDriver* SUT = new MockSonarArrayNodeDriver();
eros::eros_diagnostic::Diagnostic diagnostic;
std::vector<sensor_msgs::Range> sonars;
SUT.init(diagnostic, logger, sonars);
sonars.resize(10);
SUT->init(diagnostic, logger, sonars);

double timeToRun = 10.0;
double dt = 0.1;
double timer = 0.0;
while (timer <= timeToRun) {
auto diagnostic = SUT.update(timer, dt);
auto diagnostic = SUT->update(timer, dt);
EXPECT_TRUE(diagnostic.level <= eros::Level::Type::NOTICE);
EXPECT_GT(SUT->get_sonar_data().size(), 0);

logger->log_debug(SUT.pretty());
// logger->log_debug(SUT.pretty());
timer += dt;
}

Expand Down
37 changes: 37 additions & 0 deletions nodes/SonarArrayDriverNode/launch/app_sonar_array.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<launch>
<arg name="enable_mock" default="False"/>
<arg name="robot_namespace" default="/"/>
<arg name="verbosity_level" default="NOTICE"/>
<node pkg="rviz" type="rviz" output="screen" name="rviz" args="-d $(find sonar_array)/doc/Development/rviz.rviz"/>
<node name="sonar_array_driver_node" pkg="sonar_array" type="sonar_array_driver_node" output="screen" clear_params="true">
<param name="enable_mock" value="$(arg enable_mock)"/>
<param name="robot_namespace" value="$(arg robot_namespace)"/>
<param name="startup_delay" value="0.0"/>
<param name="verbosity_level" value="$(arg verbosity_level)"/>
<param name="require_pps_to_start" value="false"/>
<param name="loop1_rate" value="50"/>
<param name="loop2_rate" value="10"/>
<param name="loop3_rate" value="5"/>
</node>
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar0_broadcaster" args="1 0 0 0 -0.2618 0 sonar_array sonar0" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar1_broadcaster" args="1 0 0 0.314 -0.2618 0 sonar_array sonar1" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar2_broadcaster" args="1 0 0 0.628 -0.2618 0 sonar_array sonar2" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar3_broadcaster" args="1 0 0 .942 -0.2618 0 sonar_array sonar3" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar4_broadcaster" args="1 0 0 1.256 -0.2618 0 sonar_array sonar4" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar5_broadcaster" args="1 0 0 1.57 -0.2618 0 sonar_array sonar5" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar6_broadcaster" args="1 0 0 1.884 -0.2618 0 sonar_array sonar6" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar7_broadcaster" args="1 0 0 2.199 -0.2618 0 sonar_array sonar7" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar8_broadcaster" args="1 0 0 2.513 -0.2618 0 sonar_array sonar8" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar9_broadcaster" args="1 0 0 2.827 -0.2618 0 sonar_array sonar9" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar10_broadcaster" args="1 0 0 3.141 -0.2618 0 sonar_array sonar10" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar11_broadcaster" args="1 0 0 3.455 -0.2618 0 sonar_array sonar11" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar12_broadcaster" args="1 0 0 3.769 -0.2618 0 sonar_array sonar12" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar13_broadcaster" args="1 0 0 4.084 -0.2618 0 sonar_array sonar13" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar14_broadcaster" args="1 0 0 4.398 -0.2618 0 sonar_array sonar14" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar15_broadcaster" args="1 0 0 4.712 -0.2618 0 sonar_array sonar15" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar16_broadcaster" args="1 0 0 5.026 -0.2618 0 sonar_array sonar16" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar17_broadcaster" args="1 0 0 5.34 -0.2618 0 sonar_array sonar17" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar18_broadcaster" args="1 0 0 5.654 -0.2618 0 sonar_array sonar18" />
<node pkg="tf2_ros" type="static_transform_publisher" name="sonar19_broadcaster" args="1 0 0 5.969 -0.2618 0 sonar_array sonar19" />
</launch>
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
<?xml version="1.0"?>
<launch>
<arg name="enable_mock" default="False"/>
<arg name="robot_namespace" default="/"/>
<arg name="verbosity_level" default="NOTICE"/>
<node name="sonar_array_node" pkg="sonar_array" type="sonar_array_node" output="screen" clear_params="true">
<arg name="verbosity_level" default="DEBUG"/>
<node name="sonar_array_driver_node" pkg="sonar_array" type="sonar_array_driver_node" output="screen" clear_params="true">
<param name="enable_mock" value="$(arg enable_mock)"/>
<param name="robot_namespace" value="$(arg robot_namespace)"/>
<param name="startup_delay" value="0.0"/>
<param name="verbosity_level" value="$(arg verbosity_level)"/>
<param name="require_pps_to_start" value="false"/>
<param name="loop1_rate" value="1"/>
<param name="loop1_rate" value="50"/>
<param name="loop2_rate" value="10"/>
<param name="loop3_rate" value="5"/>
</node>
Expand Down
8 changes: 8 additions & 0 deletions nodes/SonarArrayDriverNode/node/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
add_library(sonarArrayDriverNodeProcess SonarArrayDriverNodeProcess.cpp)
target_link_libraries(sonarArrayDriverNodeProcess ${catkin_LIBRARIES} baseNodeProcess sonarArrayNodeDriver mockSonarArrayNodeDriver)


add_executable(sonar_array_driver_node SonarArrayDriverNode.cpp)
target_link_libraries(sonar_array_driver_node ${catkin_LIBRARIES} ${Boost_LIBRARIES} sonarArrayDriverNodeProcess baseNode)
add_dependencies(sonar_array_driver_node ${eros_EXPORTED_TARGETS})
add_subdirectory(test)
Loading