2010年4月18日日曜日

メモリトニアン演算子

どうも、最近倒立振子実験にちょっと成功したQです、こんちには。

倒立振子といっても20秒くらい立ててるのに成功しただけなんですけどね。しかし、そこから得られるものは沢山ある上に、制御論の一種登竜門なので前からやってみたかったわけです。

RoombaとかLinuxとかもっと身近になるといいなあと思いつつも、まだまだ先は長いなと等と。というわけでメモ。




①Linuxでファイルシステムの操作
パーティション切ったり、起動ディスクにしたり。
fdisk デバイス(/dev/sdbとか)
ディスクのフォーマット
mkfs -t フォーマット デバイス
(mkfs -t vfat /dev/sdbとか)

fat32は32GBまで、また一ファイル4GBの制限あり。




②USBメモリでバックアップ
持っていたUSBメモリがバックアップとして全く役に立たなかったので、容量の大きいUSBメモリを買った。
Transcend JF V30 16GB 2500円
です。Linuxで認識は問題なかったが…ファイルの保存が上手くいかない。FAT32でフォーマットすると、SVNのhotcopyがおかしくなる。一方、ext2とかLinux用のフォーマットにするとzipファイルの保存が上手くいかない。
多分、書き込みできない領域とか、デバイス固有のメモリのマッピング?とかがあって、それの影響でおかしくなってんじゃないかと想像してみる。windowsでフォーマットしてLinux(CentOS)で使って見たがdemsgで確認するとfatがパニクってた。駄目駄目。
とりあえず、今のところうまくいってるのが、

Linux、fdiskでfat32(LBA)にフォーマット
mkfs -t vfat /dev/sdb1
USBメモリを、基盤に直接取り付けられてるインタフェースに挿す。

なんか相性問題とか色々あるのかな。




③LinuxでBluetooth,SPP通信
僕にとってBluetoothとは無線シリアル通信用の道具なのだが、これをLinuxで使ってみようと思った。昔は色々あったようだが、今は殆ど自動で認識できるみたい。とりあえずplanexのminiEDRは上手くいった。

hciconfigで認識されている送信デバイスの情報を確認できる。
hcitool scanで通信できる受信デバイスとそのMACアドレスを発見する。
rfcomm bind 1 受信側デバイスのMACアドレス
rfcomm1というデバイスファイルが出来るので、それをcomポートとして使う。
minicomを設定して起動すればOK。

bind設定を切るときは
rfcomm relese 1

ubuntuでもCentOSでもいける。



④処理優先度の変更
root権限が必要だがniceというコマンドでプログラム処理の優先度を変更できる。
nice -n -20 プログラム
とすると最優先で実行。
nice -n 19 プログラム
とすると優先度が最も低い状態で実行。

なんで必要かというと、どうもシリアル通信などをするときのスケジューリングに関わってくるっぽい。通常のプログラム起動では、シリアル通信のインターバルが遅くなったり速くなったりして不安定なのだが、最優先で実行すればこの影響は少なくなる。

倒立振子の実験で何やってたかというと、ボール式マウスで角度を認識して、PCで必要な移動を計算、そしてPCからシリアルで命令を送るって感じなので、この送信タイミングがおかしくなられると辛い。






ブログにも
外部メモリの
役割が

0 件のコメント:

コメントを投稿