GNU Radio Radar Toolbox
os_cfar_2d_vc.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2014 Communications Engineering Lab, KIT.
4 *
5 * This is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3, or (at your option)
8 * any later version.
9 *
10 * This software is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this software; see the file COPYING. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street,
18 * Boston, MA 02110-1301, USA.
19 */
20
21
22#ifndef INCLUDED_RADAR_OS_CFAR_2D_VC_H
23#define INCLUDED_RADAR_OS_CFAR_2D_VC_H
24
25#include <gnuradio/tagged_stream_block.h>
26#include <radar/api.h>
27
28namespace gr {
29namespace radar {
30
31/*!
32 * \brief This block estimates peaks of a given matrix. A matrix can be represented as a
33 * combination of vectors and tagged streams. Input has to be a matrix with linear scaled
34 * values (NOT logarithmic scaled!). Used algorithm is a 2D OS-CFAR algorithm. The
35 * algorithm uses around the cell under test (CUT) on each side samp_compare samples to
36 * estimate the noise floor. samp_protect is a protected are around the CUT which is not
37 * used for acquiring compare samples. Index 0 of a input vector refers to x axis
38 * properties and index 1 refers to y axis properties. The relative threshold is defined
39 * by the bin of the vector within the sorted samp_compare samples. A standard value is
40 * rel_threshold = 0.78. The value of this bin is multiplied by mult_threshold and
41 * compared with the CUT. If the magnitude square of the CUT is greater than the threshold
42 * the matrix item is accepted. Used identifiers (symbols) for data are 'axis_x', 'axis_y'
43 * and 'power'.
44 *
45 * \param vlen Input vector length
46 * \param samp_compare Compare samples (vector index refers to axis)
47 * \param samp_protect Protected samples (vector index refers to axis)
48 * \param rel_threshold Relative threshold
49 * \param mult_threshold Multiplier threshold
50 * \param len_key Packet length key for tagged stream
51 *
52 * \ingroup radar
53 *
54 */
55class RADAR_API os_cfar_2d_vc : virtual public gr::tagged_stream_block
56{
57public:
58 typedef std::shared_ptr<os_cfar_2d_vc> sptr;
59
60 /*!
61 * \brief Return a shared_ptr to a new instance of radar::os_cfar_2d_vc.
62 *
63 * To avoid accidental use of raw pointers, radar::os_cfar_2d_vc's
64 * constructor is in a private implementation
65 * class. radar::os_cfar_2d_vc::make is the public interface for
66 * creating new instances.
67 */
68 static sptr make(int vlen,
69 std::vector<int> samp_compare,
70 std::vector<int> samp_protect,
71 float rel_threshold,
72 float mult_threshold,
73 const std::string& len_key = "packet_len");
74 virtual void set_rel_threshold(float inp) = 0;
75 virtual void set_mult_threshold(float inp) = 0;
76 virtual void set_samp_compare(std::vector<int> inp) = 0;
77 virtual void set_samp_protect(std::vector<int> inp) = 0;
78};
79
80} // namespace radar
81} // namespace gr
82
83#endif /* INCLUDED_RADAR_OS_CFAR_2D_VC_H */
#define RADAR_API
Definition api.h:31
This block estimates peaks of a given matrix. A matrix can be represented as a combination of vectors...
Definition os_cfar_2d_vc.h:56
virtual void set_samp_compare(std::vector< int > inp)=0
static sptr make(int vlen, std::vector< int > samp_compare, std::vector< int > samp_protect, float rel_threshold, float mult_threshold, const std::string &len_key="packet_len")
Return a shared_ptr to a new instance of radar::os_cfar_2d_vc.
virtual void set_mult_threshold(float inp)=0
virtual void set_rel_threshold(float inp)=0
std::shared_ptr< os_cfar_2d_vc > sptr
Definition os_cfar_2d_vc.h:58
virtual void set_samp_protect(std::vector< int > inp)=0
Definition crop_matrix_vcvc.h:28