AirControl  1.3.0
Open Source, Modular, and Extensible Flight Simulator For Deep Learning Research
Lidar.cs
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using Communicator;
5 
6 namespace AirControl
7 {
11  public class Lidar : MonoBehaviour
12  {
13  public int numberOfIncrements = 360;
14  public float maxRange = 500f;
15 
16  [HideInInspector]
17  public static float[] distances;
18 
19  // Use this for initialization
20  void Start () {
21  distances = new float[numberOfIncrements];
22  }
23 
24  // Update is called once per frame
25  void FixedUpdate () {
26  Vector3 fwd = new Vector3(0, 0, 1);
27  Vector3 dir;
28  RaycastHit hit;
29  int indx = 0;
30 
31  #region IOSwitch
32 
33  bool isActive = StaticLidarSchema.IsActive;
34 
35  if (isActive)
36  {
37  numberOfIncrements = StaticLidarSchema.Density;;
38  maxRange = StaticLidarSchema.Range;
39  StaticLidarSchema.IsActive = false;
40  }
41  #endregion
42 
43  for (int incr = 0; incr < numberOfIncrements; incr++)
44  {
45 
46  indx = incr;
47  dir = transform.rotation * Quaternion.Euler(0, incr, 0)*fwd;
48 
49 
50  if (Physics.Raycast(transform.position, dir, out hit, maxRange))
51  {
52  distances[indx] = (float)hit.distance;
53  }
54  else
55  {
56  distances[indx] = maxRange;
57  }
58  Debug.DrawRay(transform.position, dir * distances[indx], Color.red);
59  StaticOutputSchema.LidarPointCloud = distances;
60  }
61 
62  }
63  }
64 
65 }
AirControl.Lidar
Creates and controls Lidar
Definition: Lidar.cs:11
AirControl
Definition: AirplaneSelector.cs:8
Communicator
Definition: InputHandle.cs:10