示例#1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Vehicle Route creation Example
        // This example shows:
        // 1- Create a vehicle trajectory from positions and speed limits
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        static void RunExampleCreateRouteCar(string host, string target_type, string x300_ip)
        {
            Console.WriteLine();
            Console.WriteLine("=== Create Route Example ===");

            Console.WriteLine("==> Connecting to the simulator");
            RemoteSimulator sim = new RemoteSimulator();

            sim.Connect(host);

            Console.WriteLine("==> Create New Configuration, discarding current simulator settings");
            sim.Call(new New(true));

            Console.WriteLine("==> Modulation Settings");
            string targetId = "MyTargetId";

            sim.Call(new SetModulationTarget(target_type, "", x300_ip, true, targetId));
            // Select signals to simulate
            sim.Call(new ChangeModulationTargetSignals(0, 12500000, 12500000, "UpperL", "L1CA", -1, false, targetId));


            sim.Call(new SetVehicleTrajectory("Route"));
            sim.Call(new EnableTrajectorySmoothing(true));
            sim.BeginRouteDefinition();

            PushRouteNode(sim, 50.0, 42.719943, -73.830492);
            PushRouteNode(sim, 50.0, 42.718155, -73.833370);
            PushRouteNode(sim, 60.0, 42.718110, -73.833439);
            PushRouteNode(sim, 60.0, 42.717620, -73.832875);
            PushRouteNode(sim, 60.0, 42.717296, -73.832508);
            PushRouteNode(sim, 60.0, 42.716674, -73.831805);
            PushRouteNode(sim, 60.0, 42.715545, -73.830511);
            PushRouteNode(sim, 60.0, 42.715469, -73.830427);
            PushRouteNode(sim, 60.0, 42.714831, -73.829695);
            PushRouteNode(sim, 60.0, 42.714155, -73.828924);
            PushRouteNode(sim, 60.0, 42.714200, -73.828803);
            PushRouteNode(sim, 80.0, 42.714720, -73.827925);
            PushRouteNode(sim, 80.0, 42.714759, -73.827850);
            PushRouteNode(sim, 80.0, 42.714769, -73.827747);
            PushRouteNode(sim, 80.0, 42.714752, -73.827672);
            PushRouteNode(sim, 80.0, 42.714681, -73.827552);
            PushRouteNode(sim, 80.0, 42.714338, -73.827183);
            PushRouteNode(sim, 80.0, 42.713316, -73.826026);
            PushRouteNode(sim, 60.0, 42.713257, -73.825929);
            PushRouteNode(sim, 60.0, 42.713235, -73.825804);
            PushRouteNode(sim, 60.0, 42.713235, -73.825693);
            PushRouteNode(sim, 60.0, 42.713248, -73.825528);
            PushRouteNode(sim, 60.0, 42.713708, -73.823088);
            PushRouteNode(sim, 40.0, 42.713837, -73.823108);
            PushRouteNode(sim, 40.0, 42.713902, -73.823097);
            PushRouteNode(sim, 40.0, 42.713979, -73.823028);
            PushRouteNode(sim, 40.0, 42.714546, -73.822143);

            int numberOfNodes;

            sim.EndRouteDefinition(out numberOfNodes);
            Console.WriteLine("==> Route created, number of nodes in Route = " + numberOfNodes);

            //You must call BeginVehicleInfo before getting vehicle informations
            sim.BeginVehicleInfo();
            Console.WriteLine("==> Starting Simulation");
            sim.Start();

            Console.WriteLine("==> Getting vehicle statistics");
            VehicleInfo vehicleInfo = sim.LastVehicleInfo();

            Lla originLla = vehicleInfo.Position.ToLla(); //convert ecef origin to lla

            do
            {
                //sim.LastVehicleInfo() will block till a vehicle info is received,
                //you can use sim.HasVehicleInfo(), if you do not want a blocking behavior :
                //if (!sim.HasVehicleInfo()) continue;

                vehicleInfo = sim.LastVehicleInfo();
                Lla currentLla = vehicleInfo.Position.ToLla(); //convert ecef to lla
                Enu currentEnu = currentLla.ToEnu(originLla);  //convert lla to enu
                Console.WriteLine("--------------------------------------------------");
                Console.WriteLine("Time (ms): " + vehicleInfo.ElapsedTime);
                Console.Write("ENU Position (meters): " + currentEnu.North.ToString("F2") + " ");
                Console.WriteLine(currentEnu.East.ToString("F2") + " " + currentEnu.Up.ToString("F2"));
                Console.Write("NED Attitude (deg): " + vehicleInfo.Attitude.YawDeg.ToString("F2") + " ");
                Console.WriteLine(vehicleInfo.Attitude.PitchDeg.ToString("F2") + ", " + vehicleInfo.Attitude.RollDeg.ToString("F2"));
                Console.Write("Odometer (meters): " + vehicleInfo.Odometer.ToString("F2"));
                Console.Write(" | Heading (deg): " + (vehicleInfo.Heading / Math.PI * 180).ToString("F2"));
                Console.WriteLine(" | Speed (m/s): " + vehicleInfo.Speed.ToString("F2"));

                //You can remove or decrease this sleep to get more resolution
                //A vehicle info is sent each 10 ms from simulator
                Thread.Sleep(1000);
            } while (vehicleInfo.ElapsedTime < 60 * 1000);

            Console.WriteLine("==> Stopping simulation");
            sim.Stop();

            Console.WriteLine("==> Disconnect from Simulator");
            sim.Disconnect();
        }
示例#2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Vehicle Information Example
        // This example shows:
        // 1- Get Information about the simulated Vehicle during the simulation
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        static void RunExampleVehicleInfo(string host, string target_type, string x300_ip)
        {
            Console.WriteLine("=== Simulation Statistics Example ===");

            Console.WriteLine("==> Connecting to the simulator");
            RemoteSimulator sim = new RemoteSimulator();

            sim.Connect(host);

            Console.WriteLine("==> Create New Configuration, discarding current simulator settings");
            sim.Call(new New(true));

            Console.WriteLine("==> Modulation Settings");
            string targetId = "MyTargetId";

            sim.Call(new SetModulationTarget(target_type, "", x300_ip, true, targetId));
            // Select signals to simulate
            sim.Call(new ChangeModulationTargetSignals(0, 12500000, 12500000, "UpperL", "L1CA", -1, false, targetId));

            Console.WriteLine("==> Vehicle Settings");
            sim.Call(new SetVehicleTrajectoryCircular("Circular", 0.7853995339022749, -1.2740964277717111, 0, 50, 3, true));

            Console.WriteLine("==> Starting the simulation");
            Console.WriteLine("==> Begin receiving vehicle informations");
            //You must call BeginVehicleInfo before getting vehicle informations
            sim.BeginVehicleInfo();
            sim.Start();

            Console.WriteLine("==> Getting vehicle statistics");
            VehicleInfo vehicleInfo = sim.LastVehicleInfo();

            Lla originLla = vehicleInfo.Position.ToLla(); //convert ecef origin to lla

            do
            {
                //sim.LastVehicleInfo() will block till a vehicle info is received,
                //you can use sim.HasVehicleInfo(), if you do not want a blocking behavior :
                //if (!sim.HasVehicleInfo()) continue;

                vehicleInfo = sim.LastVehicleInfo();
                Lla currentLla = vehicleInfo.Position.ToLla(); //convert ecef to lla
                Enu currentEnu = currentLla.ToEnu(originLla);  //convert lla to enu
                Console.WriteLine("--------------------------------------------------");
                Console.WriteLine("Time (ms): " + vehicleInfo.ElapsedTime);
                Console.Write("ENU Position (meters): " + currentEnu.North.ToString("F2") + " ");
                Console.WriteLine(currentEnu.East.ToString("F2") + " " + currentEnu.Up.ToString("F2"));
                Console.Write("NED Attitude (deg): " + vehicleInfo.Attitude.YawDeg.ToString("F2") + " ");
                Console.WriteLine(vehicleInfo.Attitude.PitchDeg.ToString("F2") + ", " + vehicleInfo.Attitude.RollDeg.ToString("F2"));
                Console.Write("Odometer (meters): " + vehicleInfo.Odometer.ToString("F2"));
                Console.Write(" | Heading (deg): " + (vehicleInfo.Heading / Math.PI * 180).ToString("F2"));
                Console.WriteLine(" | Speed (m/s): " + vehicleInfo.Speed.ToString("F2"));

                //You can remove or decrease this sleep to get more resolution
                //A vehicle info is sent each 10 ms from simulator
                Thread.Sleep(1000);
            } while (vehicleInfo.ElapsedTime < 90000);

            Console.WriteLine("==> Stop simulation when elapsed time is 90 sec...");
            sim.Stop();
            sim.EndVehicleInfo();

            Console.WriteLine("==> Disconnect from Simulator");
            sim.Disconnect();
        }