Giter VIP home page Giter VIP logo

mmtrace's Introduction

mmTrace: Ray-Tracing based Millimeter Wave Propagation Simulation

Purpose

mmTrace is a deterministic image-based ray-tracing simulation framework for mm-wave propagation developed in MATLAB. It supports the design of mm-wave specific protocols and, in contrast to common statistical models, deals with multiple transceivers. The strengths of mmTrace constitute signal variations at different receivers and interference of multiple transmitters, which are crucial in certain situations. It generates channel impulse responses and determines signal characteristics in arbitray scenarios. Results are validated against the statistical channel models for IEEE 802.11ad. Our analyses indicate that image-based ray-tracing, as applied in mmTrace, is a feasible approach to predict interference in mm-wave communication systems.

Installation

Clone the repository and update the submodules. You might use the following statements:

$ git clone https://github.com/seemoo-lab/mmTrace.git
$ git submodule init
$ git submodule update

Libraries

The following libraries are required for mmTrace to work properly. They are automatically configured during the setup process.

  • Implementation of 60 GHz WLAN Channel Model (available at IEEE 802.11 TGAD)
  • matGeom: Matlab geometry toolbox for 2D/3D geometric computing

Setup

Execute the setup.m script in the main folder. It will download and setup the libraries and update your path environment.

>> setup

Usage

Check the example folder for examples on how to use mmTrace. All required operations are encapsulated in the ch_trace.m file. You can run it as follows:

>>	trace = ch_trace(tx_pos, rx_pos);
>>	trace = ch_trace(tx_pos, rx_pos, tx_az, rx_az);
>>	trace = ch_trace(tx_pos, rx_pos, tx_az, rx_az, 'OptParName', 'OptParValue', ...);

Available parameters are:

  • tx_pos: Position of transmitters
  • tx_az: Orientation of transmitters
  • rx_pos: Positions of receivers
  • rx_az: Orientation of receivers
  • room_dims: Dimension of rooms
  • permit_wall: Permittivity of walls
  • permit_ceiling: Permittivity of ceiling
  • ant_altitude: Altitude of antenna mounting
  • obstacles: Structure of obstacles
  • frequency: Carrier frequency of signals
  • max_refl: Maximum number of reflections to consider
  • refl_model: Function handle of reflection model
  • tx_sectors: Sectors at transmit antennas
  • rx_sectors: Sectors at receive antennas
  • suppress_los: Flag to suppress the line-of-sight
  • blur_clusters: Flag to blur the clusters
  • interpl_3d: Flag to interpolate to 3D and consider ceiling reflections
  • tx_radpat: Function handle of transmitter radiation pattern
  • rx_radpat: Function handle of receiver radiation pattern

Support

Our implementation is still under heavy development. Users are highly encouraged to report bugs and feature requests to the developers. Please do not hesitate to contact us in case of any questions.

Citing mmTrace

You are working on a scientific publication? Please consider citing our paper:

  • D. Steinmetzer, J. Classen, and M. Hollick, "mmTrace: Modeling Millimeter-wave Indoor Propagation with Image-based Ray-tracing", Millimeter-wave Networking Workshop (mmNet'16), April 2016, San Fransisco, USA.

If you are using mmTrace in your project, please inform us on what your project is about. We are highly interested in learning how our channel simulation approach is applied.

mmtrace's People

Contributors

dsteinmetzer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mmtrace's Issues

Implementation of 60 GHz WLAN Channel Model not found

Hi, I downloaded the doc file which describes a Matlab implementation by Roman Maslennikov and Artyom Lomayev from IEEE 802.11 TGAD but could not find the source code. The embedded link for source code in the doc seems to be not working. Thanks!

support for 3D room setting and ray-tracing and Tx/Rx position at the edge of the room

Hi, thank you for providing this ray-tracing framework. I have two questions:

  1. Does it support 3D room setting and 3D ray-tracing? If I look at the setRoom() function, it seems like the height of the room is not included. Is there an example or a more recent release that support 3D room setting and 3D ray-tracing? Also, how does the ceiling reflection work in the current release if the room is only 2D?

  2. The other issue that I ran into is that if I place the Tx and Rx on two opposite walls on the room, or, in any case with a reflections path with zero distance between the Tx/Rx and the wall, the software will return an error. What do you recommend to work around this issue?

Thank you very much for your time and help.

How to compute diffraction

For each Rx, there are some multipath components (MPC) or channel components. For each MPC, there is a diffraction due to presence of blocking objects (obstacle). I want to know how I can compute the diffraction by using fresnel equation in mm-Trace framework.

The equation needs the location of two ends of the MPC (line equation of each MPC). One end is Rx and the other end is either TX or a reflection point.

Is there a way to know last departure location (either TX or last reflection point before it gets to Rx) of an MPC?

Thanks.

Problem with running exampleTwoReceivers

Hello. When I finish installing mmtrace and run exampleTwoReceivers.m, I get the following error messages.

Error using .*
Matrix dimensions must agree.

Error in edgePosition (line 62)
pos = (dxp .* dxe + dyp .* dye) ./ (dxe .* dxe + dye .* dye);

Error in intersectEdges (line 99)
t1 = edgePosition(edge2(col, 1:2), edge1(col, :));

Error in intersectEdgeObject (line 28)
thisintersects = intersectEdges(edge(ne,:), edges);

Error in getPotentialMirrors (line 24)
myintersects = intersectEdgeObject(lines, objects);

Error in tracePathsRecursion (line 31)
[myMirrors, myMirrors_id] = getPotentialMirrors(myMirrors, corners, [mirrors, p2]);

Error in tracePathsRecursion (line 68)
paths_rec = tracePathsRecursion(p1, p_r, corners, new_mirrors, depth-1);

Error in tracePaths (line 13)
paths = tracePathsRecursion(p2, p1, corners, [], max_depth);

Error in ch_trace (line 114)
paths{p} = tracePaths(tx_pos, rx_pos, myobjects, cfg.max_refl);

Error in exampleTwoReceivers (line 18)
[trace, tr_ccomps] = ch_trace( tx_set, rx_set, [4.5, 3, 3], 'max_refl',4);

My OS is Windows 10.

How can I solve this problem?

Wonderful initiative and New issue

**### _Thank you guys, I am working on a new project of Outdoor Path loss prediction using Ray tracing. I have building shapefiles, Antenna files, Terrian files, Tx, and Rx location as an input.

I have a few questions:

  1. Can I use this algo by converting into C++/gpu using GPU coder
  2. Below are the errors while running exampleTwoReceiversWithObstacles.m_**

The logical indices contain a true value outside of the array bounds.

Error in intersectEdges (line 110)
resCol(col(t2 < -tol)) = NaN;

Error in intersectEdgeObject (line 28)
thisintersects = intersectEdges(edge(ne,:), edges);

Error in tracePathsRecursion (line 112)
intersects = intersectEdgeObject(mypaths, corners);

Error in tracePathsRecursion (line 68)
paths_rec = tracePathsRecursion(p1, p_r, corners, new_mirrors, depth-1);

Error in tracePathsRecursion (line 68)
paths_rec = tracePathsRecursion(p1, p_r, corners, new_mirrors, depth-1);

Error in tracePathsRecursion (line 68)
paths_rec = tracePathsRecursion(p1, p_r, corners, new_mirrors, depth-1);

Error in tracePaths (line 13)
paths = tracePathsRecursion(p2, p1, corners, [], max_depth);

Error in ch_trace (line 109)
paths{p} = tracePaths(tx_pos, rx_pos, myobjects, cfg.max_refl);

Error in exampleTwoReceiversWithObstacles (line 22)
[trace, tr_ccomps] = ch_trace( ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.