Пример #1
0
        private void InitializeMessage()
        {
            laserScanReader = LaserScannerObject.GetComponent <LaserScanReader>();
            scanPeriod      = (float)laserScanReader.samples / (float)laserScanReader.update_rate;

            message = new Messages.Sensor.LaserScan
            {
                header = new Messages.Standard.Header {
                    frame_id = FrameId
                },
                angle_min       = laserScanReader.angle_min,
                angle_max       = laserScanReader.angle_max,
                angle_increment = laserScanReader.angle_increment,
                time_increment  = laserScanReader.time_increment,
                range_min       = laserScanReader.range_min,
                range_max       = laserScanReader.range_max,
                ranges          = laserScanReader.ranges,
                intensities     = laserScanReader.intensities
            };
        }
    void Update()
    {
        if (!lidar)
        {
            lidar = Globals.Instance.CurrentCar.lidar;
            balanceHits();
        }
        //Reached updatefrequency threshhold, read new value
        if (Time.time - stime > 1.0f / updateFrequency)
        {
            balanceHits();

            for (int i = 0; i < lidar.samples; i++)
            {
                float range = lidar.ranges[i];
                if (range >= lidar.range_min && range <= lidar.range_max)
                {
                    float   angle = lidar.angle_min + lidar.angle_increment * i;
                    Vector3 pos   = new Vector3(range * Mathf.Cos(angle), range * Mathf.Sin(angle), 0.0f);
                    if (!relativePosition)
                    {
                        pos += new Vector3(lidar.transform.position.x, lidar.transform.position.z, 0.0f);                   //x and y of transform are different than on HUD
                    }
                    hits[i].anchoredPosition3D = toCanvasSpace(pos);
                    if (xAxis.isValid(pos.x) && yAxis.isValid(pos.y))
                    {
                        hits[i].gameObject.SetActive(true);
                    }
                    else
                    {
                        hits[i].gameObject.SetActive(false);
                    }
                }
                else
                {
                    hits[i].gameObject.SetActive(false);
                }
            }
            stime = Time.time;
        }
    }
 public override void set_reference(Transform o)
 {
     reference = o;
     ls_pub    = o.GetComponent <RosSharp.RosBridgeClient.LaserScanPublisher>();
     ls_reader = o.GetComponent <RosSharp.RosBridgeClient.LaserScanReader>();
 }