(0)MMDAgentα版公開いつの間にやらMMDAgentが公開されていました。http://www.mmdagent.jp/Windowsのバイナリ版を試してみましたが、自分の環境ではエラーがでて動作しませんでした。隠れたポリゴンの描写OpenSceneGraphのメモデプステストによって描写されないポリゴンを描写。試行錯誤で何とかできました。オブジェクトの描写順に関係なく、描写できると思います。drawstuffOpenHRP3の敷居を少しでも下げてみたいと思い、いろいろとやってみたのですが、面倒になったので途中で投げ出すことに。これでいっぱいいっぱいです。OpenHRP3を動力学シミュレータとして利用し、ODE付属のdrawstuffで描写を担当させるサンプル。・c++ソースmain.txt.txtから.cppに変更してください。・cmake用のCMakeList.txtCMakeLists.txt・サーバー群立ち上げのためのスクリプトopenhrp-startup-servers.txt.txtから.shに変更してください。・プログラム実行の流れスクリプトでopenhrp-model-loaderopenhrp-aist-dynamics-simulatoropenhrp-collision-detectorらをいっぺんに立ち上げ。その後、コンパイルしたプログラムを別端末で実行。・コードの大部分はOpenHRP3公式サイトからのものです。・パスは適当に修正してください。・不要なコードが混じっているかも。・ODEに付属のdrawstuffを描写ライブラリとして利用。・drawstuffの関数は回転行列がR[12]なので、ラップ関数を用意してR[9]に変換。makeの並列処理makeの-jオプションで並列処理ができるようです。最近初めて知りました。-jの後に並列実行するジョブの個数を指定します。-j2のような感じです。3.1.0-Releaseがリリースされたようです。Ver.3.1.0β4からの変更点を確認した後、アップデートしたいと思います。(0)QtとCORBAQtとCORBAを組み合わせてみようとしたのですが、どうもうまくいかない。検索して調べてみたら、QtとCORBAの組み合わせは、よろしくないみたいです。以前のバージョンのQtではCORBAを扱うモジュールがあったみたいですが、現在では商用版のQtでのみのサポートとなっており、使用は非推奨。代わりに現在のQtではD-Busを扱うQDBusモジュールが用意されています。詳しいことはまだ理解していないのですが、D-BusもCORBAと同じように、アプリケーション間のやりとりを行う技術のようです。(0)やっと・・・やっとBLACKIIで、まともに加工できるようになりました。切り込みステップを0.1mm、切削送りを200mm/minの設定で加工。(0)3本目・・・エンドミル折れた・・・これで3本目。アルミの切削は困難を極める。切削中の筐体のビビリがものすごい。すさまじい騒音が発生。切削中に、エンドミルがアルミに引っかかり、スピンドルの回転が止まる。送りは止まらないので、エンドミルはぽっきりと折れてしまう。まともに切削できやしない。(0)試切削BLACKIIで試切削してみました。適当な形をCADで作製。切削なので見守りながら開始したのですが、いきなりエンドミルが捨て板を貫通しそうになったので、緊急停止。切り込み深さの設定をミスっていたようです。設定しなおして、再び切削。今度は上手くいきました。加工時間は20分ほど。切削粉は掃除機で吸い取りました。綺麗に切削できて喜んでいたのですが、材料の固定に使用した両面テープが強力すぎて、捨て板からはがせない、というなんとも間抜けな事態に。1520の組み立て完了ここ一週間ほど忙しくて、しばらく組み立てを放置していましたが、やっと完成。まとまった時間が取れなかったため、完成が伸びてしまいましたが、一気にやれば2日ほどで組み立てられるのではないでしょうか。説明書も丁寧なので、難なく組めると思います。設置場所に困っています。1520を購入しました。(0)NaNのメモC/C++でNaNを検出するにはisnan()を使えばいいらしい。(0)Octave高速化ATLASとやらをインストールすると、Octaveの行列演算が高速化するらしいです。パッケージ・マネージャからインストール。seconds.なんと2倍以上高速化。参考にさせていただいたサイト様。(0)操作ハンドルを実装3DCGソフトでポリゴンの頂点の編集に使う矢印みたいなものを実装しました。名称がわからないので、操作ハンドルと呼んでいます。名称がよくわからないものを調べるのは一苦労。調べた結果、マウスピッキング処理で実現するものらしい。実装にあたっては、こちらのサイトを参考にさせていただきました。操作ハンドルの実装は長年の夢。シミュレーション表示用のプログラム開発は、だいぶ満足したので、いったん中止。ヒト型ロボット開発を再開することにします。(0)Qt4に移植中OpenGLで書いたシミュレーション表示用のプログラムをせっせとQt4に移植中です。Qt4には、OpenGLを扱うためのモジュールが用意されているので、glutの代わりにそれを使用します。gluの関数はそのまま使用できますが、glutの関数を使っていたところはすべて書き直しです。Qt4に慣れないこともあり、けっこうてこずっています。(0)Qt4GUIを扱えるようになりたいので、Qt4(キュート)の勉強を始めました。Createrに大量のすばらしいサンプルプログラムとチュートリアルが付いていました。単純なボタンから、OpenGL、XML、ネットワーク関連といったものまで、様々なサンプルがありました。これだけあれば学習には困らないかと。OpenGLと組み合わせてロボットのシミュレータを作る予定です。(0)諦める衝突、無理。(0)接触のシミュレーションができない自由落下する剛体運動のシミュレーションはできるようになったのですが、床との接触のシミュレーションが上手くできないです。本の通りにしても物体が地面に沈み込んでしまいます。接触力の係数を変えてみたら、今度は物体が吹っ飛んでいってしまいました。(0)動力学シミュレータを作り始めました動力学シミュレータを作り始めました。「ヒューマノイドロボット」(オーム社)の"6章:動力学シミュレーション"を実装してみたいと思います。環境整備と言うことで、シミュレーション表示用のプログラムを作りました。以前の3次元プロット用に使っていたものを機能強化。画面上で文字列の描写ができるようになりました。シェーディングもできるようになりました。陰影付けはまだですが、一応使えるものができたので完成です。これで動力学シミュレーション本体に取り掛かれます。平面2リンクロボットの逆運動学問題をヤコビアンを用いた数値解法で求めてみました。ヤコビアンを用いた数値解法は汎用性があり、平面2リンク以外のロボットでもヤコビアンを計算できれば、容易に逆運動学問題が解けるようになります。田原健二ヤコビアンを用いた逆運動学の数値解法はいくつか方法があるようです。今回の方法は、ロボットの手先と目標との位置誤差を、ヤコビアンの逆行列を用いて小さくするな間接角度を求め、収束計算する方法です。ここでは簡単に手順の説明をします。q(2)ロボットの順運動学とヤコビアンを求められるように準備しておきます。(p2(1),p2(2))。これがロボットの手先となります。順運動学で、手先位置p2を求める。手先位置p2と目標位置rdとの位置誤差dpを計算する。位置誤差の大きさ|dp|が許容誤差以下であれば計算終了。なければStep4へ。位置誤差を小さくするための間接角度の修正量dqを計算する。dqし、Step1に戻る。フリーの数値計算ソフトのScilabで計算しました。2,2]);end実行結果です。手違いで、ここ数ヶ月間に開発してきたプログラムを消去してしまいました。都合によりlinuxを再インストールしたのですが、その際に全部消去してしまいました。再インストールの前にバックアップをとっていたと思っていたのですが、どうやらバックアップをとるディレクトリを間違えていたようで・・・。以前とったバックアップが他のパソコンにあったのですが、ファイルの最終更新日が12月6日・・・。(0)教育用レゴ拡張セット購入しましたふと、レゴマインドストームの部品がほしい、いろいろと組み立ててみたい、という衝動に駆られました。マインドストーム本体はいらない(高いから)、部品だけほしい、と思いネットで探してみるとちょうど欲求を満たしてくれそうなものがありました。教育用レゴ拡張セット(9648)です。いろいろなパーツが偏りなく、必要十分にそろっています。値段もあまり高くない(1万円くらい)です。部品は袋に入っていたので、開封して適当に分類してみました。転がり間接を組み立ててみました。最近、C言語のプログラム中からgnuplotを呼び出し、グラフの表示をする方法を知りました。パイプを使ってgnuplotにコマンドを送る方法です。特別なライブラリ等を使用するわけではないので気楽に利用できます。こちらのページを参考にさせて頂きました。C言語からgnuplotを操作するいままでは、Cプログラムで計算したデータをファイルに書き出して、エクセルやらgnuplotなどでグラフ表示処理していましたが、プログラム中でグラフを処理できるようになるのでかなり便利です。プログラムの実効中に逐一データをグラフ処理できるので、リアルタイムでグラフを表示したりできます。工夫すればグラフのアニメーション表示もできます。試しに1.sin(x)をプロット2.配列のデータを曲線と点で同じグラフに重ねてプロット3.三次元プロットのアニメーション表示するプログラムを作成してみました。以下のプログラムはLinux環境下で実効できます。gnuplotのインストールが必要です。C言語のプログラムでgnuplotにグラフを描かせる(Windows)を参考にしてください。0;}パイプを通す方法だと、gnuplotだけでなく、OctaveやScilabもCプログラム中から利用できます。(0)ODEの導入メモubuntu9.10でODE-0.11.1を使うためのメモです。こちらのページを参考にさせて頂きました。OSXODEをインストールする前に、OpenGL関連をインストールしておきます。freeglut3-dev次に、ここからode-0.11.1.tar.gzを適当な場所にダウンロードし、展開します。installこれでODEのインストールは完了です。ode/demoにデモプログラムが入っているので、試しに実行してみましょう。次に、自分でプログラムを作成するためにdrawstuff関連の設定をします。インクルードファイル・ライブラリファイルのコピー。ldconfigtexturesを参照可能な場所に置く。/usr/local/share/drawstuff/以上で、自分でODEを使ったプログラムを作製する準備は完了です。<drawstuff/drawstuff.h>textureを利用するときは/usr/local/share/drawstuff/texturesを指定します。-lglutとします。コンパイル時のオプションにに-DdDOUBLEをつけないとエラーが発生するようです。C++)のインストールと利用のメモです。liboctaveの利用はこちらを参考に。数値計算(リンクとインストール)octaveの最新版は3.2のようだが、ubuntu9.10での公式パッケージは3.0.5なのでこちらを利用。readline-commonで大丈夫だと思う。したら他にも必要かも。/etc/ld.so.confに/usr/lib/octave-3.0.5を追加する。octave3.0-htmldocで/usr/share/docにoctave3.0-htmldocがインストールされます。(0)新しいPC買いましたロボット開発用に新しくPCを買いました。TA785G3あまり考えずに、3年くらい使えればいいと思い、BTOで安い構成で購入したのですが、Linuxの環境を整備するのにかなり手間りました。Ubuntu8.04を入れ、ART-Linux化して使う予定だったのですが、その前に、試しにUbuntu9.10を入れてみました。無理だとは思いましたが、だめもとでART-Linux化を試みるものの、インストールの途中でエラーが発生しインストールできませんでした。仕方がないので、当初の予定どうり、Ubuntu8.04をインストールすることに。ところが、Ubuntu9.10では自動でつながったインターネットがUbuntu8.04ではつながらず。ネットで調てみると、どうやらマザーボードのオンボードLANのドライバがおかしい模様。別のPC経由で最新のドライバを入手し、試してみるもすもうまくいかず、あきらめてPCIのLANボードを購入することにしました。近所の家電量販店でLANボードを購入し、取り付け後、再インストールすると、無事接続。インターネットには接続できるようになったものの、別のところで問題が発生しました。画面の解像度がモニタに合っていなかったので、設定を変更してみたが直らず。内臓グラフィックのドライバがうまく有効にならず、画面がおかしくなる。試すもどうにもなりませんでした。結局、ART-Linuxは古いPCで使い続けることにし、新しいPCにはART-Linux化をあきらめ、Ubuntu9.10をインストールすることにしました。LANボードが無駄に・・・。Ubuntu9.10だと、LANの問題も、画面の問題も大丈夫です。起動も8.04のときよりも早くなっているので、9.10をART-Linux化できたら一番よかったんですけどね・・・。