まじかる☆マリオネット: 開発日誌 (200710)

2007/10/31
22:24 (作業メモ) sched_setscheduler() について

カーネルHZ変更の日記を見たBAKさんから「sched_setscheduler使ってみた?」との指摘。

「なんだっけ?それ?」と思って man を見る…
…が英文だったので面倒になってJM Project

SCHED_SETSCHEDULER
sched_setscheduler() は pid によって識別されるプロセスのスケジューリング方針やそれに関連するパラメータを設定する。
(中略)
SCHED_FIFO は 0 より大きな静的優先度でのみ使用でき、 SCHED_FIFO プロセスが実行可能になった場合、すぐに、現在実行している SCHED_OTHER か SCHED_BATCH プロセスと置き換えられる。 SCHED_FIFO は時分割のない単純なスケジューリング・アルゴリズムである。

あ…そいえばそんな機能がありましたね…
しかし
SCHED_FIFO や SCHED_RR でスケジューリングされるプロセスが停止せずに無限ループにおちいると、他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、ソフトウェア開発者はコンソールのシェルの静的優先度をテストするアプリケーションよりも常に高く保つべきである。

きっとこの地雷を踏むに違いない。

カーネルHZの変更はうまくいった気がします。(LinkUpするようになりました)
これでダメだったらスケジュールをいじる方向で。

あれ?でも割り込みが起きなければタスク切替え間隔はTICK単位なんじゃ…
シリアルポートの送信バッファが空になったら割り込み入ってくれるのかな?

---
今月の日記は写真が一枚もない…



[☆コメント] [△先頭へ]


2007/10/30
17:54 (作業メモ) HZを変更したらNICがLinkUpしなくなった原因

「カーネルのHZを変更したらNICが動かなくなった」件、答えらしきものを見付けたのでメモ。

NICのドライバ /drivers/net/ep93xx_eth.c から eth_init()に "Link is down" の文字を見付け、phy_init(), phy_autoNegotiation()と順に辿っていくと
mdelay(1000);//delay 1 second.
という行が。
待ち時間 mdelay(1000)でレジスタからの値読み出しを3回繰り返してNGだと"Link is down"。
もしかしてこれ??

そして mdelay()の実体を求めて /include/linux/delay.h へ行くと
#define mdelay(n) (\
        {unsigned long __ms=(n); while (__ms--) udelay(1000);})
さらに udelay() の実体を求めて/include/asm-arm/delay.h へと辿ると、
#define udelay(n)                                               \
        (__builtin_constant_p(n) ?                              \
          ((n) > (MAX_UDELAY_MS * 1000) ? __bad_udelay() :      \
                        __const_udelay((n) * 0x68dbul)) :       \
          __udelay(n))
ここで、実体を辿れなくなって「???」と思っていたら、実体はアセンブラ。
/arch/arm/lib/delay.S
ここのコメントに
* loops = (r0 * 0x10c6 * 100 * loops_per_jiffy) / 2^32
とあって、「100ってもしかしてHZの100?」という気がするけど、ARMのアセンブラを理解できない。

「mdelay()の宣言を udelay(10000) に変えちゃおうか…」
と思っていたのだけど、ふと気づいて「arm linux delay.S HZ」とかでぐぐってみると、新しいカーネルではパッチあたってる模様。
Linux-2.6.16 と2.6.17のdelay.Sのdiff
コメントには
* loops = r0 * HZ * loops_per_jiffy / 1000000
udelayの実体がHZを考慮しないコードになってたのね。(と思う…)

ここだけ変えて直るのかな…、他のソースも比較しなきゃだめかも。
(Armadilloの開発環境で配られてるのは、まだ2.6.12のままなのです)


[☆コメント] [△先頭へ]


13:03 ロボファイト6エントリー&進捗

うう…結局エントリー前に動くようにできなかった…
二泊にして懇親会も…と思いましたが土曜の午後には帰る予定。
あ、二泊にして土曜は懇親会、日曜は天使の里っていうのも贅沢でいいかなぁ…

---
/include/asm-arm/param.h の HZ を1000 に書き換えてみたら
NICの初期化時に「Link is down」と出て LinkUpしてくれなくなりました。
なんとなく初期化時の処理待ち時間が短くなってるような…

カーネルを何度も更新してるとflashの寿命が短くなりそうなのでデバッグを有効にしたモジュールを作って試行錯誤しようかと。
モジュールはzmodemとかで転送するしかないね。

…なんてやってないで、Kernel側は諦めて別のアプローチをしたほうがいいかも。


[☆コメント] [△先頭へ]


2007/10/29
15:52 アンテナの調整 (Infoseekの広告対応)

最近Infoseekを使っている日記の更新チェックが良く狂う(更新でもメンテでもないのに更新と認識)

「広告部分は削除しているはずなのにー」と思っていたけど、ちゃんと調べてみたらMozillaで見てるコンテンツとクローラで見てるコンテンツに差がありました。
User-Agentの文字列を見て Mozilla という文字があればJavaScript版の広告を、なければテキスト版の広告を埋め込むような動作をしているみたい。>Infoseek

ということでクローラのUser-Agentを修正してテスト中。
これでもうちょっとは精度があがるかな…

最近はRSSに広告が入ったり、ブログにコメントがついてもRSSの更新時刻が変わったりするサイトがあって面倒。

--- 2007.10.29 18:16 追記
うーん…
geocitiesもUser-Agentによってコンテンツを切替えていたみたい。
更新チェック結果が大変なことに…
ごめんなさい。みなさま。


[☆コメント] [△先頭へ]


2007/10/27
11:31 (進捗) 三歩進んで二歩さがる

サーボアサインテーブル修正完了!フィードバック処理修正完了!A/D入力ゲイン修正完了!
各部修正完了確認!システム起動承認!

メインCPUパワーON!MSPスタートアップ!
サブCPUパワーON!CPUリンク確認!
センサーモニタリング正常!ジャイロ、ACCSニュートラル値正常!

アクチュエーターパワーON!
左肩、左脚サーボフィードバック異常解消確認!
サーボ駆動系正常、サーボ制御系正常!

パワー全開!直立姿勢へ!

---
「直立姿勢移行完了!システムオールグリーン!」と行きたかったのですが…

それぞれのサーボの制御には問題がないのに、駆動するサーボ数を順番に増やして行くと急に応答が鈍くなって、角度変更命令が反映されるのに数秒かかるように…
そして全サーボを駆動状態にして直立させると、それ以上の命令を受け付けなく…

んーーー
PICから先の電気系統はいじっていないので、「サーボ制御信号の出力電流が足りない」っていうのはなさそうな感じ。
予想される原因は
  • メインCPUからPICへのサーボ制御角情報送信が1サイクル(20msec)内に終わってない」
    (駆動するサーボがひとつ増えるごとに送信データが2byte増える)
  • PICからセンサー値を受け取った後、サーボ制御角を送るように変更したので送信に使える時間が減った
  • PIC側にセンサー処理を加えたときに、受信処理が1サイクルで終わらなかった場合の考慮を忘れてたかも…
  • LinuxカーネルのTICKがデフォルト(10msec)のままなので、送受信中にタスクスイッチが入って間に合わないのかも

「センサー処理を一時的に無効にする」のと「カーネルのTICKを1msecに変更」の両方を試すしかないかな…
歩行動作を確認してから「ロボファイト6」にエントリーしたかったんだけど…間に合わないかも。
(明日は知人の結婚式に出るので作業できない)

---
参考:
Kernel2.6からx86はTICK=1msec(HZ=1000)になりましたが、ARMはTICK=10msecのまま(HZ=100)です。


[☆コメント] [△先頭へ]


2007/10/25
1:50 (進捗) サーボアサイン修正完了

上半身のサーボアサインが変わったのをようやくアサインテーブルに反映。
インタプリタ経由で腕や腰を動かしてみて間違いないことを確認。

同時に、相変わらず一部のサーボがプルプルしていたり、ニュートラルが狂っていたりする真の原因が判明。
「ジャイロ入力のゲインとニュートラルが未調整だから」と思っていたけど、違いました。

モーションスクリプトプレイヤーが各関節にジャイロのフィードバックをかけるときに、関節番号ではなくサーボ番号決め打ちでフィードバックしていたから。

で、アサインテーブル書き換えてもプログラムは古いアサインのままフィードバックかけるから、全然関係ない関節のサーボがプルプルしてたのでした。
週末までにこれを直そう。


[☆コメント] [△先頭へ]


2007/10/24
17:37 (コイル部)(NEWSメモ) オリンパスが完全ワイヤレスのHMD試作機を開発

espyさん日記(2007-10-24)経由
ITmedia +D LifeStyleから

“完全ワイヤレス”で、HMDはファッションになるか?
 
オリンパスの未来創造研究所が試作機として開発した「モバイル Eye-Trek慧眼」は、視界を隠すことなく映像を表示する眼鏡型のHMD(ヘッドマウントディスプレイ)だ。
 この試作機には従来のHMDのようにバッテリーや映像出力と接続するコードがない。眼鏡のつるの部分に無線モジュールとバッテリーを内蔵することで、完全ワイヤレス化を実現したのが大きな特徴。

かっこいい!!試作品貸して欲しいです。(ロボの操作に使う)
どっかの展示会かなんかで実物を見られるといいのに。


[☆コメント] [△先頭へ]


2007/10/23
1:39 (進捗) …ゼロ (汗

3日間も休みがあったのに…(月曜は派遣先の創立記念日)

録画しっぱなしで見てなかったNHKアニメと、二週間ためてしまった新聞を見てたら終わっちゃいまいした。(「ガンダムOO」の録画はまだ見てない)

秋葉原ロボット運動会にも出かけず、部屋でごろごろ。
ロボファイトのエントリー〆切まであと1週間しかないんだから、しゃんとしてよっ!

「上半身のサーボの配線&動作テスト」だけでもエントリー前に終わらせたい…です。
あとは無線周りの配線&動作テスト&無線操縦周りのプログラミング。

---
某所からいただいた「エンジェリックレイヤー(アニメ版)」を見てモチベーション高めないと…
(そして作業時間が減ってしまうという罠)


[☆コメント] [△先頭へ]


1:31 (コイル部) 暗号式ジェネレータ

はてなグループ 電脳コイルをふらついてて見つけた。

暗号式ジェネレータ (暗号屋日記 2007-10-13)
「暗号式」を生成するページを作ってみました。
名前を入れると、対応する暗号式を表示します。

こーいうのをサクッと作れる人が羨ましい。



[☆コメント] [△先頭へ]


2007/10/21
15:26 (録画メモ) 10/21(日) 22:00- NHK教育 ETV特集 日本のSF50年

F1本戦の放送時間を確認しようとして偶然発見。

Yahoo!テレビ から
ETV特集 21世紀を夢見た日々・日本のSF50年
21世紀を夢見た日々・日本のSF50年▽鉄腕アトムウルトラQエイトマンSF作家と意外な関係▽星新一の幻の映像が▽小松左京と大阪万博▽筒井康隆の名作秘話▽少年ドラマシリーズ▽宇宙戦艦ヤマト誕生▽栗山千明アキバ探検▽小山薫堂

10月21日(日) 22:00〜23:30 NHK教育

ETV特集公式ページ 10月21日 放送予定 から
(前半略)高度成長期の日本に生まれ、半世紀を経て世界に認められるようになった、日本SF。その50年にわたる歴史をたどりながら、育まれた遺伝子がどのように発展し現代日本文化を生み出したのかを浮き彫りにする。

少年ドラマシリーズの部分だけでも映像が欲しいです。

---
なんで放送前と放送後でURLが変わらないようにしないかな…
(バックナンバーのURL見付けたのでリンク先修正)


[☆コメント] [△先頭へ]


2007/10/19
12:00 (URLメモ) テレグラス(HMD) 2種 (T4-N, i-bean)

IRC経由
[Teleglass]T4-N
従来の両眼用ヘッドマウントディスプレイ(HMD)の欠点であった重いという点を解消し、約50gという軽さを実現しました。ヘッドマウントディスプレイを眼鏡に取りつけたことにより、モニターが目全体を覆う必要がなく違和感のないサングラス感覚で掛けることができ、また周りの景色も見ることができるため電車や飛行機のなでも自然に、また安心、快適に映像、音楽を楽しめます。

買って試すには価格がちょっと…

ASIAGRAPHで展示してたi-beanで我慢するかな…
従来のヘッドマウントディスプレイは、両眼で視野をふさいでいましたが、i-bean(アイビーン)は視界を確保しながらモニタに映し出される映像を楽しめる新しいディスプレイです

単眼で画面も狭いけど、吸盤には磁石でくっついてるだけなので、邪魔なときはすぐに除けられて便利そうでした。
説明員の方の話では、画像を上下左右反転できるらしい(未確認)。
じゃあ左右両方に付ければ両目視に… (邪魔だって)

まあ、これも気軽に買える値段じゃないけど。
(秋葉原UDXの3Fだか4Fだかでも買えるらしいです)


[☆コメント] [△先頭へ]


2007/10/16
21:58 最近の進捗とか (A/D入力まわりの整備中)

「初音ミク」ネタばかりだと作業してないみたいなので。

☆先々週の日曜(10/7):秋葉へおでかけ
ロボット王国でKRS-786のバルク×2とPDS-3014ICS×1を購入
「3014ICSの基板をPirkusのPRS-321に移植してポジションキャプチャを…」と思っていたら、先週の飲み会(ロボスポの一周年イベントの後)で、えまのんさんから「あれはただのICSでREDじゃないよ」との指摘… orz

☆先週の月曜(10/8):関東組ロボット練習会#23 (SDレイズナーに不戦敗)
☆先週の作業:
  • 足サーボのぴくつきの原因調査(詳細原因不明のまま)
  • メインCPU側のA/D入力まわりの処理にデバッグログをいくつか追加
  • ログから、AD0の値とAD4の値が相互に影響しあってることが発覚。
    (AD0は電源電圧監視用の分圧抵抗、AD4はピッチ軸加速度センサに接続)
  • プログラムが悪いのか回路が悪いのか試したけど判らないまま。
  • 「測定対象のインピーダンスが高すぎてA/Dモジュールのコンデンサの充放電が追い付いてない」可能性に気づく。
    (PICのデータシートを確認したら、「The maximum recommended impedance for analog sources is 10 kΩ.」だって)


☆先週の土曜(10/13):秋葉へおでかけ
UDXでやってたASIAGRAPH 2007にでかける。
その後、ロボスポの一周年イベントへ。KHR-1HVのビンゴが始まる直前でした。
もちろん外れ。(一つのリーチも無かった)

☆こないだの日曜(10/14)
  • 電源基板を降ろして分圧抵抗を1kΩと3kΩに変更。
    (100KΩの抵抗が3つ直列になってた…)
  • 電源基板を組み直して、A0〜A4まで正常に値がとれることを確認。
  • PIC側のA/D入力処理を変更:入力値(12bit)を二倍して上位8bitを取得するように(テスト待ち)


---
改修したPICプログラムの動作が確認できたら、センサー値のニュートラルとゲインの調整かな。
そこまで終われば、ようやく新システムでの歩行試験。

…なんだけど、今日は風邪で熱っぽいのでもう寝ます。



[☆コメント] [△先頭へ]


2007/10/11
15:59 (URLメモ) VOCALOID2「初音ミク」に喋らせる実験

イカロスさんの日記(2007-10-11) 経由でYouTubeを観てて見付けた。

VOCALOID2「初音ミク」に喋らせる実験、高精度エディット第一

こ、これならいけるかもーー!(何が?
(でもすごく大変そう)

-----
メモ
ミクの喋りを試行錯誤してるのを↓のページで見掛けたのだけど接続できなくなってる。
http://diary.imou.to/~AoiMoe/2007.09/late.html#2007.09.29

-----
歌声は「幼稚園くらいの子がテレビで聴いた歌を歌ってる」感じね。


[☆コメント] [△先頭へ]


2007/10/09
20:06 みっくみっくにしてやんよ

ひさしぶりに野尻ボードを見に行ったら「初音ミク」と「アイマス」に席捲されてて驚き。
Youtubeやニコニコ動画もすごいことになってる模様。

DTMマガジンの11月号に「初音ミク体験版」が付いてるらしい。
んでも、のきなみ売り切れらしい…
機能限定ではなく試用期間限定(今年一杯でインストールから10日間)ってことなので買わなくてもいいかな…

単語辞書がないのでふつーに喋らせるのは難しいみたい。
OSSの音声合成プロジェクトから辞書持ってきたりできないのかな…

ゴーレムくんの起動シーケンスを歌うように喋ってくれたりすると楽しいかも…かも…

それよりもちっちゃなドールを浅草ギ研の電磁石サーボで動かして…


[☆コメント] [△先頭へ]


2:00 足のぴくつきの原因…

コイズミさんの日記を読んでて気づいた…
ジャイロセンサーのニュートラルとゲイン調整やってなかった… orz
(今までL-CardのA/DだったのをPIC側に移したので)

だから足首のニュートラルずれてたのね。

馬鹿すぎ…


[☆コメント] [△先頭へ]


2007/10/08
23:46 関東組練習会#23

石川さんのSDレイズナーをガツンとぶっ飛ばしたかったのですが…

新コアを組み上げてサーボに通電してみると、足サーボがプルプルと震えて止まらない。
むー、どこが悪いんだろう…
練習会の会場では「旧基板流用のためにケーブル引きまわしたから?」と思ってたけど、良く考えると足周りの配線は変更してない。PIC側のプログラムを改修したときにバグを作っちゃったかな…

…ということで今回久しぶりに参加したゴーレムくんでしたが一歩も動けずに終了。「初めてゴーレムくんを見ました」というコメントが多くて嬉しかったり悲しかったり。

練習会では、しまけんさんとラムダくんに会えて嬉しかったです。
プログラムや動作も見せていただけたし。
会場を近場にして良かった。(笑

---
あと1ヵ月でちゃんと動く状態まで戻さなきゃね。


[☆コメント] [△先頭へ]


2007/10/05
1:33 今日の進捗

切れていたケーブルをようやく修復。
…といっても、ピンを一つ圧着しただけ… (ぉぃ

月曜の練習会までに動くようにしなきゃ。


[☆コメント] [△先頭へ]


2007/10/04
0:39 なぜLinuxボードを使うのか

という質問メールをいただいて色々考えていたのですが…

「それが私には楽しそうだったから」

が一番の理由のようです。

(実際には、やればやるほど自分の技術のなさに絶望しています)

---
あ、もうひとつ 「『市販品を買ったら負け』な気がするから」


[☆コメント] [△先頭へ]


2007/10/01
23:54 「神無月」 一気に涼しくなりました

お彼岸よりちょっと遅くなったけど。
朝が冷えるようになったので風邪ひかないように注意。

ロボファイト6」 まであと2ヵ月ありません。
無線操縦くらいまでは完成させたいね…

もうあと3ヵ月で今年は終わり…


[☆コメント] [△先頭へ]



  • このサイトは「人形つかい」が提供しております。
  • リンクはご自由に。(そんな人いないだろうけど…)ただし、トップページ以外のURLは変更になる可能性があります。
  • このサイト内のコンテンツ(ドキュメント、画像、プログラムなど)は特に明記しない限り、「人形つかい」が著作権を保持しています。転載する場合は御連絡ください。引用は常識の範囲でどうぞ。

開設日: 2002/12/10
管理者: 人形つかい/魔女みならい
連絡先: witch-marionette at mtlab.jp (" at " は "@" に置き換えてください。)