Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about estimating azimuth angle and elevation angle in 'demo/visualizer' #61

Open
kathy-lee opened this issue Aug 19, 2023 · 0 comments

Comments

@kathy-lee
Copy link

kathy-lee commented Aug 19, 2023

Hi, first of all thank you for this open source package, it's very helpful! I just have one question when I try to write a function to generate point cloud from IWR1443BOOST raw ADC data, only 2 of the transmitting antennas on the azimuth (horizontal) axis are used and receiving antennas are 4. I think the demo/visualizer/main.py gives a good enough example to generate point cloud, but I can't understand the following steps inside beamforming_naive_mixed_xyz() which is invoked after aoa_bartlett() and peak_search_full_variance() :

        higher_rung = inputSignal[8:12]
        lower_rung = inputSignal[2:6]
        for j in range(num_out):
            ele_out = aoa_estimation_bf_one_point(4, higher_rung, steering_vec[max_theta[j]])
            azi_out = aoa_estimation_bf_one_point(4, lower_rung, steering_vec[max_theta[j]])
            num = azi_out * np.conj(ele_out)
            wz = np.arctan2(num.imag, num.real) / np.pi

            temp_angle = -est_range + max_theta[j] * est_resolution  # Converts to degrees, centered at boresight (0 degrees)
            # Make sure the temp angle generated is within bounds
            if np.abs(temp_angle) <= est_range and estimated_variance[j] < doa_var_thr:
                e_angle = np.arcsin(wz)
                a_angle = -1 * (np.pi / 180) * temp_angle  # Degrees to radians
                output_e_angles.append((180 / np.pi) * e_angle)  # Convert radians to degrees
                output_a_angles.append((180 / np.pi) * np.arcsin(np.sin(a_angle) * np.cos(e_angle)))  
                output_ranges.append(input_ranges[i])

Can someone tell me the process of these steps and what are higher_rung and lower_rung used for? In my case to get azimuth angle, shall I ignore those steps and directly take the result from peak_search_full_variance() after aoa_bartlett() as azimuth angle estimation? Many thanks in advance!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant