GNU Radio Radar Toolbox
static_target_simulator_cc.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 #ifndef INCLUDED_RADAR_STATIC_TARGET_SIMULATOR_CC_H
22 #define INCLUDED_RADAR_STATIC_TARGET_SIMULATOR_CC_H
23 
24 #include <radar/api.h>
25 #include <gnuradio/tagged_stream_block.h>
26 
27 namespace gr {
28  namespace radar {
29 
30  /*!
31  * \brief This block simulates the backscattering of a given signal on point targets. TX signal is given on the input and is tuned in the simulation on the given center frequency. Target parameters are given as f32vectors and each index refers to a target. The vectors range, velocity, rcs, and azimuth must have the same length. Velocity adds the doppler shift on the input signal and range adds a timeshift. Azimuth adds a second timeshift which refers to the distance between TX and RX antenna. All antennas are set on a straight line. The TX antenna takes place on the zero point as reference. The RX antennas are set on the straight line in a distance of position_rx to the TX antenna. The azimuth is measured from the vertical of this line. rndm_phaseshift adds on every target RX signal a random phase. self_coupling toggles the self coupling of the TX signal on the RX signal with self_coupling_db power.
32  *
33  *
34  * \param range Target ranges as vector
35  * \param velocity Target velocities as vector
36  * \param rcs Target RCS as vector
37  * \param azimuth Target azimuth as vector
38  * \param position_rx Position RX antennas
39  * \param samp_rate Sample rate
40  * \param center_freq Center frequency
41  * \param self_coupling_db Self coupling in dB
42  * \param rndm_phaseshift Toggle random phaseshift on targets
43  * \param self_coupling Toggle self coupling
44  * \param packet_len Packet length key for tagged stream
45  *
46  * \ingroup radar
47  *
48  */
49  class RADAR_API static_target_simulator_cc : virtual public gr::tagged_stream_block
50  {
51  public:
52  typedef boost::shared_ptr<static_target_simulator_cc> sptr;
53 
54  /*!
55  * \brief Return a shared_ptr to a new instance of radar::static_target_simulator_cc.
56  *
57  * To avoid accidental use of raw pointers, radar::static_target_simulator_cc's
58  * constructor is in a private implementation
59  * class. radar::static_target_simulator_cc::make is the public interface for
60  * creating new instances.
61  */
62  static sptr make(std::vector<float> range, std::vector<float> velocity, std::vector<float> rcs, std::vector<float> azimuth, std::vector<float> position_rx,
63  int samp_rate, float center_freq, float self_coupling_db, bool rndm_phaseshift=true, bool self_coupling=true, const std::string& len_key="packet_len");
64 
65  virtual void setup_targets(std::vector<float> range, std::vector<float> velocity, std::vector<float> rcs, std::vector<float> azimuth, std::vector<float> position_rx,
66  int samp_rate, float center_freq, float self_coupling_db, bool rndm_phaseshift, bool self_coupling) = 0;
67  };
68 
69  } // namespace radar
70 } // namespace gr
71 
72 #endif /* INCLUDED_RADAR_STATIC_TARGET_SIMULATOR_CC_H */
73 
This block simulates the backscattering of a given signal on point targets. TX signal is given on the...
Definition: static_target_simulator_cc.h:49
Definition: crop_matrix_vcvc.h:28
boost::shared_ptr< static_target_simulator_cc > sptr
Definition: static_target_simulator_cc.h:52
#define RADAR_API
Definition: api.h:30