Test grf. Test web interface
Chittaranjan Srinivas Swaminathan authored
cb020217

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 and algorithmName.m.

  • The init.m file is responsible for setting up the map, and will accept params (struct) and return map (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 example smooth.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.