The goal of our project was to design and implement an intelligent path lighting system that could be used in multiple domains. The system would be implemented on a wireless network of ProSpeckz boards which could control the lighting by sensing the environment. A second component of the system involves automatic video recording and creation. This would in effect be an intelligent CCTV system which tracks users' movements through the system and outputs a video of their journeys. The state of the system should be monitorable via a graphical user interface connected to a central node.
Public Safety & Energy Efficiency
Recent events around Edinburgh have highlighted the need for heightened public safety. A lighting system is part of the solution, but to have such a system on at all times is uneconomical, and causes light pollution. Using the GPS and communication capabilities of the ProSpeckz boards, our system can dynamically turn lights on and off when required.
Using a central node and a network of boards attached to points of interest, our system allows for automated event logging. For example, at an amateur go-kart race, the participants may wish to be able to record and replay their positions during the event. By placing a ProSpeckz board on each go-kart, and having a hub PC set-up by the side of the track, the system will automatically log the GPS coordinates of each kart. If the race is taking place as it gets dark, the automatic lighting system could help with track visibility.
A ProSpeckz board
- Use GPS sensors to track movement
- Predict the next location of a person
- Use the prediction to turn on/off the appropriate lights
- Relay information through the network of ProSpeckz via radio
- Remote control of the system via a GUI
- Record and compile textual and video logs of movement
- Output a video of a user's path through the system
- Have a lighting system that works outdoors
- Having a highly usable interface
- Reliability of packet delivery
- Low energy consumption
- Adaptability to the applications mentioned above
- High quality automated video editing
- Real time
- Coherent software architecture for easy maintainability and extensibility
Early in the design process, we divided the system into separate components that were developed independently. We used this as a basis for dividing responsibilities among the team. The subsystems were GPS, networking, lighting, video editing, OS, path prediction, and GUI. Details of the implementations of each of these components can be found in the individual reports.
The diagram below shows the high level interactions between the various components of the system.
Embedded software on the nodes (written in C)
The Java side of the project, the user interface, path predictor, logger and video editor, is architected as a series of loosely coupled modules. The modules interact via a set of common events. These are immutable plain-old-java-objects.
|EventLightChanged||Fired when a light has changed its brightness.|
|EventNodeAdded||Fired when a node has joined the network.|
|EventNodeGps||Fired when a new GPS reading has been received from a node.|
|EventNodeMagnetometer||Fired when a new magnetometer reading has been received from a node.|
|EventNodePredictGps||Fired when the predictor has updated its predictions.|
|EventTriggerShutdown||Fired when a full shutdown of the program has been requested.|
We used modern development tools and techniques to manage the project. GitHub served as our source code repository, whilst a Google Groups mailing list allowed us to maintain regular contact.
After finalising the initial design, we have divided ourselves into approximate groups. Each group was assigned a section based on the skill set of its members, which it worked on independantly. To ease integration, we held regular meetings with the whole team and organised extra meetings as required.