Localモジュールの問題

研究会のサーバーから、ロボット用のtopicファイルをダウンロードしてロボットに組み込むモジュールを作成した。クラウドの入り口に立とうという狙いだ。モジュールがリモートだと、ダウンロードしたファイルをロボットに保存できないので、ロボット本体に組み込むローカルモジュールに変更した。
組み込んでみると、ロボットの電源を入れたときに、そのモジュールを読み取るはずなのだが、失敗している。ログを調べると、原因は、モジュールをコンパイルしているのは64ビットのLinuxマシンなのだが、ロボットは、32ビットのLinuxで動いていて、モジュール実行時の整合性がとれていないためのようだ。Cコンパイラを調整すれば、64ビットのLinuxでも、32ビットの実行ファイルを作成できるようなのだが、いろいろやってもうまくいかない。
そこで、Linux64を入れているVirtualBoxにLinux32も追加した。そして、そこに、naoqiのビルド関係の一式を再度インストールして、コンパイルし直した。それでモジュールとしてロボットに組み込むと、めでたく起動時にそれを読み込んだ。
外見上は特に問題なく機能しているようなのだが、ファイルをロボットに保存している段階で失敗しているようだ。パーミッションの問題なのかチェックしたが、ログがどこにも見つからない。はて困った。
(2014年8月18日追記)
単に保存するパスを間違えていたためであることが分かった。

関節のStiffnessの問題

C++のモジュールから動きをつけるときの、動作のぎこちなさが完全に解消できないので、そのことをAldebaran社のフォーラムに投稿して聞いてみたところ、いくつかのチェック項目を指揮された。大概チェック済みのものだが、一つ、関節のStiffnessが1.0になっていない状態で動こうとすると、おかしくなるよというのがあった。
そこで、動作の前にStiffnessがどうなっているかをALMotionのメソッドで調べてみた。結果的に、全ての関節が1.0になっていて問題なかった。が、motionのAPIは、あまり触れる予定がなかったことなので、視野が開けた気はした。
なお、stiffnessについて一言説明する。例えば人間で言えば、筋肉の力を全て緩めてしまえば、立っていられず、グニャグニャとなってしまうように、ロボットも、関節のモーターに力を入れておかないと、しゃきっとはしていられなくなる。Stiffnessとは、このようにロボットの筋肉に力を入れることを意味している。