RIS IPW: Temperature, humidity and particle density mapping {#mainpage}
Participants: Anders Wikström, Chittaranjan Swaminathan, Tom Olsson, Weiwei Feng
This repository contains code, scripts and data used in our integrated project work. The goal of the project is to create an online-viewable map of temperature, humidity and particle density, using a combination of stationary and mobile sensors.
The scripts
folder contains Python scripts used to collect data for offline testing of the model. The goal of the project is to create an online map, however.
There is a doxygen repository here with documentation for the project.
Programming Interfaces, C++
The project will use two main interfaces to allow testing of different mapping algorithms.
The first interface is SensorNode
, which will contain all implementation of the reading and position and all state needed to use this.
The second interface is THDMapper
, which encapsulates a mapping algorithm. The mapping algorithm implementation will receive a position and a set of sensor readings, and output some map structure.
Octave interface
The mapping algorithms are implemented using Octave IPC to the heavy lifting. This puts some limitations on the capabilities of the Octave language available. In particular, changes to calling conventions are very difficult, and state is limited. This is because there is a large amount of work translating between Matlab data structures and C++ data-structures. Therefore, these calling conventions are enforced:
-
There will be only two access points,
init.m
andalgorithmName.m
. -
The
init.m
file is responsible for setting up the map, and will acceptparams
(struct) and returnmap
(matrix{n,m}) , i.e.function [map, ...] = init(params) % all code goes here end
- Optionally, more arguments may be returned, and will need handling by the calling class.
-
The
algorithmName.m
is for examplesmooth.m
. This file is responsible for updating the map given a reading. Note that each sensor will generate one call, i.e., there will be there separate calls if all there sensors update at the same time. This function signature shall be:function [map, ...] = algorithmName(map, reading, position, params, extra_map = [], extra_map2 = []) % all code goes here end
-
NOTE: There is no GUARANTEED state maintained inside Octave. The only CERTAIN state available in Octave MUST be passed using the IPC.