wifi-based-landmark-estimation

Research project files concerning non-stationary landmark localization

https://github.com/alexsloot00/wifi-based-landmark-estimation

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.4%) to scientific vocabulary

Keywords

experiments landmark-localization robotics simulation-framework
Last synced: 4 months ago · JSON representation ·

Repository

Research project files concerning non-stationary landmark localization

Basic Info
  • Host: GitHub
  • Owner: alexsloot00
  • License: apache-2.0
  • Language: C
  • Default Branch: main
  • Homepage:
  • Size: 12.5 MB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • Open Issues: 2
  • Releases: 2
Topics
experiments landmark-localization robotics simulation-framework
Created almost 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

WiFi based landmark estimation

A quick primer on WiFI based landmark estimation shows two possible approaches exist: using range or bearing information. For both approaches this repository contains one option in simulation (MatLab and Gazebo), and real-world control based on a Nexus 4WD Mecanum wheel robot.

Content

The novel range-only estimation technique is under development by the DTPA Lab in Groningen. A simulation framework is provided in Matlab. This repository also allows testing the range-only estimation approach in simulation. Here Gazebo is used in combination with Python and ROS.

The WSR toolbox created by Hardvard-REACT Lab contains an estimation technique based on bearing information using only one WiFi antenna per device. This repository adds to this work in the form of a Matlab version. This is a simulated environment capable of generating and finding the position of a transmitter using the WSR toolbox principles. Furthermore, a simulated environment created using python with ROS can be used to test both approaches in the real-world using the Nexus 4WD Mecanum wheel robot. It was found CSI can not be used to obtain the distance between the receiver and transmitter reliably, therefore, the range-only landmark localization does not yet work operationally in the real world, it currently uses the true andmark position which should be unknown.

Lastly, the CSI data and figures obtained from simulations and real-world experiments are provided. The corresponding background information and results can be found in this paper.

Requirements

A linux based system is needed. All files in the repository were written and tested using Ubuntu 20.04.5 LTS. This affects - the Matlab files for the WSR approach, because of the extension to code written in C - the visualization of the C++ WSR toolbox - the real-world robot control due to the use of ROS - the real-world collection of CSI data using the Linux kernel

Matlab

The files concerning the range-only approach include several different trajectories, e.g. straight, curved and movement orthogonal to the estimated landmark position. The type of movement is specified at the top of the file. The gain (>0) can be chosen by the user, however, if the gain does not satisfy the constraints the estimated landmark will not converge to the true position. To simulate the WSR toolbox method, run the file main.m. Here, a predefined movement trajectory can be used or a trajectory can be created in the form of a list of [x; y; z] coordinates. Additionally, a JSON file containing CSI data can be used if the data corresponding to the movement is also obtained from the same experiment. If no CSI data is provided, the code will choose to use emulated CSI data using the formula from the WSR toolbox paper. If CSI data is chosen the code will show compariosns between the given CSI data and the emulated data. Next to the CSI data and trajectory, the user can choose to creat a simple (2D computed) profile or create a 3D profile by setting the variable simple to 1 or 0, respectively. If no CSI data is given, using the 3D profile is recommended for better accuracy, the elevation angle can simply be ignored. Lastly, the resolution of the profile (default 360x180) can be set by changing the resolution of the gammaList and betaList. However, this method is computationally expensive, so beware.

Python

Installation

This repository containts all the python files from this repository, which has been used to directly commit to GitHub. Installation of this separate repository using the README.md ensures a correct installation of the python, ROS and catkin workspace.

Running the code

To control either the real-world or run a Gazebo simulation, the following script and associated inputs (flags) can be used. If no inputs are provided the default value will be used. For movement, options include forward, backward, right, left, and circle. None of the inputs need to be invoked with "", the code will handle this. Additionally, when using the distance-only estimator, the chosen trajectory will be dynamically optimized based on the current position, instead of using the inputted movement. FLAGS: simulation: bool | default = True | simulate or control a real-world Nexus 4WD estimator: str | default = WSR | choose distance-only (DO) or WSR estimator name: str | default = "nexus_car" | the name of the robot as seen in Gazebo port: str | default = "/dev/ttyUSB0" | USB port connected to the real-world Nexus 4WD velmag: float | default = 0.1 | magnitude of the velocity in meters/second timestep: float | default = 0.05 | the time step between consecutive loop iterations move: str | default = "circle" | movement of the robot, distance based on velmag runtime: float | default = 10.0 | the time of runnning the program in seconds Option 1: directly invoking python from the scripts directory cd ~/catkin_ws/src/nexus_controller/ python3 main.py python3 main.py -simulation True -name nexus_car -port /dev/ttyUSB0 -velmag 0.1 -timestep 0.05 -move circle -runtime 10.0 Option 2: using rosrun rosrun nexus_controller main.py rosrun nexus_controller main.py -simulation True -name nexus_car -port /dev/ttyUSB0 -velmag 0.1 -timestep 0.05 -move circle -runtime 10.0

WSR

The modified WSR C++ toolbox contains the installation guide and how to use the WSR toolbox.

Nexus 4WD robot

As mentioned, the robot used is the Nexus 4 wheel drive Mecanum wheel robot. This robot can move omnidirectional and consists of a base with 12V DC motors controlled by an with the base included Arduino 328 controller. Mounted on the base of the robot is a UP squared board powered by a XP power board, which in turn is connected to a battery. The UP squared board is connected to an external SSD hard drive for booting Ubuntu (full) Desktop 18.04.0 and extra storage. An Intel 5300 NIC is connected to the UP squared board and screwed on using an extension from half size to full size. Lastly, the antenna is attached to the WiFi card.

For simulation, the same robot is used. The model files for the robot as well as the movement, based on forces acting on the base of the robot, were modified from this repository.

Owner

  • Login: alexsloot00
  • Kind: user

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: WiFi based landmark estimation
message: >-
  Repository concerning my experimental and simulation study
  of a WiFi-based localization framework
type: software
authors:
  - given-names: Alex
    family-names: Sloot
    email: a.h.sloot@student.rug.nl
    affiliation: University of Groningen
repository-code: >-
  https://github.com/alexsloot00/WiFi-based-landmark-estimation
url: >-
  https://github.com/alexsloot00/WiFi-based-landmark-estimation
abstract: >-
  A quick primer on WiFI based landmark estimation shows two
  possible approaches exist: using range or bearing
  information. For both approaches this repository contains
  one option in simulation (MatLab and Gazebo), and
  real-world control based on a Nexus 4WD Mecanum wheel
  robot.
keywords:
  - Landmark
  - Localization
  - Simulation
  - Robotics
license: Apache-2.0
date-released: '2023-04-25'

GitHub Events

Total
Last Year

Committers

Last synced: almost 2 years ago

All Time
  • Total Commits: 103
  • Total Committers: 1
  • Avg Commits per committer: 103.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 103
  • Committers: 1
  • Avg Commits per committer: 103.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
alexsloot00 1****0 103

Issues and Pull Requests

Last synced: almost 2 years ago

All Time
  • Total issues: 2
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: less than a minute
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: less than a minute
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • alexsloot00 (2)
Pull Request Authors
  • alexsloot00 (1)
Top Labels
Issue Labels
warning (1)
Pull Request Labels