@@ -44,6 +44,8 @@ def __init__(self):
4444 self .yaw_td = 0.0
4545 self .angle_t = 0.0
4646 self .angle_td = 0.0
47+ self .id1 = 0
48+ self .id2 = 0
4749
4850
4951def cal_ob_sigma (d ):
@@ -95,6 +97,7 @@ def calc_edges(xlist, zlist):
9597 edge .d_t , edge .d_td = dt , dtd
9698 edge .yaw_t , edge .yaw_td = yawt , yawtd
9799 edge .angle_t , edge .angle_td = anglet , angletd
100+ edge .id1 , edge .id2 = t , td
98101
99102 edges .append (edge )
100103
@@ -122,19 +125,27 @@ def graph_based_slam(xEst, PEst, u, z, hxDR, hz):
122125
123126 x_opt = copy .deepcopy (hxDR )
124127 edges = calc_edges (x_opt , hz )
128+ print ("nedges:" , len (edges ))
125129 n = len (hz ) * 3
126130
127131 for itr in range (MAX_ITR ):
128- print ("nedges:" , len (edges ))
129132
130133 H = np .zeros ((n , n ))
131134 b = np .zeros ((n , 1 ))
132135
133136 for edge in edges :
134137 A , B = calc_jacobian (edge )
135138
139+ id1 = edge .id1 * 3
140+
141+ H [id1 :id1 + 3 , id1 :id1 + 3 ] += A .T * edge .omega * A
142+ # h[self.id1*3:self.id1*3+3, self.id2*3:self.id2*3+3] += (self.matA).T.dot(self.info.dot(self.matB))
143+ # h[self.id2*3:self.id2*3+3, self.id1*3:self.id1*3+3] += (self.matB).T.dot(self.info.dot(self.matA))
144+ # h[self.id2*3:self.id2*3+3, self.id2*3:self.id2*3+3] += (self.matB).T.dot(self.info.dot(self.matB))
145+
136146 # H[0:3, 0:3] += np.identity(3) * 10000 # to fix origin
137147 H += np .identity (n ) * 10000 # to fix origin
148+ print (H )
138149
139150 dx = - np .linalg .inv (H ).dot (b )
140151 # print(dx)
0 commit comments