Пример #1
0
def traj_wind_airframe(uav, orig, dest, wind):
    origin = up.Waypoint(orig[0], orig[1], orig[2], orig[3])
    target = up.Waypoint(dest[0], dest[1], orig[2], dest[3])

    samples = uav.path_sampling_airframe(origin, target, wind, 1)
    x = [wp.x for wp in samples]
    y = [wp.y for wp in samples]
    return x, y
Пример #2
0
def traj_2d(uav, orig, dest):
    origin = up.Waypoint(orig[0], orig[1], orig[2], orig[3])
    target = up.Waypoint(dest[0], dest[1], orig[2], dest[3])

    samples = uav.path_sampling(origin, target, 1)
    x = [wp.x for wp in samples]
    y = [wp.y for wp in samples]
    return x, y
Пример #3
0
    def traj(uav, orig, dest):
        origin = up.Waypoint(orig[0], orig[1], orig[2], orig[3])
        target = up.Waypoint(dest[0], dest[1], dest[2], dest[3])

        samples = uav.path_sampling(origin, target, 1)
        # samples = uav.path_sampling(origin, target, up.WindVector(3, 3), 1)

        x = [wp.x for wp in samples]
        y = [wp.y for wp in samples]
        z = [wp.z for wp in samples]
        return x, y, z
    def test_vns(self):
        def pr(cpp_raster, blocking=False):  # plots a cpp raster
            return GeoData.from_cpp_raster(cpp_raster,
                                           "xx").plot(blocking=blocking)

        from fire_rs.firemodel import propagation
        env = propagation.Environment(
            [[480060.0, 485060.0], [6210074.0, 6214074.0]],
            wind_speed=4.11,
            wind_dir=0)
        prop = propagation.propagate_from_points(env,
                                                 TimedPoint(
                                                     482060, 6211074, 0),
                                                 until=14000)

        ignitions = prop.ignitions()
        # ax = ignitions.plot(blocking=False)
        elev = env.raster.slice('elevation')

        conf = {
            'min_time': 9500,
            'max_time': 12000,
            'save_every': 0,
            'save_improvements': False,
            'discrete_elevation_interval': 1,
            'vns': fire_rs.planning.benchmark.vns_configurations['base']
        }
        conf['vns']['configuration_name'] = 'base'

        wp = up.Waypoint(480060.0 + 100, 6210074.0 + 100, 0, 0)
        flight = up.TrajectoryConfig(uav, wp, wp, conf['min_time'], 1500)

        res = up.plan_vns([
            flight,
        ], ignitions.as_cpp_raster(), elev.as_cpp_raster(), json.dumps(conf))

        plan = res.final_plan()

        geodatadisplay = GeoDataDisplay.pyplot_figure(
            env.raster.combine(ignitions))
        geodatadisplay.add_extension(TrajectoryDisplayExtension, (None, ), {})

        plot_plan(plan, geodatadisplay, show=True)

        for intermediate_plan in res.intermediate_plans:
            geodatadisplay = GeoDataDisplay.pyplot_figure(
                env.raster.combine(ignitions))
            geodatadisplay.add_extension(TrajectoryDisplayExtension, (None, ),
                                         {})
            plot_plan(intermediate_plan, geodatadisplay, show=True)

        print("durations: ")
        for traj in plan.trajectories():
            print(traj.duration())
Пример #5
0
    y = [wp.y for wp in samples]
    return x, y


if __name__ == '__main__':
    matplotlib.rcParams['font.family'] = 'sans-serif'
    matplotlib.rcParams['text.usetex'] = True

    uav_speed = 10.  # m/s
    uav_max_turn_rate = 32. * np.pi / 180
    uav_max_pitch_angle = 6. / 180. * np.pi
    wind = up.WindVector(0, -3)
    no_wind = up.WindVector(0, 0)
    a_uav = up.UAV("x8-06", uav_speed, uav_max_turn_rate, uav_max_pitch_angle)

    wp_s, wp_e = up.Waypoint(0, 0, 0, 0), up.Waypoint(100, 0, 0, 0)
    seg = up.Segment(wp_s, wp_e)
    tr_time = a_uav.travel_time(seg, wind)
    print(tr_time)
    print(a_uav.travel_time(wp_s, wp_e, wind))

    fig = plt.figure()
    # Low altitude
    ax = fig.add_subplot(111, aspect='equal')
    # ax.set_xlim((-10, 70))
    # ax.set_ylim((-20, 80))

    ax.set_axis_off()  #Hide axes

    wp_ma = [(-8, 0, 0, 0), (50, 50, 0, 5 * np.pi / 4),
             (20, 50, 0, 0.)]  # , (0, 100, 20, 0)]
 def test_waypoint(self):
     wp1 = up.Waypoint(4, 3, 2, 1)
     self.assertEqual(wp1.x, 4)
     self.assertEqual(wp1.y, 3)
     self.assertEqual(wp1.z, 2)
     self.assertEqual(wp1.dir, 1)
 def setUp(self):
     self.wp1 = up.Waypoint(0, 0, 0, 0)
     self.wp2 = up.Waypoint(4, 0, 0, 0)
     self.test_area = [[480060.0, 490060.0], [6210074.0, 6220074.0]]
Пример #8
0
 def as_cpp(self):
     return up.Waypoint(self.x, self.y, self.z, self.dir)