日記的「駄目」プログラミング Yet Another Hacking Life

Archive for the ‘ロボット’ Category

PandaBoard始めました

09.03.2011 · Posted in PandaBoard, ロボット

ちょっと時期を逸した感がありますが、ロボットの中央制御用にPandaBoardを買いました。研究用ロボットでスタンダードな構成である「ノートPC -> マイコン -> アクチュエータ・センサ」のノートPCの部分に相当する役割です。 購入の理由は中央制御自体をロボットに組み込んでしまいたかったというところから。あと、技術的に寄り道をしてARM開発を体験しておきたいというところ。 PandaBoardについては検索すれば概要はいろいろ出てくるので、簡単に説明するとTexas Instru...

最近のお勉強いろいろ

11.13.2010 · Posted in Matcha, 日記

Matchaは行列ライブラリとグラフライブラリで遊んでるところ。参考書読みつつ、既存のライブラリのインターフェースも参考にしようと思う。IPCまわりは棚上げ。まじめに設計しないといけない。 マイコン熱が盛り上がっててAVRの環境を整備中。小規模なものはAVR、大掛かりなものはARM Cortex-M3をメインに使っていこうかと思う。 ドキュメンテーションツールSphinxの勉強も始めた。Doxygenと勝手が違うので慣れるまで大変そう。とりあえずUbuntu 10.10に入ってるバージョンが古い...

Harris Corner Detectのヘッセ行列の固有値の符号の話というかSIFTの話

10.23.2010 · Posted in ビジョン, 日記

SIFTでキーポイント候補からエッジ上に存在する候補を取り除く際にHarris Corner Detectと同等の手法でエッジ判定を行っているそうな。と、いう話を『第6回「コンピュータビジョン最先端ガイド」勉強会』に行って聞いてきた。 追記(2010/10/26):追加の考察および思い違ってたことがあったので「続Harris Corner Detectのヘッセ行列の固有値の符号の話というかSIFTの話」という続きを書いてみた。

Matcha合宿、秩父でだらだらしている話

08.12.2010 · Posted in C++, Matcha, 日記

現在、秩父市の夢庵でこの日記を書いている。3泊4日でホテルに泊まり、一人勉強するという一人合宿である。今日は3日目。 勉強と言ってもやれたことはC++ Coding Standardsを読み直しただけだが。適当な場所がなくてほとんどドライブになってしまった。まあ休養も兼ねてるからいいんだけどさ。 Matchaの数学ライブラリに手をつけ始めていて、行列クラスの近代的なデザインに悩んでいた。上記の本を一通り読んで妥協すべきところと、実装できるところの落としどころが見えたのが収穫。 いわゆるC++の定...

Matchaの進捗と言語の話

06.30.2010 · Posted in C++, Matcha, プログラミング, ロボット

相変わらず週末だけのコーディング。先週末は本格的に体調を崩してキーバリュークラスのコピーコンストラクタを書いただけだった。 最近悩んでるのが言語とコンパイラ。現在はC++・GCC 4.4で開発している。 で、C++0xを使いたい。Matchaが形になるのは今年の秋か冬だし、そのころにはC++0xの仕様も確定してるだろう(?)。GCC 4.6ならかなりの仕様が実装されるだろうし。長期プレイで作っていくなら未来に普及する現在の最新を取り入れたいところではある。 フリーなコンパイラでいうとGCCとLL...

ROSの話・Matchaの話

06.25.2010 · Posted in Matcha, プログラミング

Willow GarageがROSというロボット開発用ミドルウェア(ROSではメタOSと呼んでいる)を去年から公開していて最近になって話題になりはじめている。俺も最近知って、ドキュメントを流し読みしたりしている。 RTMがコンポーネントのデータ仕様を規定しなかったのに対し、ROSでは規程しているのがアーキテクチャの面での大きな違い。さらに「ロボット作るならこのデータいるよね」っていうロボットのコンフィグなどについてもファイル仕様(XML)を決めたりしている。大きいのはそうやって規定したデータ仕様...

MatchaのIPCのフォーマットはMessagePack(多分)

06.25.2010 · Posted in Matcha, プログラミング, ロボット

ロードマップではIPCはまだ先なんだけど、実装方法はちまちま調べてる。 RAMディスク上のファイルで共有ロック・排他ロック・inotify・epollを活用してブリテンボードを作るというのもその一環。 で、そのブリテンボードにどんなフォーマットのデータを載せるかという話。RTMの場合、(ブリテンボードではなくデータポートという呼び名だが)データフォーマットに規定がないっぽい(流し読みしかしてないが)。データポートの設計者がバイトフォーマットを(多くはC/C++の構造体として)定義する。ROSの場...

MatchaのGUIはGTK+

06.21.2010 · Posted in Linux, Matcha, プログラミング

移動ロボットのプログラムをしていると動作中のセンサデータをモニタしたいというシチュエーションは多い。で、GUI。 Matchaはフレームワークなのでアプリケーションのモデルを縛ることになる。一方で低レベルの部分でIPCの実装を提供する。やろうと思えばMatchaアプリケーションのモデルを離れて自前でイベントループを回すことができる(ようになる予定)。 ここでGUIにからんで二つの選択肢がある。ひとつはMatchaフレームワークでGUIを提供する方法。もうひとつは既存のGUIフレームワークからMa...

Linuxでファイルをepoll?その2

06.21.2010 · Posted in Linux, Matcha, プログラミング

epollって時点でLinux限定だよな。 ってのはともかく方法が分かりました。inotifyを使用すればファイルへの変更などのファイルシステム上のイベントをselect系で監視することができます。当然read()でもできます。Linuxにどっぷりですが、どのOSでもファイルの監視くらいはできるだろうから採用してもいいでしょう。 inotifyはかなり便利でディレクトリを監視すればディレクトリ以下で起きるファイルの生成など多くのイベントを監視することができます。ちょろりと活用方法を企み中です。 ...

Linuxでファイルをepoll()?

06.19.2010 · Posted in Linux, Matcha, プログラミング

そろそろMatchaのIPC実装の目処をつけようかと、実験コードを書き始める。 Matchaの基本コンセプトとしてユーザスペースでのポーリングを極力抑えるというものがある。で、デバイス関係はデスクリプタをまとめてepoll()で待つという実装をしている。 IPCにはメッセージパッシングやブリテンボードなどいくつかのモデルがあるが、ブリテンボードについてはRAMディスク上のファイルで実装しようかと思ってた。epoll()のトリガでflock()でRCUなら楽勝だろうと。 で、実験コードを書いたが動...

Matchaの進捗

06.13.2010 · Posted in C++, Matcha, プログラミング, ロボット

相変わらず週末に数時間という状況が続いている。そのうえ最近は週末にイベントが立て込んでてコーディングが進まない。 イベントクラスに乗せるデータはキーバリューベースで実装することにしたのは前に書いたっけ?とりあえずキーバリューのクラスを実装して、タイマイベントポートのイベントをキーバリューベースで取得するサンプルソースが書けるようになった。キーバリューのディープコピーが実装されていないところがバグとして残っている。スレッディングとスレッド間のイベント送受信まで実装するのがマイルストーンになるかな。...

Matchaを作る理由

06.06.2010 · Posted in Matcha, プログラミング, ロボット

徒然と書く。 趣味です。と、言ってしまえばそれまでなんだけど、センサドリブンな自律ロボットのフレームワークに必要な仕様を見極めたいという動機もある。それはつまり何かというと、センサドリブンな自律ロボットのソフトウェアの理想型を追求するという問題でもある。アプリケーションごとに問題は異なるし、異なる問題に対して最適な設計をするのがエンジニアリングなのかも知れないが、それでも何かしら問題に共通する設計の本質というものがあると思う。 もうひとつ実際的な面では2011年度のつくばチャレンジに参加するにあ...

Matchaのイベントデータ構造

05.28.2010 · Posted in Matcha, プログラミング

Matchaアプリケーションはイベントドリブンな動作モデルが基本です。複数のイベントポート(イベントポートという名称は暫定)からのイベントを共通のハンドラで補足します。そのためイベントクラスは抽象クラスで表現されます。 シングルプロセスで完結しているアプリケーションモデルであれば、またデバイス等の拡張の要求が少ないライブラリであれば特殊イベントクラスを実装、dynamic_castでデータの参照でもよかったでしょう。しかしMatchaは分散プロセスを念頭においており、イベントはプロセス間で透過的...

SheevaPlugを買いました

05.28.2010 · Posted in ロボット

eBayで注文。届いたのは5月の25日くらいだったかな。 とりあえずUSBシリアルからログインしてIPアドレスを設定してSSHで入れるようにしました。結構発熱があるのがきになるところ。GPIOを使いたい気分ですが、どうも面倒くさそう。とりあえず最新カーネルをSDカードから起動できるようにするのを目指します。SDカードを調達しなきゃなー。8GBくらい欲しいな。eSATAがついてないのは地味に痛かった。1500円くらい増せばついたんだからつけておけばよかった。

Redmineを導入した

05.23.2010 · Posted in Matcha, 日記

Matchaのチケット管理にRedmineを導入しました。はじめTracにしようかと思ったんだけど、なんだかRedmineの方が評判がよろしいので。 導入は「Redmineのプロジェクトページ」で概ね足りたけど、Apacheで動作させるのは「サクッとCentOS 5.4にRedmine + Passenger環境をインストール」を参考にしました。 CentOSのRubyをアップデートしたり、Railsを入れる方が慣れてなくて困ったけどなー。 私生活もチケットドリブンにしようかしら。Googleカ...

ロボティクスフレームワークMatcha

05.22.2010 · Posted in ロボット

JavaとかCocoaがあるのでMatchaを作ってみる。イメージとしてはYet another OpenRTMな感じ?d-busでいいじゃんという意見をよそに自作してみる(d-busのスループットは一度計測しておきたいが)。C++を勉強し始めて12年くらい。そろそろ本気出すかという感じ。 コンセプトを宣言しておく。 OpenRTMのonExecuteが気にくわないので全部イベントドリブンにします。 POSIX準拠のOSで動作できる移植性を目指しつつ、OS固有の機能でパフォーマンスが向上するなら...

ロボットイベントカレンダー

05.13.2010 · Posted in ロボット

以前から作成しておきながら放置していたGoogleカレンダーの作成を再開しようと思います。 「ロボットイベントカレンダー」はロボット技術に関するイベントのスケジュールを集積することを目的としたカレンダーです。ショーとしてのイベントだけではなく展示会やセミナー、学会など製作・研究に役立つイベントも対象とします。 イベントの追加を手伝ってくれる方はお問い合わせください。