示例#1
0
 def test_get_segment_between_new_timestamps(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(20, 0), 't': datetime(2018, 1, 1, 12, 20, 0)},
         {'geometry': Point(30, 0), 't': datetime(2018, 1, 1, 12, 30, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_segment_between(datetime(2018, 1, 1, 12, 5, 0), datetime(2018, 1, 1, 12, 25, 0, 50)).df
     expected_result = pd.DataFrame([
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(20, 0), 't': datetime(2018, 1, 1, 12, 20, 0)}
         ]).set_index('t')
     pd.testing.assert_frame_equal(result, expected_result)
示例#2
0
 def assign_snapshot(self, snapshot):
     '''
     Assign a single snapshot to the cluster centers
     
     Returns
     -------
     assignment : int
         cluster IDs
     distance: float
         distance to cluster _generator in measure of the metric (RMSD)
     
     '''
     
     assignments, distances = self.assign(Trajectory([snapshot]))    
     return assignments[0], distances[0]
示例#3
0
def main():
    venueData = pd.read_csv("./VenueID_data.csv")
    l = Localization(venueData)
    trajectorydata = pd.read_csv("./trainTrajectory_final.csv")
    #print(trajectorydata["VenueID"].describe())
    t = Trajectory(trajectorydata)
    usersgroup = l.grouping(groupNum)

    testtrajectorydata = pd.read_csv("./testTrajectory_final.csv")
    testTrajectory = Trajectory(testtrajectorydata)

    models, dics = train(usersgroup=usersgroup, trajectory=t)
    for i in range(0, len(models)):
        output = open(
            './LocalizationModel/' + str(groupNum) + 'model_state' +
            str(states) + "_" + str(i) + '.pkl', 'wb')
        s = pickle.dump(models[i], output)
        output.close()

    for i in range(0, len(models)):
        eval_loc_model(testTrajectory=testTrajectory,
                       model=models[i],
                       users=usersgroup[i],
                       dic=dics[i])
示例#4
0
 def test_nonchronological_input(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 2, 0, 0, 0)
     }, {
         'geometry': Point(1, 1),
         't': datetime(2018, 1, 3, 0, 0, 0)
     }, {
         'geometry': Point(2, 2),
         't': datetime(2018, 1, 1, 0, 0, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     self.assertEqual(datetime(2018, 1, 1), traj.get_start_time())
     self.assertEqual(datetime(2018, 1, 3), traj.get_end_time())
     self.assertEqual(Point(2, 2), traj.get_start_location())
示例#5
0
 def test_get_direction(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(-6, 10),
         't': datetime(2018, 1, 1, 12, 0, 1)
     }, {
         'geometry': Point(6, 6),
         't': datetime(2018, 1, 1, 12, 0, 2)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_direction()
     expected_result = 45
     self.assertAlmostEqual(result, expected_result, 1)
示例#6
0
 def test_endlocation(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 6, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_end_location()
     expected_result = Point(10, 0)
     self.assertEqual(result, expected_result)
示例#7
0
 def test_linestring_wkt(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 6, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.to_linestring().wkt
     expected_result = "LINESTRING (0 0, 6 0, 10 0)"
     self.assertEqual(result, expected_result)
示例#8
0
 def test_linstring_m_wkt(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(1970, 1, 1, 0, 0, 1)
     }, {
         'geometry': Point(6, 0),
         't': datetime(1970, 1, 1, 0, 0, 2)
     }, {
         'geometry': Point(10, 0),
         't': datetime(1970, 1, 1, 0, 0, 3)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.to_linestringm_wkt()
     expected_result = "LINESTRING M (0.0 0.0 1.0, 6.0 0.0 2.0, 10.0 0.0 3.0)"
     self.assertEqual(result, expected_result)
示例#9
0
 def test_get_position_at_existing_timestamp(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 20, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_position_at(datetime(2018, 1, 1, 12, 10, 0))
     expected_result = Point(6, 0)
     self.assertEqual(result, expected_result)
示例#10
0
def run_traclus(trajs, eps, min_lns, min_traj, min_vline, min_prev_dist):

    # Cleaning
    trajs = [[Point(**pt) for pt in traj] for traj in trajs]
    trajs = get_cleaned_trajectories(trajs)
    print('Number of trajectories after clean : {}'.format(len(trajs)))
    trajs = [Trajectory(traj, tid) for tid, traj in enumerate(trajs)]

    # Partitioning
    cluster_candidates_tls = []
    tls_factory = TrajectoryLineSegmentFactory()
    for traj in trajs:
        p_indices = call_partition_trajectory(traj.pts)
        p_pts = filter_by_indices(p_indices, traj.pts)
        traj.p_pts = p_pts
        ls_list = get_ls_list(p_pts)
        if len(ls_list) <= 0:
            raise Exception()
        for ls in ls_list:
            tls = tls_factory.create(ls, traj.tid)
            cluster_candidates_tls.append(tls)
    print('Number of segments (cluster candidates) : {}'.format(
        len(cluster_candidates_tls)))

    # Clustering (DBSCAN)
    tls_index = BestAvailableClusterCandidateIndex(cluster_candidates_tls, eps)
    tcluster_factory = TrajectoryClusterFactory()
    tclusters = dbscan(tls_index, min_lns, tcluster_factory)
    print('Number of clusters : {}'.format(len(tclusters)))

    # Representative trajectory
    rtrajs = []
    for tc in tclusters:
        if tc.get_num_of_trajs() >= min_traj:
            tls_list = tc.get_members()
            r_pts = get_rline_pts(tls_list, min_vline, min_prev_dist)
            rtraj = RepresentativeTrajectory(r_pts, tc.cid)
            rtrajs.append(rtraj)
    print('Number of representative trajectories : {}'.format(len(rtrajs)))

    result = {
        'partitioned_trajectories': trajs,
        'clusters': tclusters,
        'representative_trajectories': rtrajs
    }

    return result
示例#11
0
    def __init__(self, K, T, A):
        self.A = A  # action scale
        self.T = T  # time steps per sequence
        self.predictor = Predictor(1, 2, 1, self.T)
        self.trajectory = Trajectory()
        self.trajectory.reset()
        self.K = K  # K sample action sequences
        self.lambd = 1

        self.dim_u = 1  # U is theta
        # action init
        self.U_reset()

        self.u_init = np.array([0.0])
        self.cost = np.zeros([self.K])
        # self.noise = np.random.uniform(-3.14, 3.14, size = (self.K, self.T, self.dim_u))
        self.noise = np.zeros([self.K, self.T, self.dim_u])
示例#12
0
def main_test():
    trajectorydata = pd.read_csv("./trainTrajectory_final.csv")
    member = MembershipVector(trajectorydata['UserID'].unique(), GROUP_NUM)
    t = Trajectory(trajectorydata)

    models = [
        hmm.GroupLevelHMM(n_components=N_STATES, init_params='mce')
        for i in range(GROUP_NUM)
    ]
    log = open('./logs/log_' + str(datetime.datetime.now()) + '.txt', 'w')
    for n in range(30):

        print("STAGE : " + str(n + 1))
        # iterate through groups
        for i in range(0, GROUP_NUM):
            print("LEARNING FOR GROUP " + str(i))
            data, length, proba = t.getData(i, member)
            models[i].set_weights(proba)
            models[i].fit(data, length)

        print("Grouping...")
        # Grouping and update
        for i in range(0, GROUP_NUM):
            g = Group(hmm=models[i],
                      membership=member,
                      trajectory=t,
                      groupId=i)
            member = g.update()

        groups = np.zeros(GROUP_NUM)
        for i in trajectorydata['UserID']:
            groups[member.getProbOfUser(i).argmax()] += 1
        print(groups)
        eval_log = eval_group_hmms(member, models)
        print(eval_log)
        log.write(str(eval_log) + "\n")
        log.write(str(groups) + "\n\n")
        log.close()

        for i in range(0, GROUP_NUM):
            output = open(
                './models/model_iter_' + str(n) + '_model_' + str(i) + '_' +
                str(datetime.datetime.now()) + '.pkl', 'wb')
            s = pickle.dump(models[i], output)
            output.close()
 def test_kinetic_prediction_turning_right(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(20, 0),
         't': datetime(2018, 1, 1, 12, 0, 1)
     }, {
         'geometry': Point(38, -10),
         't': datetime(2018, 1, 1, 12, 0, 2)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '4326'})
     traj = Trajectory(1, geo_df)
     predictor = TrajectoryPredictor(traj)
     result = predictor.predict_kinetically(timedelta(seconds=2))
     expected_result = Point(68.7, -37.3)
     #print("Got {}, expected {}".format(result, expected_result))
     self.assertTrue(result.almost_equals(expected_result, 0))
示例#14
0
    def get_trajectories(self, o,d):
        cursor = self.connection.cursor()
        cursor.execute('''
        SELECT link_ids
        FROM experiment2_trajectories
        WHERE orig_TAZ = %s AND dest_TAZ = %s
        AND commute_direction = %s;
        ''', (o, d, self.commute_direction))

        trajectories = list()
        for link_ids in cursor:
            filtered = self.link_id_filter(link_ids[0])
            if len(filtered) == 0:
                continue
            t = Trajectory(filtered, (o,d), self.link_geom, self.length_cache)
            trajectories.append(t)

        return trajectories
示例#15
0
    def setUp(self):
        np.random.seed(2)
        n_complexity = 5
        self.traj = Trajectory(model='bandlimited')
        self.traj.set_n_complexity(n_complexity)
        self.traj.set_coeffs(1)

        self.anchors = np.random.rand(self.traj.dim,
                                      10) * 10  # between 0 and 10.

        self.times = self.traj.get_times(n_samples=200)
        self.basis, self.D_gt = get_measurements(self.traj,
                                                 self.anchors[:2, :],
                                                 times=self.times)

        points_gt = self.traj.get_sampling_points(self.times)
        self.indices = range(len(self.times))[::self.traj.dim + 1]
        self.points_sub = points_gt[:, self.indices]
 def test_kinetic_prediction_east_3pt_constant_speed(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 1, 0)
     }, {
         'geometry': Point(20, 0),
         't': datetime(2018, 1, 1, 12, 2, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '4326'})
     traj = Trajectory(1, geo_df)
     predictor = TrajectoryPredictor(traj)
     result = predictor.predict_kinetically(timedelta(minutes=1))
     expected_result = Point(30, 0)
     #print("Got {}, expected {}".format(result, expected_result))
     self.assertTrue(result.almost_equals(expected_result))
示例#17
0
 def test_clip_two_intersections_with_same_polygon(self):
     polygon = Polygon([(5, -5), (7, -5), (7, 12), (5, 12), (5, -5)])
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 6, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 10),
         't': datetime(2018, 1, 1, 12, 30, 0)
     }, {
         'geometry': Point(0, 10),
         't': datetime(2018, 1, 1, 13, 0, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     intersections = traj.clip(polygon)
     # spatial
     result = []
     for x in intersections:
         result.append(x.to_linestring().wkt)
     expected_result = [
         "LINESTRING (5 0, 6 0, 7 0)", "LINESTRING (7 10, 5 10)"
     ]
     self.assertEqual(expected_result, result)
     # temporal
     result = []
     for x in intersections:
         result.append((x.get_start_time(), x.get_end_time()))
     expected_result = [(datetime(2018, 1, 1, 12, 5,
                                  0), datetime(2018, 1, 1, 12, 7, 0)),
                        (datetime(2018, 1, 1, 12, 39,
                                  0), datetime(2018, 1, 1, 12, 45, 0))]
     self.assertEqual(expected_result, result)
     # ids
     result = []
     for x in intersections:
         result.append(x.id)
     expected_result = ['1_0', '1_1']
     self.assertEqual(expected_result, result)
    def generate_trajectory(
        self,
        end_point: np.array,
        start_angle: float,
        end_angle: float,
        primitive_resolution: float,
    ) -> Union[Trajectory, None]:
        """
        Create a trajectory from (0,0, start_angle) to (end_point, end_angle).

        The trajectory will consist of a path that contains discrete points
        that are spaced primitive_resolution apart.

        Args
        ----
        end_point: np.array(2,)
            The desired end point of the trajectory
        start_angle: float
            The start angle of the trajectory in radians
        end_angle: float
            The end angle of the trajectory in radians
        primitive_resolution: float
            The spacing between points along the trajectory

        Returns
        -------
        Trajectory or None
            If a valid trajectory exists then the Trajectory is returned,
            otherwise None

        """
        trajectory_params = self._calculate_trajectory_params(
            end_point, start_angle, end_angle)

        if trajectory_params is None:
            return None

        logger.debug('Trajectory found')

        trajectory_path = self._create_path(trajectory_params,
                                            primitive_resolution)

        return Trajectory(trajectory_path, trajectory_params)
示例#19
0
 def test_get_segment_between_existing_timestamps(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 15, 0)
     }, {
         'geometry': Point(10, 10),
         't': datetime(2018, 1, 1, 12, 30, 0)
     }, {
         'geometry': Point(0, 10),
         't': datetime(2018, 1, 1, 13, 0, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_segment_between(datetime(2018, 1, 1, 12, 10, 0),
                                       datetime(2018, 1, 1, 12, 30, 0)).df
     expected_result = pd.DataFrame([{
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 15, 0)
     }, {
         'geometry': Point(10, 10),
         't': datetime(2018, 1, 1, 12, 30, 0)
     }]).set_index('t')
     pd.testing.assert_frame_equal(result, expected_result)
     expected_result = pd.DataFrame([{
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 15, 0)
     }, {
         'geometry': Point(10, 10),
         't': datetime(2018, 1, 1, 12, 30, 1)
     }]).set_index('t')
     self.assertNotEqual(expected_result.to_dict(), result.to_dict())
示例#20
0
 def test_get_position_with_invalid_method(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 20, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     try:
         result = traj.get_position_at(datetime(2018, 1, 1, 12, 10, 0),
                                       method='xxx')
         assert False
     except ValueError:
         assert True
示例#21
0
    def __init__(self):

        self.on = True
        self.motor_on = False
        self.save_on = False
        self.mode = 0

        self.t0 = datetime.datetime.now()
        self.t = 0.0
        self.t_pre = 0.0
        self.freq_imu = 0.0
        self.freq_gps = 0.0
        self.freq_control = 0.0
        self.freq_log = 0.0

        self.x = np.zeros(3)
        self.v = np.zeros(3)
        self.a = np.zeros(3)
        self.R = np.identity(3)
        self.W = np.zeros(3)

        self.x_offset = np.zeros(3)
        self.yaw_offset = 0.0

        self.g = 9.81
        self.ge3 = np.array([0.0, 0.0, self.g])

        # Gazebo uses ENU frame, but NED frame is used in FDCL.
        self.R_fg = np.array([[1.0, 0.0, 0.0], [0.0, -1.0, 0.0],
                              [0.0, 0.0, -1.0]])

        self.V_R_imu = np.diag([0.01, 0.01, 0.01])
        self.V_x_gps = np.diag([0.01, 0.01, 0.01])
        self.V_v_gps = np.diag([0.01, 0.01, 0.01])

        self.control = Control()
        self.control.use_integral = True  # Enable integral control

        self.estimator = Estimator()
        self.trajectory = Trajectory()

        self.lock = threading.Lock()
示例#22
0
 def test_clip_with_numerical_time_issues(self):
     xmin, xmax, ymin, ymax = 116.36850352835575, 116.37029459899574, 39.904675309969896, 39.90772814977718
     polygon = Polygon([(xmin, ymin), (xmin, ymax), (xmax, ymax),
                        (xmax, ymin), (xmin, ymin)])
     df = pd.DataFrame([{
         'geometry': Point(116.36855, 39.904926),
         't': datetime(2009, 3, 10, 11, 3, 35)
     }, {
         'geometry': Point(116.368612, 39.904877),
         't': datetime(2009, 3, 10, 11, 3, 37)
     }, {
         'geometry': Point(116.368644, 39.90484),
         't': datetime(2009, 3, 10, 11, 3, 39)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     intersection = traj.clip(polygon)[0]
     result = intersection.to_linestring().wkt
     expected_result = "LINESTRING (116.36855 39.904926, 116.368612 39.904877, 116.368644 39.90484)"
     self.assertEqual(expected_result, result)
示例#23
0
 def test_split_by_daybreak(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(-6, 10),
         't': datetime(2018, 1, 1, 12, 1, 0)
     }, {
         'geometry': Point(6, 6),
         't': datetime(2018, 1, 3, 12, 0, 1)
     }, {
         'geometry': Point(6, 16),
         't': datetime(2018, 1, 3, 12, 5, 1)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     split = traj.split('daybreak')
     result = len(split)
     expected_result = 2
     self.assertEqual(result, expected_result)
示例#24
0
 def test_split_by_observation_gap_skip_single_points(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(-6, 10),
         't': datetime(2018, 1, 1, 12, 1, 0)
     }, {
         'geometry': Point(6, 6),
         't': datetime(2018, 1, 1, 12, 5, 0)
     }, {
         'geometry': Point(6, 16),
         't': datetime(2018, 1, 1, 12, 6, 30)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     split = traj.split_by_observation_gap(timedelta(seconds=61))
     result = len(split)
     expected_result = 1
     self.assertEqual(expected_result, result)
 def test_dist_error_latlon(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(0, 10),
         't': datetime(2018, 1, 1, 12, 0, 1)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': 'epsg:4326'})
     true_traj = Trajectory(1, geo_df)
     true_pos = Point(0, 10)
     predicted_pos = Point(0, 9)
     dummy_td = timedelta(seconds=1)
     sample = TrajectorySample(0, dummy_td, dummy_td, dummy_td, None,
                               true_pos, true_traj)
     evaluator = TrajectoryPredictionEvaluator(sample, predicted_pos,
                                               'epsg:25832', 'epsg:4326')
     result = evaluator.get_distance_error()
     expected_result = measure_distance_spherical(true_pos, predicted_pos)
     self.assertAlmostEqual(result, expected_result, 3)
示例#26
0
 def test_add_heading(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(6, -6),
         't': datetime(2018, 1, 1, 12, 20, 0)
     }, {
         'geometry': Point(-6, -6),
         't': datetime(2018, 1, 1, 12, 30, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     traj.add_heading()
     result = traj.df['heading'].tolist()
     expected_result = [90.0, 90.0, 180.0, 270]
     self.assertEqual(result, expected_result)
 def test_sample_after_movement_start(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 11, 0, 57)
     }, {
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 11, 0, 58)
     }, {
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 11, 0, 59)
     }, {
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 1, 0)
     }, {
         'geometry': Point(0, 1),
         't': datetime(2018, 1, 1, 12, 1, 1)
     }, {
         'geometry': Point(0, 2),
         't': datetime(2018, 1, 1, 12, 1, 2)
     }, {
         'geometry': Point(0, 3),
         't': datetime(2018, 1, 1, 12, 1, 3)
     }, {
         'geometry': Point(0, 4),
         't': datetime(2018, 1, 1, 12, 1, 4)
     }, {
         'geometry': Point(0, 4),
         't': datetime(2018, 1, 1, 12, 1, 5)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     sampler = TrajectorySampler(traj)
     past_timedelta = timedelta(seconds=2)
     future_timedelta = timedelta(seconds=2)
     sample = sampler.get_sample(past_timedelta, future_timedelta)
     result = sample.future_pos.wkt
     expected_result = "POINT (0 4)"
     self.assertEqual(result, expected_result)
     result = sample.past_traj.to_linestring().wkt
     expected_result = "LINESTRING (0 0, 0 1, 0 2)"
     self.assertEqual(result, expected_result)
示例#28
0
    def __init__(self, env, K, T):
        self.env = env
        self.T = T  # time steps per sequence
        self.predictor = Predictor(1, 2, 1, self.T)
        # self.predictor = Predictor(1, 1, 2, self.T)
        self.trajectory = Trajectory(self.env)
        self.trajectory.reset()
        self.K = K  # K sample action sequences
        # self.T = T # time steps per sequence
        self.lambd = 1

        # self.dim_u = self.env.action_space.sample().shape[0]
        self.dim_u = 2
        self.U = np.zeros([self.T, self.dim_u])
        self.time_limit = self.env._max_episode_steps

        self.u_init = np.zeros([self.dim_u])
        self.cost = np.zeros([self.K])
        self.noise = np.random.normal(loc=0,
                                      scale=1,
                                      size=(self.K, self.T, self.dim_u))
示例#29
0
 def test_get_linestring_between(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(20, 0),
         't': datetime(2018, 1, 1, 12, 20, 0)
     }, {
         'geometry': Point(30, 0),
         't': datetime(2018, 1, 1, 12, 30, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_linestring_between(
         datetime(2018, 1, 1, 12, 5, 0), datetime(2018, 1, 1, 12, 25, 0,
                                                  50)).wkt
     expected_result = "LINESTRING (10 0, 20 0)"
     self.assertEqual(result, expected_result)
示例#30
0
 def test_get_position_interpolated_at_timestamp(self):
     df = pd.DataFrame([{
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 10, 0)
     }, {
         'geometry': Point(10, 0),
         't': datetime(2018, 1, 1, 12, 20, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs={'init': '31256'})
     traj = Trajectory(1, geo_df)
     result = traj.get_position_at(datetime(2018, 1, 1, 12, 14, 0),
                                   method="interpolated")
     expected_result = Point(6 + 4 / 10 * 4, 0)
     self.assertEqual(expected_result, result)
     result = traj.get_position_at(datetime(2018, 1, 1, 12, 15, 0),
                                   method="interpolated")
     expected_result = Point(6 + 4 / 10 * 5, 0)
     self.assertEqual(expected_result, result)