Skip to content

trouble_shooting

Tomoki Anzai edited this page Jan 10, 2020 · 19 revisions

サーボ

前提にしていること

  • 一周が12bit(4096分割)のdynamixelサーボモータを使っている
  • サーボ軸は一回転以上しないように制限されている。一回転以上する場合は初期化する角度が決められている。
  • 指令/取得できるサーボ角度は符号付き15bit(-16384~16383)である。

joint calibrationをしたが、初期化の角度によって角度が変化してしまう

  • ロボットにおいて0[rad]と定める角度を、2047としてキャリブレーションしてください。(例えばhydrusなら一直線になる角度がロボットモデル上の0度。)neuronの内部処理でサーボの角度が0~4095に収まっていない場合は収まるようにオフセットをかける処理がかかるからです。
  • これは角度を0~4095でしかやりとりしていなかった頃の名残で、今は符号付き15bit(-16384~16383)まで送受信できるため、本来は-2047~2047に収めるように処理し、0になるようにキャリブレーションすべきですが、従来の仕様のままになっています。

シミュレーション

gazeboのjoint controllerの順番がおかしい

Servo.yamlを書くとき、ジョイントが10を超えると気をつけないといけない点として、

controller1:
controller2:
...
controller10:

と定義したとき、これをアルファベット順(+数字順)にソートするとcontroller1, controller10, controller2 ...となってしまい、ジョイントの順番がおかしくなってしまうので注意. なので

controller01
controller02
...
controller10
...

のようにすればよい.

マイコン

CubeMXでプロジェクトを再生成したらコンパイルが通らない

  • HALのバージョンが変わってAPIが変わっている
  • HALのバージョンを元のプロジェクトのバージョンに合わせてプロジェクトを生成する
    • 例えばneuron_f4はv1.14.0
  • 本当は最新のバージョンに合わせてこっちがプログラムを変えたほうがよい

自己位置推定(Motion capture, VIO)

VIOの性能が悪い

  • カメラの画角に何か環境以外のものが映り込んでいないか?自身のケーブルなどが映り込んでいないか?

estimate_mode:=1 時にfail-safe2-1(imu値が正常)

  • rigid bodyという無名のアブジェクトは必ず破棄する(位置推定が振動する)

euroc

Clone this wiki locally