-
Notifications
You must be signed in to change notification settings - Fork 2
System Architecture
The demo system is composed of 4 Lamppost Node and 1 Auto-car node.
1.1: Each lamppost node contains:
- 1 x Host Machine (5512)
- 1 x Raspberry PI (equipped with 2 x ZigBee CC2520 communication module)
- 2 x Camera (accessible via RTSP video stream)
The detailed configuration is shown in the following figure:

1.2: The auto-car node contains:
- 1 x Raspberry PI (equipped with 2 x ZigBee CC2520 communication module)
- 1 x Laptop / Computer (use for route planning and movement control, etc.)
The entire system consists of 3 sub-programs:
-
Lamppost Host Program (runs on the root node and slave node)
- Source files are placed under
<proj_root>/src/LPHostdirectory
- Source files are placed under
-
Lamppost Hook Program (runs on RaspberryPI of the root node)
- Source files are placed under
<proj_root>/src/LPHookdirectory
- Source files are placed under
-
Control Program (runs on the auto-car node)
- Ssource files are placed under
<proj_root>/src/Ctrldirectory
- Ssource files are placed under
The interactive behavior of each module is illustrated in the diagram below.
LHP is deployed onto all of the Lamppost Node. The primary functionalities of LHP is detecting the GPS coordinates of Road Blocks obtained from the video stream and sent the detected GPS coordinates to the root node (excluding the general-purpose subroutines, i.e., the subroutine to parse the command line arguments, configuration files and etc).
The Lamppost Host program initials with 3 child threads in slave node and 5 threads on root node (as root node need to communicate with hook node and interact with user input):
-
Thread to detect road blocks from video stream
- Related routine is implemented in
<proj_root>/src/LPHost/LamppostHostRBDetection.cc - GPS coordinates of road blocks are enqueued in
LamppostHostProg->RoadBlockCoordinatesafter the detection routine finished
- Related routine is implemented in
-
Thread to send coordinates of detect road blocks to the root node
- Related routine is implemented in
<proj_root>/src/LPHost/LamppostHostCommPanel.cc: LamppostHostSendThread()
- Related routine is implemented in
- Thread to receive control signals (receive thread of slave lampposts)
- Thread to receive obtained RBCoordinates from slave lampposts (receive thread of root lamppost)
- Thread to receive control messages from user input (on root lamppost)
-
Thread to send to obtained
RBCoordinatesto hook node (launch only on root lamppost)