2010年9月1日水曜日

愛しのヤコビ行列

近々あるミーティングで発表できるだけの内容にするべく研究を進めなければならないのに,8月は放浪してて実験ができずに先生にせかせれぎみのmorimoriです.

あんまブログで研究の細かい話はしてはいけないと思うので,このカテゴリは一般的なお話に絞って書くつもりです.てか,もはやだたの独り言日記w

そもそもどんな研究してんの?という話ですが,要はカメラを用いて,ロボットと何か物体を両方認識して,何かの作業が自動で出来るようなシステムを作りたいなー,ということなのです.

今はですねー,とにもかくにもロボットアームを動かしたいなーと思っており,それをビジュアルサーボで速度制御したいと思っているのです(要は画像を用いたフィードバック制御をしたいのだ).

画像から得られたロボットの手先速度(並進および回転)を元に,多関節ロボットの各関節の角速度を導出して,ロボット側にえい!と指令を与えられるようにしたいのです.

この仲介役を担ってくれるのがヤコビ行列さんなのです.ここで重要なのは,このヤコビ行列を求めるためには,その時刻での各関節の変位が必要となることです.

素人も素人の状態から初めて(順運動学と逆運動学からスタートですたい),ヤコビ行列を求めるプログラムが書けた感じがしたので,さぁシミュレータでいっちょ動かすかというところで動かんかったのです.
正確に言えば,いっちゃん最初だけ動いているようでそれ以降音沙汰が無いのです.

ここで俺のヤコビさんが間違ってるのでは…という懸念が…そんなぁ…

てなわけで3週間前に書いたコードだったのでちと思い出しながら読んでいたら…あ,変位が積分されてない….アホだ.そりゃ止まるわw 報告するのも恥ずかしかったw

制御周期も適当に30msとか入れてやってたら先生方にこのバカモノと怒られたw すみません,1ms にしますとも.

そしたらジャーン!動きました.俺は何をやっていたんだ….バカ学生で申し訳ないす.

とりあえず俺のヤコビさんが合ってて良かった.ありがとう,ヤコビさん.

てーのはMatlabでやってたので,Cに移して動作確認しました.しかしMatlabって行列計算どんだけ便利なんだよ!って,あらためて感じました.

ちなみにCでの行列計算は若干使い慣れてるOpenCVの関数で済ませちゃってます.Intelを信用してるのですよw

BLASが速いという話もありますね.しかし高々6x6行列の計算にそこまでする必要があるのかなーという印象を持っているのですが,どうなんでしょう.

最後に,今回シミュレータは自分で書いたものではないのですが,使っていると自分でOpenGL使ってシミュレータが作れるようになりたいと心から思った今日この頃でした.

0 件のコメント:

コメントを投稿