回答編集履歴

11

コメントに合わせて修正

2019/12/05 08:10

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -1,4 +1,6 @@
1
1
  質問文の観測のヤコビ行列は整理すると
2
+
3
+
2
4
 
3
5
 
4
6
 
@@ -8,19 +10,29 @@
8
10
 
9
11
  dy = LM(2)-x(2)
10
12
 
11
- r2=dx^2 + dy^2;
13
+ r=(dx^2 + dy^2)^0.5;
12
14
 
13
- Ht = [
15
+ r2=(dx^2 + dy^2);
14
16
 
15
- -dy/(r2)^0.5, -dx/(r2)^0.5;
17
+ Ht = [
16
18
 
19
+ -dx/r, -dy/r
20
+
17
- -dx/(r2), -dy/(r2)];
21
+ -dy/r2, -dx/r2;
22
+
23
+ ];
18
24
 
19
25
  ```
20
26
 
21
27
 
22
28
 
23
29
  となっていますが、
30
+
31
+ Ht(1,2) = ∂φ/∂xの計算結果だけマイナスが余計で
32
+
33
+ https://www.wolframalpha.com/input/?i=%28d%2Fdx%29arctan%28%28b-y%29%2F%28a-x%29%29
34
+
35
+
24
36
 
25
37
  正しくは
26
38
 
@@ -32,13 +44,17 @@
32
44
 
33
45
  dy = LM(2)-x(2)
34
46
 
35
- r2=dx^2 + dy^2;
47
+ r=(dx^2 + dy^2)^0.5;
36
48
 
37
- Ht = [
49
+ r2=(dx^2 + dy^2);
38
50
 
39
- -dy/(r2)^0.5, dx/(r2)^0.5;
51
+ Ht = [
40
52
 
53
+ -dx/r, -dy/r
54
+
41
- dx/(r2), dy/(r2)];
55
+ dy/r2, -dx/r2;
56
+
57
+ ];
42
58
 
43
59
  ```
44
60
 
@@ -48,4 +64,8 @@
48
64
 
49
65
 
50
66
 
67
+ ---
68
+
69
+
70
+
51
71
  [参考](http://www.namerikawa.sd.keio.ac.jp/publications/domestic_conf/2009/movic2009yama.pdf)

10

typo

2019/12/05 08:09

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  -dy/(r2)^0.5, -dx/(r2)^0.5;
16
16
 
17
- -dy/(r2), -dx/(r2)];
17
+ -dx/(r2), -dy/(r2)];
18
18
 
19
19
  ```
20
20
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  -dy/(r2)^0.5, dx/(r2)^0.5;
40
40
 
41
- dy/(r2), dx/(r2)];
41
+ dx/(r2), dy/(r2)];
42
42
 
43
43
  ```
44
44
 

9

全然見当違いのこと語ってたっぽいので抹消

2019/12/05 05:50

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -1,355 +1,51 @@
1
- ![イメージ説明](2f063477e615a8dba374c347a970ac03.png)
2
-
3
-
4
-
5
- * Ftを単位行列に変更(入力込みのヤコビ行列の検算が面倒だったため、とりあえず動かないモデルを採用)
6
-
7
- * ~~観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正;(LM-x)に統一~~元からそうでした
8
-
9
- * 観測誤差も[-π, π)に収めように変更
1
+ 質問文の観測のヤコビ行列は整理す
10
-
11
- * 観測関数で角度を出す際にノイズを加えてから[-π, π)に収めるように変更
12
2
 
13
3
 
14
4
 
15
5
  ```scilab
16
6
 
17
- function [] = VectorFieldKalmanFilterLocalization()
7
+ dx = LM(1)-x(1)
18
8
 
9
+ dy = LM(2)-x(2)
19
10
 
11
+ r2=dx^2 + dy^2;
20
12
 
21
-
13
+ Ht = [
22
14
 
23
- global xg
15
+ -dy/(r2)^0.5, -dx/(r2)^0.5;
24
16
 
25
- xg = [25;20];
26
-
27
- global cg
28
-
29
- cg = 300;
30
-
31
- global lg
32
-
33
- lg = 100;
34
-
35
- global a
36
-
37
- a= 0.1;
38
-
39
- x0=[0;0];
40
-
41
-
42
-
43
- global LM
44
-
45
- LM= [0;10];
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
- result.xTrue=[];
58
-
59
- result.xd=[];
60
-
61
- result.xEst=[];
62
-
63
- result.z=[];
64
-
65
- result.PEst=[];
66
-
67
- result.u=[];
68
-
69
-
70
-
71
- Xact=[0;0];
72
-
73
- Xdes=[0;0];
74
-
75
- Xest=[0;0];
76
-
77
- global z
78
-
79
- z = [0;0];
80
-
81
-
82
-
83
- global F
84
-
85
- F=eye(2,2);
86
-
87
- H=eye(2,2);
88
-
89
- Pest = zeros(2,2);
90
-
91
-
92
-
93
- w=[0.01;0.02];
94
-
95
- // v=[1;1];
96
-
97
- v=[0.03;toRadian(1)];
98
-
99
- // w=[0;0]
100
-
101
- // v=[0;0]
102
-
103
- Q=diag(w).^2;
104
-
105
- R=diag(v).^2;
106
-
107
- xes=zeros(300,2);
108
-
109
- xas=zeros(300,2);
110
-
111
- zps=zeros(300,2);
112
-
113
- zas=zeros(300,2);
114
-
115
- ys=zeros(300,2);
116
-
117
-
118
-
119
- vas=zeros(300,2);
120
-
121
- ves =zeros(300,2);
122
-
123
- htxs =zeros(300,2);
124
-
125
- for t=1:300 do
126
-
127
- // printf("%d\n",t)
128
-
129
- Vact = VerocityVectorIncludeNoise(Xact,w);
130
-
131
-
132
-
133
- Xact = f(Xact,Vact);
134
-
135
-
136
-
137
-
138
-
139
- Vest = VerocityVectorIncludeNoise(Xest,w*0);
140
-
141
- Xpred = f(Xest,Vest);
142
-
143
- [vxdx, vxdy, vydx, vydy] = bibun(Vest,Xest,xg);
144
-
145
- Ft = jacobF(vxdx,vxdy,vydx,vydy);
146
-
147
- Ppred = Ft*Pest*Ft' + Q;
148
-
149
-
150
-
151
-
152
-
153
- z = Observation(Xact,LM,v);
154
-
155
- zpred = Observation(Xpred,LM,v*0);
156
-
157
-
158
-
159
-
160
-
161
- y = z - zpred;
162
-
163
- y(2) = PI2PI(y(2));
164
-
165
- Ht = JacobianH(Xpred,LM);
166
-
167
- S = R + Ht*Ppred*Ht';
168
-
169
- K = Ppred*Ht'/S;
170
-
171
-
172
-
173
-
174
-
175
- Xest = Xpred + K*y;
176
-
177
- Pest = (eye(2,2) - K*Ht)*Ppred;
178
-
179
-
180
-
181
- xes(t,:) = Xest;
182
-
183
- xas(t,:) = Xact;
184
-
185
- zps(t,:) = zpred;
186
-
187
- htxs(t,:) = Ht*Xact;
188
-
189
- zes(t,:) = z;
190
-
191
- ys(t,:) = y;
192
-
193
-
194
-
195
-
196
-
197
- ves(t,:) = Vest;
198
-
199
- vas(t,:) = Vact;
200
-
201
- end
202
-
203
-
204
-
205
- endfunction
206
-
207
-
208
-
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
- function V = VerocityVectorIncludeNoise(x,w)
220
-
221
- global xg;
222
-
223
- global cg;
224
-
225
- global lg;
226
-
227
- Vx = -(2*cg*(x(1)-xg(1))/lg^2)*exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2)+w(1)*rand(1,"normal");
228
-
229
- Vy = -(2*cg*(x(2)-xg(2))/lg^2)*exp(-(((x(2)-xg(2))^2)+(x(2)-xg(2))^2)/lg^2)+w(2)*rand(1,"normal");
230
-
231
- V = [Vx;Vy];
232
-
233
- // V=xg/100 + w*rand(2,"normal");
234
-
235
- endfunction
236
-
237
-
238
-
239
- function x1 = f(x,v)
240
-
241
- global a;
242
-
243
- x1 = x + v*a;
244
-
245
- // x1 = x + v;
246
-
247
- endfunction
248
-
249
-
250
-
251
- function z = Observation(x,xm,v)
252
-
253
- // z(1) = x(1)-xm(1) + v(1)*rand(1,"normal");
254
-
255
- // z(2) = x(2)-xm(2) + v(2)*rand(1,"normal");
256
-
257
- z(1) = ((xm(1)-x(1))^2+(xm(2)-x(2))^2)^0.5 + v(1)*rand(1,"normal");
258
-
259
- z(2) = PI2PI(atan(xm(2)-x(2),xm(1)-x(1))+ v(2)*rand(1,"normal") );
260
-
261
- endfunction
262
-
263
-
264
-
265
- function angle=PI2PI(angle)
266
-
267
- angle=atan(sin(angle),cos(angle));
268
-
269
- endfunction
270
-
271
-
272
-
273
- function Ft = jacobF(vxdx,vxdy,vydx,vydy)
274
-
275
- global F;
276
-
277
- global a;
278
-
279
- Ft=eye(2,2)//F+a*[vxdx vxdy;vydx vydy];
280
-
281
- endfunction
282
-
283
-
284
-
285
- function Ht = JacobianH(x,LM)
286
-
287
- // Ht=eye(2,2);
288
-
289
- r2=(LM(1)-x(1))^2 + (LM(2)-x(2))^2;
290
-
291
- Ht = [
292
-
293
-
294
-
295
- -(LM(1)-x(1))/(r2)^0.5, -(LM(2)-x(2))/(r2)^0.5;
296
-
297
- -(LM(2)-x(2))/(r2), -(LM(1)-x(1))/(r2)];
17
+ -dy/(r2), -dx/(r2)];
298
-
299
- endfunction
300
-
301
-
302
-
303
- function [vxdx,vxdy,vydx,vydy] = bibun(v,x,xg)
304
-
305
- global a;
306
-
307
- global cg;
308
-
309
- global lg;
310
-
311
- vxdx = -((2*cg*a)/lg^2)*(exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2))*(1+((x(1)-xg(1))*v(1))/2*a*cg);
312
-
313
- vxdy = -v(1)*(2*(x(2)-xg(2))/lg^2);
314
-
315
- vydx = -v(2)*(2*(x(1)-xg(1))/lg^2);
316
-
317
- vydy = -((2*cg*a)/lg^2)*(exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2))*(1+((x(2)-xg(2))*v(2))/2*a*cg);
318
-
319
- endfunction
320
-
321
-
322
-
323
- function radian = toRadian(degree)
324
-
325
- radian = (degree/180)*%pi;
326
-
327
- endfunction
328
-
329
-
330
18
 
331
19
  ```
332
20
 
333
21
 
334
22
 
23
+ となっていますが、
24
+
335
- ---
25
+ 正しくは
336
26
 
337
27
 
338
28
 
339
- そもそも"角度"ってこういう場面では扱いが面倒です。
29
+ ```scilab
340
30
 
341
- というのも例えば[-π, π)に収めるとしたら
31
+ dx = LM(1)-x(1)
342
32
 
343
- π付近の角度を状態に持ってたときってちょっと状態が変化しただけでも値としては2π近く飛んで
33
+ dy = LM(2)-x(2)
344
34
 
345
- いろいろと計算がややこしくなるんですよね。
35
+ r2=dx^2 + dy^2;
36
+
37
+ Ht = [
38
+
39
+ -dy/(r2)^0.5, dx/(r2)^0.5;
40
+
41
+ dy/(r2), dx/(r2)];
42
+
43
+ ```
346
44
 
347
45
 
348
46
 
349
- (3次元の姿勢推定微小変化でも値がホイホイ飛ぶオイラー角より連続的に変化するクォータニオンの方を採用することが多わけ。)
47
+ いでしょうか
350
48
 
351
49
 
352
50
 
353
- だから実際にセンサで得られる観測がランドマーク基準の極座標(r, θ)であっても、
51
+ [参考](http://www.namerikawa.sd.keio.ac.jp/publications/domestic_conf/2009/movic2009yama.pdf)
354
-
355
- 直交座標に変換したものを観測としたほうが計算は楽です。

8

書き忘れ変更点追記

2019/12/05 05:49

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  * ~~観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正;(LM-x)に統一~~元からそうでした
8
8
 
9
+ * 観測誤差も[-π, π)に収めるように変更
10
+
11
+ * 観測関数で角度を出す際にノイズを加えてから[-π, π)に収めるように変更
12
+
9
13
 
10
14
 
11
15
  ```scilab

7

修正

2019/12/05 03:17

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  * Ftを単位行列に変更(入力込みのヤコビ行列の検算が面倒だったため、とりあえず動かないモデルを採用)
6
6
 
7
- * 観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正;(LM-x)に統一
7
+ * ~~観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正;(LM-x)に統一~~元からそうでした
8
8
 
9
9
 
10
10
 

6

typo

2019/12/05 03:13

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  * Ftを単位行列に変更(入力込みのヤコビ行列の検算が面倒だったため、とりあえず動かないモデルを採用)
6
6
 
7
- * 観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正(LM-x)に統一
7
+ * 観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正;(LM-x)に統一
8
8
 
9
9
 
10
10
 

5

追記

2019/12/05 00:25

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- * Ftを単位行列に変更
5
+ * Ftを単位行列に変更(入力込みのヤコビ行列の検算が面倒だったため、とりあえず動かないモデルを採用)
6
6
 
7
7
  * 観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正(LM-x)に統一
8
8
 

4

修正点

2019/12/05 00:23

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
 
4
4
 
5
+ * Ftを単位行列に変更
6
+
7
+ * 観測関数はLMから見たロボットの位置になっているのに観測行列はロボットから見たLMの位置になっていたのを修正(LM-x)に統一
8
+
5
9
 
6
10
 
7
11
  ```scilab

3

暫定

2019/12/05 00:18

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -2,10 +2,6 @@
2
2
 
3
3
 
4
4
 
5
- * Htのミス修正(Ht(2,2)成分の^2の位置がおかしかった)
6
-
7
- * Ftを単位行列に変更
8
-
9
5
 
10
6
 
11
7
  ```scilab

2

回答追加

2019/12/05 00:15

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -1,4 +1,336 @@
1
+ ![イメージ説明](2f063477e615a8dba374c347a970ac03.png)
2
+
3
+
4
+
5
+ * Htのミス修正(Ht(2,2)成分の^2の位置がおかしかった)
6
+
1
- 回答じゃないんですけど、
7
+ * Ftを単位行列に変更
8
+
9
+
10
+
11
+ ```scilab
12
+
13
+ function [] = VectorFieldKalmanFilterLocalization()
14
+
15
+
16
+
17
+
18
+
19
+ global xg
20
+
21
+ xg = [25;20];
22
+
23
+ global cg
24
+
25
+ cg = 300;
26
+
27
+ global lg
28
+
29
+ lg = 100;
30
+
31
+ global a
32
+
33
+ a= 0.1;
34
+
35
+ x0=[0;0];
36
+
37
+
38
+
39
+ global LM
40
+
41
+ LM= [0;10];
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+ result.xTrue=[];
54
+
55
+ result.xd=[];
56
+
57
+ result.xEst=[];
58
+
59
+ result.z=[];
60
+
61
+ result.PEst=[];
62
+
63
+ result.u=[];
64
+
65
+
66
+
67
+ Xact=[0;0];
68
+
69
+ Xdes=[0;0];
70
+
71
+ Xest=[0;0];
72
+
73
+ global z
74
+
75
+ z = [0;0];
76
+
77
+
78
+
79
+ global F
80
+
81
+ F=eye(2,2);
82
+
83
+ H=eye(2,2);
84
+
85
+ Pest = zeros(2,2);
86
+
87
+
88
+
89
+ w=[0.01;0.02];
90
+
91
+ // v=[1;1];
92
+
93
+ v=[0.03;toRadian(1)];
94
+
95
+ // w=[0;0]
96
+
97
+ // v=[0;0]
98
+
99
+ Q=diag(w).^2;
100
+
101
+ R=diag(v).^2;
102
+
103
+ xes=zeros(300,2);
104
+
105
+ xas=zeros(300,2);
106
+
107
+ zps=zeros(300,2);
108
+
109
+ zas=zeros(300,2);
110
+
111
+ ys=zeros(300,2);
112
+
113
+
114
+
115
+ vas=zeros(300,2);
116
+
117
+ ves =zeros(300,2);
118
+
119
+ htxs =zeros(300,2);
120
+
121
+ for t=1:300 do
122
+
123
+ // printf("%d\n",t)
124
+
125
+ Vact = VerocityVectorIncludeNoise(Xact,w);
126
+
127
+
128
+
129
+ Xact = f(Xact,Vact);
130
+
131
+
132
+
133
+
134
+
135
+ Vest = VerocityVectorIncludeNoise(Xest,w*0);
136
+
137
+ Xpred = f(Xest,Vest);
138
+
139
+ [vxdx, vxdy, vydx, vydy] = bibun(Vest,Xest,xg);
140
+
141
+ Ft = jacobF(vxdx,vxdy,vydx,vydy);
142
+
143
+ Ppred = Ft*Pest*Ft' + Q;
144
+
145
+
146
+
147
+
148
+
149
+ z = Observation(Xact,LM,v);
150
+
151
+ zpred = Observation(Xpred,LM,v*0);
152
+
153
+
154
+
155
+
156
+
157
+ y = z - zpred;
158
+
159
+ y(2) = PI2PI(y(2));
160
+
161
+ Ht = JacobianH(Xpred,LM);
162
+
163
+ S = R + Ht*Ppred*Ht';
164
+
165
+ K = Ppred*Ht'/S;
166
+
167
+
168
+
169
+
170
+
171
+ Xest = Xpred + K*y;
172
+
173
+ Pest = (eye(2,2) - K*Ht)*Ppred;
174
+
175
+
176
+
177
+ xes(t,:) = Xest;
178
+
179
+ xas(t,:) = Xact;
180
+
181
+ zps(t,:) = zpred;
182
+
183
+ htxs(t,:) = Ht*Xact;
184
+
185
+ zes(t,:) = z;
186
+
187
+ ys(t,:) = y;
188
+
189
+
190
+
191
+
192
+
193
+ ves(t,:) = Vest;
194
+
195
+ vas(t,:) = Vact;
196
+
197
+ end
198
+
199
+
200
+
201
+ endfunction
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+ function V = VerocityVectorIncludeNoise(x,w)
216
+
217
+ global xg;
218
+
219
+ global cg;
220
+
221
+ global lg;
222
+
223
+ Vx = -(2*cg*(x(1)-xg(1))/lg^2)*exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2)+w(1)*rand(1,"normal");
224
+
225
+ Vy = -(2*cg*(x(2)-xg(2))/lg^2)*exp(-(((x(2)-xg(2))^2)+(x(2)-xg(2))^2)/lg^2)+w(2)*rand(1,"normal");
226
+
227
+ V = [Vx;Vy];
228
+
229
+ // V=xg/100 + w*rand(2,"normal");
230
+
231
+ endfunction
232
+
233
+
234
+
235
+ function x1 = f(x,v)
236
+
237
+ global a;
238
+
239
+ x1 = x + v*a;
240
+
241
+ // x1 = x + v;
242
+
243
+ endfunction
244
+
245
+
246
+
247
+ function z = Observation(x,xm,v)
248
+
249
+ // z(1) = x(1)-xm(1) + v(1)*rand(1,"normal");
250
+
251
+ // z(2) = x(2)-xm(2) + v(2)*rand(1,"normal");
252
+
253
+ z(1) = ((xm(1)-x(1))^2+(xm(2)-x(2))^2)^0.5 + v(1)*rand(1,"normal");
254
+
255
+ z(2) = PI2PI(atan(xm(2)-x(2),xm(1)-x(1))+ v(2)*rand(1,"normal") );
256
+
257
+ endfunction
258
+
259
+
260
+
261
+ function angle=PI2PI(angle)
262
+
263
+ angle=atan(sin(angle),cos(angle));
264
+
265
+ endfunction
266
+
267
+
268
+
269
+ function Ft = jacobF(vxdx,vxdy,vydx,vydy)
270
+
271
+ global F;
272
+
273
+ global a;
274
+
275
+ Ft=eye(2,2)//F+a*[vxdx vxdy;vydx vydy];
276
+
277
+ endfunction
278
+
279
+
280
+
281
+ function Ht = JacobianH(x,LM)
282
+
283
+ // Ht=eye(2,2);
284
+
285
+ r2=(LM(1)-x(1))^2 + (LM(2)-x(2))^2;
286
+
287
+ Ht = [
288
+
289
+
290
+
291
+ -(LM(1)-x(1))/(r2)^0.5, -(LM(2)-x(2))/(r2)^0.5;
292
+
293
+ -(LM(2)-x(2))/(r2), -(LM(1)-x(1))/(r2)];
294
+
295
+ endfunction
296
+
297
+
298
+
299
+ function [vxdx,vxdy,vydx,vydy] = bibun(v,x,xg)
300
+
301
+ global a;
302
+
303
+ global cg;
304
+
305
+ global lg;
306
+
307
+ vxdx = -((2*cg*a)/lg^2)*(exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2))*(1+((x(1)-xg(1))*v(1))/2*a*cg);
308
+
309
+ vxdy = -v(1)*(2*(x(2)-xg(2))/lg^2);
310
+
311
+ vydx = -v(2)*(2*(x(1)-xg(1))/lg^2);
312
+
313
+ vydy = -((2*cg*a)/lg^2)*(exp(-(((x(1)-xg(1))^2)+(x(2)-xg(2))^2)/lg^2))*(1+((x(2)-xg(2))*v(2))/2*a*cg);
314
+
315
+ endfunction
316
+
317
+
318
+
319
+ function radian = toRadian(degree)
320
+
321
+ radian = (degree/180)*%pi;
322
+
323
+ endfunction
324
+
325
+
326
+
327
+ ```
328
+
329
+
330
+
331
+ ---
332
+
333
+
2
334
 
3
335
  そもそも"角度"ってこういう場面では扱いが面倒です。
4
336
 

1

typo

2019/12/05 00:13

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -14,6 +14,6 @@
14
14
 
15
15
 
16
16
 
17
- だから実際にセンサで得られる観測がランドマーク基準の極座標(r, θ)だからといっても、
17
+ だから実際にセンサで得られる観測がランドマーク基準の極座標(r, θ)であっても、
18
18
 
19
19
  直交座標に変換したものを観測としたほうが計算は楽です。