Software Development
In addition to the embedded software design, the sensRAI team also has general software experience in a range of languages, frameworks and software development tools:
Languages
- Standard embedded languages such as C and C++ are commonly used by the team, however other variants such as C# and Objective-C have been used on previous projects.
- For general purpose portable code Java and its derivatives such as Scala and Groovy have been used specifically for projects deployed across the Internet.
- For light-weight IoT projects the team has worked extensively with Javascript, using the Node-JS server environment with Express.js deployed on the client.
- In addition to the machine learning and DSP usage, Python with Numpy and Pandas has also been used by the team for data-processing applications where data collected from remote clients is collected and processed prior to further down-stream processing using e.q. mySQL.
- Finally, for network based solutions, the sensRAI team has used the Apache Hadoop framework with Apache Kafka and Apache Spark used to handle the streaming data interface as part of a machine-learning predictive maintenance application.
UX
- Experience in designing applications for a range of client deployments including Windows/Linux Desktop App and GUI as well as portable solutions for Android and IoS.
IOT
The team has also developed solutions for a range of IoT protocols:
- MQTT is a simple protocol that sits above UDP to provide a low complexity and low latency IoT solution and is scalable to many thousands of remote nodes. Previous projects have used MQTT to interface remote RF sensors to a system controller and display. Another project used MQTT to interface remote utility infrastructure elements to a cloud based broker to allow full data capture and fault prediction.
- An alternative to MQTT and which provides a more robust transmission platform is LWM2M which sits on-top of CoAP (a low latency alternative to TCP) to provide a data interface between remote nodes and a central cloud server (or bank of servers using Hadoop). The specific project interfaced lab-based data collection instruments to a cloud-based broker. The user accessed the distributed lab-based network via a PC, laptop or tablet to both control experiments as well as view the collected data stored with the broker.
Toolchain and Control
The SensRAI team has experience with and uses a range of tool chain control and software management applications such as Bitbucket or Github for source control, Jenkins for build management, Jira for managing scrums and projects and Confluence for distributed design and development.