ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
以前の記事でUSBラズパイとかいう製品の存在価値が分からないと言いましたが、案の定叩かれているようです。そりゃそうだよなあ。買うことを検討している人は考え直したほうがいいと思う。
それはさておき。OiLのマーシャリング、アンマーシャリングの動作がどうにも不可解なので調べてみます。
CDRの先頭に1,255,255,255という謎の値がくっついているのは以前言った通りなのですが、TimedVelocity2D型、CameraImage型等で調べたところ、他の部分にも謎の値が挿入されてしまいます。
まずTimedVelocity2D型をマーシャリングすると以下のようになります。
格納されている値は全て0に設定してあるため、全て0になるはずですが、13~16にかけて255という値が挿入されています。
位置 値
1 1
TimedVelocity2D型について推測すると、structの変数の前に255が挿入されると推測されます。
位置 値
------------------------
CameraImage型は以下のようになります。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
それはさておき。OiLのマーシャリング、アンマーシャリングの動作がどうにも不可解なので調べてみます。
CDRの先頭に1,255,255,255という謎の値がくっついているのは以前言った通りなのですが、TimedVelocity2D型、CameraImage型等で調べたところ、他の部分にも謎の値が挿入されてしまいます。
まずTimedVelocity2D型をマーシャリングすると以下のようになります。
格納されている値は全て0に設定してあるため、全て0になるはずですが、13~16にかけて255という値が挿入されています。
位置 値
1 1
2 255
3 255
4 255
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 255
14 255
15 255
16 255
17 0
18 0
19 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
30 0
31 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 0
CameraImage型は以下のようになります。
これも全て0になるはずですが、255が挿入されています。
位置 値
CameraImage型は以下のようになります。
これも全て0になるはずですが、255が挿入されています。
位置 値
1 1
2 255
3 255
4 255
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 255
20 255
21 1
22 0
23 0
24 0
25 0
26 255
27 255
28 255
29 255
30 255
31 255
32 255
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 0
41 0
42 0
43 0
44 0
TimedVelocity2D型について推測すると、structの変数の前に255が挿入されると推測されます。
位置 値
------------------------
1 1
2 255
3 255
4 255
------------------------
Time(sec):unsigned long
------------------------
Time(sec):unsigned long
5 0
6 0
7 0
8 0
------------------------
Time(nsec):unsigned long
------------------------
Time(nsec):unsigned long
9 0
10 0
11 0
12 0
------------------------
------------------------
13 255
14 255
15 255
16 255
------------------------
Velocity2D(vx):double
------------------------
Velocity2D(vx):double
17 0
18 0
19 0
20 0
21 0
22 0
23 0
24 0
------------------------
Velocity2D(vy):double
------------------------
Velocity2D(vy):double
25 0
26 0
27 0
28 0
29 0
30 0
31 0
32 0
------------------------
Velocity2D(va):double
------------------------
Velocity2D(va):double
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 0
------------------------
------------------------
CameraImage型は以下のようになります。
位置 値
------------------------
なるほど。全く分かりません。アラインメントの問題なのでしょうか?
というわけで、OiLのalign関数をただ0を返す関数に置き換えました。
これで上記の255が消えて全て上手くいく・・・と思ったのですが、CameraImage型はomniORB等でマーシャリングするとアラインメントのためかbppとformatの間に0が2個入るため上手くいきません。この問題を解決するのは容易ではありません。
まあでも、これでとりあえずほとんどのデータ型で通信できるようになったはずなので、修正版0.2.1をリリースしました。
------------------------
1 1
2 255
3 255
4 255
------------------------
Time(sec):unsigned long
------------------------
Time(sec):unsigned long
5 0
6 0
7 0
8 0
------------------------
Time(nsec):unsigned long
------------------------
Time(nsec):unsigned long
9 0
10 0
11 0
12 0
------------------------
width:unsigned short
------------------------
width:unsigned short
13 0
14 0
------------------------
height:unsigned short
------------------------
height:unsigned short
15 0
16 0
------------------------
bpp:unsigned short
------------------------
bpp:unsigned short
17 0
18 0
------------------------
------------------------
19 255
20 255
------------------------
format:string
------------------------
format:string
21 1
22 0
23 0
24 0
25 0
------------------------
------------------------
26 255
27 255
28 255
29 255
30 255
31 255
32 255
------------------------
fDiv::double
------------------------
fDiv::double
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 0
------------------------
pixels:sequence<octet>
------------------------
pixels:sequence<octet>
41 0
42 0
43 0
44 0
なるほど。全く分かりません。アラインメントの問題なのでしょうか?
というわけで、OiLのalign関数をただ0を返す関数に置き換えました。
encoder.align = function(...)return 0 end
これで上記の255が消えて全て上手くいく・・・と思ったのですが、CameraImage型はomniORB等でマーシャリングするとアラインメントのためかbppとformatの間に0が2個入るため上手くいきません。この問題を解決するのは容易ではありません。
まあでも、これでとりあえずほとんどのデータ型で通信できるようになったはずなので、修正版0.2.1をリリースしました。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする