Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

116 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aggregate Indoor Localisation

Experiments for the paper "Aggregate Indoor Localisation" submitted to COORDINATION 2026.

All commands below are assumed to be issued from the cloned git repository folder. For any issues, please contact Giorgio Audrito.

References

Setup

To clone the repo from Github use the command:

git clone git@github.com:fcpp-experiments/indoor-localisation.git

The next sections contain the setup instructions for the various supported OSs. Jump to the section dedicated to your system of choice and ignore the others.

Windows

Pre-requisites:

At this point, run "MSYS2 MinGW x64" from the start menu; a terminal will appear. Run the following commands:

pacman -Syu

After updating packages, the terminal will close. Open it again, and then type:

pacman -Sy --noconfirm --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-make git

The build system should now be available from the "MSYS2 MinGW x64" terminal.

Linux

Pre-requisites:

  • Xorg-dev package (X11)
  • G++ 9 (or higher)
  • CMake 3.18 (or higher)
  • Asymptote (for building the plots)

To install these packages in Ubuntu, type the following command:

sudo apt-get install xorg-dev g++ cmake asymptote

In Fedora, the xorg-dev package is not available. Instead, install the packages:

libX11-devel libXinerama-devel.x86_6 libXcursor-devel.x86_64 libXi-devel.x86_64 libXrandr-devel.x86_64 mesa-libGL-devel.x86_64

In Arch Linux, you can instead install the packages as follows:

sudo pacman -S xorg-server-devel gcc cmake
yay -S asymptote

MacOS

Pre-requisites:

  • Xcode Command Line Tools
  • CMake 3.18 (or higher)
  • Asymptote (for building the plots)

To install them, assuming you have the brew package manager, type the following commands:

xcode-select --install
brew install cmake asymptote

Docker container

Download Docker from https://www.docker.com, then you can download the Docker container from GitHub by typing the following command in a terminal:

docker pull ghcr.io/fcpp-experiments/indoor-localization:1.0.0

Alternatively, you can build the container yourself with the following command:

docker build -t ghcr.io/fcpp-experiments/indoor-localization:1.0.0 .

Once you have the Docker container locally available, move to the root of the repo directory for running the container.

In Linux you should enable access to xhost from docker (for GUI):

xhost +local:docker

and then type the following command to enter the container:

docker run -it --rm --volume $PWD:/indoor-localization \
--workdir /indoor-localization -e DISPLAY=:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix --entrypoint /bin/bash \
ghcr.io/fcpp-experiments/indoor-localization:1.0.0

In this way, in Linux you will be able to run both the batch and graphic versions of the system.

On Mac you can use the same command (possibly omitting the parameters related with X) but you will only be able to run the batch version of the system.

On Windows (MSYS2 shell) you should give a slightly different command to run the container:

MSYS2_ARG_CONV_EXCL='*' docker run -it --rm   -v "$(pwd -W):/indoor-localization"   -w /indoor-localization   --entrypoint /bin/bash   ghcr.io/fcpp-experiments/indoor-localization:1.0.0

to deal with path conversions between MSYS2 and the container. As on the Mac, you will only be able to run the batch version of the system.

Finally the following command exits the container:

exit

In order to properly link the executables in Docker, you may need to add the -pthread option (substitute -O for -O -pthread below).

Virtual Machines

If you use a VM with a graphical interface, refer to the section for the operating system installed on it.

Warning: the graphical simulations are based on OpenGL, and common Virtual Machine software (e.g., VirtualBox) has faulty support for OpenGL. If you rely on a virtual machine for graphical simulations, it might work provided that you select hardware virtualization (as opposed to software virtualization). However, it is recommended to use the native OS whenever possible.

Execution

You can reproduce the plots from the paper by typing the following command in a terminal:

./make.sh gui run -O batch

In order to execute the graphical simulation, type the following command instead:

./make.sh gui run -O graphic

On newer Mac M1 computers, the -O argument may induce compilation errors: in that case, use the -O3 argument instead. If you want to get profiling information, add a -DPROFILER option. If you want to specify the simulation parameters, type the following command:

./make.sh gui run -O graphic - <comm_radius> <variance> <speed> <algorithm>

The default value for comm_radius is 150m, the default value for variance is 20%, the default value for speed is 0m/s, and the default value for algorithm is mlcoop_real. Node colors will be tuned according to the error of the chosen algorithm.

Running the above commands, you should see output about building the executables then the graphical simulation should pop up while the console will show the most recent stdout and stderr outputs of the application, together with resource usage statistics (both on RAM and CPU). During the execution, log files will be generated in the output/ repository sub-folder. When launching a batch of multiple simulations (batch target), individual simulation results will be logged in the output/raw/ subdirectory, with the overall resume in the output/ directory.

Graphical User Interface

Executing a graphical simulation will open a window displaying the simulation scenario, initially still: you can start running the simulation by pressing P (current simulated time is displayed in the bottom-left corner). While the simulation is running, network statistics will be periodically printed in the console. You can interact with the simulation through the following keys:

  • Esc to end the simulation
  • P to stop/resume
  • O/I to speed-up/slow-down simulated time
  • L to show/hide connection links between nodes
  • G to show/hide the grid on the reference plane and node pins
  • M enables/disables the marker for selecting nodes
  • left-click on a selected node to open a window with node details
  • C resets the camera to the starting position
  • Q,W,E,A,S,D to move the simulation area along orthogonal axes
  • right-click+mouse drag to rotate the camera
  • mouse scroll for zooming in and out
  • left-shift added to the camera commands above for precision control
  • any other key will show/hide a legenda displaying this list

Hovering on a node will also display its UID in the top-left corner.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages