自作自律飛行ヘリコプター制作プロジェクト “FlyingPenguin”

ものを飛ばすのって憧れますよね。

今回自分と友人でちょっとこんな構想をしています。

元々は飛行機の予定だったのですが、飛ばせる場所がない&設計と制作が困難ということで断念。ヘリならどうにかなるらしいのでこちらに。

機体についてはしりません。丸投げしてます。自分が担当しているのは制御系。

構成

H8-3069F(Ethernetチップ搭載)

メインロータ回転数、サブロータ回転数、メインロータチルト方向、メインロータチルト角、気圧計、地磁気センサ、加速度センサ

↕Ethernet(TCP)

Zaurus SL700C

Debian、自作コントロールプログラム、Webカメラ(x2?)、GPSモジュール

↕USB

WM3500R(WiMAX(一日契約))

↕Internet

Motorola PHOTON

↕Wi-Fi

X60s

自作フロントエンドプログラム

かなり詳しく考えてはいますが、ちょっと時間がないので今日のところはこのへんにしておきます。

売りとしては物理層を選ばないこと、ゲームパッドによる直感的な操作、安価で可能。

ホントはRaspberryPi載せたいです。TCPを使用しているので簡単に載せ替えができます。

空飛ぶLinux、空中LAN

PC-2を復活させてみた(Debian+FluxBox)

あの激重な2004年製のPC-2(PC-AL50F)を復活させてみました。

  • CPU:Mobile Athlon XP-M 2000+
  • RAM:256MB
  • チップセット:VIA KN400A
  • GPU:VIA(S3) UnichromeIGP
  • 解像度:1024×768
  • HDD:40GB
  • 当時定価15万円 (こんなの買うとか情弱の至)
  • バッテリ:死亡
  • CPUクーラ:爆音/爆熱
  • 重量:約3kg

S3なのか…w

ディスプレイ設定が原因で、ほとんどのLiveCDが動かないというひどい機体。まあ昔お世話になったわけだし…。食卓の近くにおいてあったので結構油とかがついていたので綺麗に掃除しました。細かい傷がつくのが怖いのでメラミンスポンジは使わず、水とキッチンペーパと液晶クリーナだけ。すごい。傷がないから新品同様になりました。あんまりこいつのキーボード好きじゃないんですよね。

最初にPuppyLinuxを入れてみましたが、「軽い」を最優先に作られすぎていて色々と気に入らないので、Debian+FluxBoxを入れてみました。

PuppyLinuxを入れるときにディスプレイドライバで手間取ったので、同じ事をしないようにxorg.confをコピーしておきました。

最初に普通にDebianをインストール。Langは手間取るのを防止するためにいつものようにUS。GUIは入れない。ひと通り設定して、家族用の別アカウントを作成。権限はないw

fluxbox、xorg、Vim、sshなどをapt-getからインストール。xorg.confを移植。

startxで起動。…

動いた! すごい! Debian!!

一発で動くのは素晴らしいですね。PuppyLinuxでは認識すらしなかったトラックパッドをデフォルトで認識。すごい。すごすぎる。

FluxBoxはちょっと殺風景ですが、ちょっといじればそう悪くもありません。

液晶をカメラでとったので紋が出ていますが、実際には灰色一色です。後述のアイコンは適当にフリーのアイコンを使用しました。

その調子でchromium-browserや、ibus、ibus-anthy、ttf-takao(日本語フォント)、xdm(ログイン画面)などを入れていきます。ibus-mozcがインストールできないのは残念です。コンパイルする気力がないので放置。どうせ文章入力しないし。

あと、デスクトップにアイコンを表示させるためにidesk(アイコン表示)とpkg-config(左が依存)をインストール。~/.idesktop/ に設定ファイルを書くこと。起動時に自動起動させるには、~/.fluxbox/init の

session.screen0.rootCommand:

のあとに idesk を書きます。なぜか自分の環境ではsession.screen0.nootCommand:になってたんですが…スペルミスでしょうか…?w rootにしてうごきました。’noot’の挙動は確認してないです。表示されるのにクリックしても動かないなあとひとしきり悩んだあと、ダブルクリックということに気づきましたw

あと、haltって/sbin/haltなんですねw /usr/bin/haltだとおもって格闘していたw

haltを一般ユーザでも使えるようにvisudoでいじる

family    ALL=(ALL) NOPASSWD:/sbin/halt

起動時間は、xdmが20秒くらい食うせいで1分。なんであいつあんなに遅いんだよ…。一度起動してしまえば早いけど。

あとは無線LAN子機(Planex GW-USNano2)だけ。こいつも簡単。……とおもったら意味わからんエラー吐かれて、仕方がないのでアーキテクチャが同じX60sでコンパイルして転送。………動かん。ちなみにこれ2回目ね。PuppyLinuxでも同じことしてた。

というか、接続しても/var/log/messagesになにも出ない。なんだこれ……

無線はいつかやる。それまでは自室のハブから有線LANケーブルを数本つないで居間まで通す。

追記:

格闘の末につけたシャットダウンスイッチは、やっぱり物理スイッチからACPIで切ったほうがいい気がしたので削除しましたw

ChromiumでFlashを動かそうとしましたが、パッケージが落とせなくなっていたりちょっとめんどくさそうだったので、早々に諦めてChromeにしました。

exeを展開できなかったのでNdiswrapperも動かせなかった

録画鯖実運用開始…が、問題発生

ついに春アニメの季節ですね。先日導入した録画鯖を実運用し始めたのですが、問題が発生してきてしまいました。

  • HD画質が、録画時間が進むうちにブロックノイズが増えて視聴不能になってしまう

なぜかワンセグは(どうにか)OKです。ぐにゅー。理由を考えてみた。

  • 同時にワンセグとフルセグを録画しているせいでCPUパワーが限界
  • 同じ理由で書き込みが追いつかない

たぶんどっちかだな。とりあえずリソース利用率をプロットするようにしてみます。方法は今から考えます。あと、ワンセグを録画しないようにしてみます。

この状態で、1時間くらいの番組を録画してみます。うーん、どうなるか。

ちなみに今期で今までに見たアニメは「あっちこっち」と「夏色キセキ」です。どちらもなかなか良さげです。

あと、圧縮もするようにしてみようと思っています

追記:

テストしてみましたが、うわ… 一分で100MBくらいメモリを侵食しています。だいたい6分くらいでスワップが開始してしまうはずです。たしかブロックノイズが出始めるのも6分経過時くらいなので、もしかしたらそれかも…。

KTV-FSUSB2を購入&録画鯖(Debian)立てた

ゆるゆり2期が決定しましたね。7月からだそうです。結京を高画質でずっと見たいと思うので、おそらくそれだけのためにテレビチューナを購入しました。

もちろんWindowsで動かす気はないので、(手を加えると)Linuxで動くものを選択しました。KTV-FSUSB2Nです。安価で入手性高し、(今のところ)改造が容易なのが理由です。

改造方法については巷にありますので割愛します。ロットはK1111系でした。なんと最近は泡なしみたいですww 対策諦めたんだろうかw

最初はメイン鯖の仮想Debianを使用しようと思っていましたが、USBパススルー機能は対応しているOSが限られるので、仮想XPを使用。しかしUSB1.1相当の速度しか出ず断念。

PC-2を部室から持って帰って使用しようとしたものの、ブートローダが死んでる+BIOSパスワードを忘れて入れない

どうしようもなくなり、アキバでジャンクデスクトップを購入。HP D530SFF(CPU:NorthwoodPen43.0GHz(HT),RAM:512MB(表記では512GBwww、HDD:40GB、2000円)。同じ店で「DDRメモリ(256MB)3枚100円!!」っていうのをやっていたのでELPIDAを必死に探して(すごい異様だったと思うw)購入。

が、帰ってきて開けようとしたらなんと後ろが弄りどめ付きトルクスで物理セキュリティロックがかかってるw トルクスレンチ(1k)を買うかネジザウルス(1.7k)を買うか迷いましたが、いろいろ使えるネジザウルスにしました。うーん、2kのものを開けるために1.7kってのはアレだけど….w

ネジザウルスで開けるといとも簡単に開きましたw 普通のペンチじゃ開かなかったのになんでだww

……..BIOSのメニューからその電子錠を開けれたのは起動成功してから気づきました。うわ….

なかは結構埃がありましたが、格闘の末退治に成功。HPらしく(サーバっぽく)ユニット式になっており、すごく開けるのは楽でした。なんせツールレスで全部にアクセスできるんですもん……

ELPIDAの3枚100円メモリはmemtest86+一周しましたが、とくに問題はありませんでした。よかった。これで1GBメモリー。

どうやらファンが一つ逝かれているようでカラカラ音がします。うるさい…. そのうちファン買いたいです。とりあえずOSはDebian(squeeze)入れました。

Windowsで動作確認の後、
KEIAN [KTV-FSPCIE] + recfsusb2n for linuxで地デジ

このページを参考にいろいろ入れます。

recfsusb2nという、Windows向けドライバ作者の方が作成してくださったLinux2.6向けのドライバ(っていえばいいんだろうか)を使用するのですが、tssplitter_liteを同梱させるパッチがあるのでそれを適用させていただいてから使用します。

recfsusb2nにtssplitter_liteを内蔵

TSファイルとは、地上波のストリームをそのまま保存した、カメラでいうRAWファイルの状態です。たぶん。そのため、ワンセグデータ、番組表、字幕などの無駄なデータが同梱されてしまうため容量が必要以上に大きくなってしまいます。それを分離するtssplitter_liteというツールがあるのですが、それが同梱されます。また、初期状態では起動直後の不安定なストリームも保存してしまうので、再生に失敗してしまうことがあります。それを取らないようにする機能も付加されます。いや、感謝感謝。俺もこういうものも作りたいですね。

録画するときは

$ recfsusb2n -bv --sid hd,sd1,sd2 --trim 1000 27 30 test.ts

のようにします。

/usr/bin/に放りこめばパスが通るものだと思い込んでた…./usr/local/binなのか….

動作確認の後、番組表Web表示用のソフトをセットアップします。
KTV-FSPCIE + EPGrecで予約録画1/2【LAMP環境の構築,他、前準備】
KTV-FSPCIE + EPGrecで予約録画2/2【インストールと設定】

先ほどと同じサイトを参考にさせていただきます。

詳細は説明がめんどくさいので省きます。いや、大変でした、正直。意味不明なエラーが多発して大変でした。

「なんかエラーが出たときには、とりあえずパッケージ不足を疑え」

これ鉄則です。少なくとも今回は。

さて、結局どういうふうな構造になったかというと

….GNUPaintさん……軽快お絵かきソフトとはいえアンドゥ機能くらいつけてください……あと多バイト文字の挿入させてください…….. 別に好きで英語で書いてるわけじゃないです。

recmvってのは、録画ディレクトリにTSファイルが入ってたら自動的にSCPで転送するっていうお手製のスクリプトです。FTP鯖をPC-4に建てようかと思ってたんですが、なぜかどうにもうまくいかないので速度は妥協しました。めんどい。

流石にパスワードベタ書きなんてアホなことはしたくないので、公開鍵認証(ただしパスワードなし)にしました。

recmv.py(追記のところに改良版があります)

これをcronで動かせば、WebUIから録画したファイルが自動的にメインサーバに転送(元ファイルは削除)されます。

TSファイルはとんでもなく大きいので、PC-4のffmpegでH.264にエンコードしようと思ってましたが、multimediaからnon-freeのソース落としてコンパイルして動かしてみましたが、音が出なかったり早回しになったりどうにもうまくいきません。とりあえずめんどくさいのでこのままです。てへぺろ

まぁ最初にHDだけ抽出しているので、そのままのTSファイルよりも小さくはなってます。

手抜き。おわり

#ゆるゆり三期来いっ!!w

追記: HDだけだと、本体がSDの場合にCMとかだけ録画されてしまうw hd,sd1,sd2,sd3とかでやってみました。たぶんこれで大丈夫だとは思うけど… HDが切れてもSDだけでもちゃんと録画してくれるんかな。あとでやってみます。ちなみにhd,sd1,sd2,sd3で録画したら10秒で約20MB,おそらく30分で2.3GBでした。

追記2: どうやら録画中のテンポラリファイルも録画ファイルディレクトリに置かれてしまうみたいなので、最初に秒数をスクリプト1に渡しておいて、cronでスクリプト2で監視、指定された秒数(から求められた時刻)が経過したらスクリプト2を走らせて転送するというものを書いてみました。思ったよりも難しく、設計がごちゃごちゃになってしまいました。最初はjsonを使おうと思ってましたが、オブジェクトはjsonで渡せないので(時、分とかに変数を分ければ可能ですが)、pickleというオブジェクトをファイルオブジェクト化するモジュールを使用しました。いや、問題が色々と発生して完成するまでに結構時間がかかりました。2.5時間くらい。。

recmv.py (転送するスクリプト)

makerecmv_list.py (秒数を受け取ってファイルにかきだすスクリプト)

修正BSDライセンスです。

 

Debian鯖でIXのログ集めることにした(syslog)

これまで一切IXのログ見たことなかった(見る方法を知らなかった)ので、ポートスキャンされてようが検出するすべがなかったのですが、これでひと安心。ただ、もうちょっとセキュリティに気を使うとsyslog専用鯖が欲しいところですが、まあ流石に必要ないでしょう。
最初ちょっと詰んだのが、ファシリティ(local○)を合わせ忘れてた。まあ10秒で気づいたけどな!! 10秒で!! (ドヤァ
#そもそも間違えないっていうツッコミはダメですよ?w

Debianの設定
このページを参考にしてやりました。ありがとうございます。パクるのもあれなのでそのへんは適当にやってください

http://rino-l4d2.ddo.jp/blog/?p=698

http://www.infra.jp/debian/rsyslog.html

IXの設定

IX2015(config)# syslog ip host (サーバのIPアドレス)

これだけ。デフォルトではlocal0になってます。デフォルトで送信になってるので本当にこれだけ。今度はwrite memory忘れなかったよ?

そういえばX60s内蔵の無線LANアダプタ、11n非対応だったの思い出した…  買いたいけど高いし(調べてみたらそれほど高くもなかった)な… いっそのこと動作報告のあるUSBレシーバ型を買って、内部のMiniPCIeになんか付けるとか!!ww (まあMiniPCIeは対応してるものが少ないしね…mSATA非対応だし… MiniPCIe -> PCIe -> SATA3 -> SSDとかどうよw SSDまで全部まとめたものが売ってたりすると面白いのになぁw)

ログ見てみたら内側のメイン機から大量にパケットブロックされてるんだけど大丈夫…? ウイルスとかやめてくれよ…?
59620/59623/9858 > 22032
57315/9858 > 49733
35481 > 40260
とかいろいろ。

追記:曰くSkypeらしいです。よかった…

>電源にダクト付けようかな

>流石に分解するのはあれなので、側板との間に塩ビホースでダクトをつけようかと画策中。しっかし、鯖のAnthyの精度悪すぎ。。 Debianの標準リポジトリに入ってないので、わざわざMozc入れる気にもならないし。  鯖からネットしなければいいんですけどね、整備しつつネット見たい時もあるんです。
今日はそれだけ。

>BOINCでお手軽社会貢献しようよ!!

>

やっぱり鯖のスペックを使い余しています。Quad CoreCPUをWeb鯖、それもほとんど全く人が来なくてコンテンツは「動作テスト中です」に使うのはあまりにも勿体なすぎるww

そこで、分散コンピューティング(グリッドコンピューティング)を使用して社会貢献ができる「BOINC」に参加してみることにしました。

グリッド・コンピューティング – Wikipedia
BOINC=Berkeley Open Infrastructure for Network Computing
Berkeley Open Infrastructure for Network Computing – Wikipedia

「BOINC(ボインク)」とは、余剰リソースを束ねて様々なことに使用するための環境です。それ自体で何かをするわけではなく、「プロジェクト」に登録して使用します。

これに協力することによって高性能なスーパーコンピュータを導入できない研究所などでも、莫大なリソースを消費する操作(新薬開発の研究など)を行えます。

有名なプロジェクトは

  • WCG(World Community Grid) 「IBMの援助で発足したプロジェクトで、目的は人類に貢献するプロジェクトに取り組むための、世界最大の公的コンピューティング・グリッドを構築することです。World Community Grid ではテクノロジーを、公的な非営利組織のみが人道的研究に利用できるようにしています。プロジェクトの成果はパブリックドメイン(知的財産権が存在しない状態)として世界中の研究コミュニティーに公開されます。」
  • Rosetta@home 「Rosetta@homeは、世界中のインターネットに接続したコンピュータを使うBOINCによる科学研究プロジェクトです。蛋白質立体構造ならびに蛋白質-蛋白質間と蛋白質-リガンド相互作用を予測し設計することを目的とします。私たちの最終的なゴールは、正確に蛋白質立体構造とその複合体を予測し設計する手法を確立し、HIV/エイズ、ガン、マラリア、アルツハイマーなどのような人間の難病に対する治療法に一役買うことであります。」
  • PrimeGrid  素数を発見するための数学系プロジェクトです。素数を発見する面白さをもたらし、また素数に関連する教材を提供することにTeam2ch Wikiより数学分野へ貢献し、暗号システムの発展・コンピュータセキュリティの向上に役立てられます。運良く記録的な素数を発見した場合、発見者として歴史に自分の名前を刻むこともできます。」

(紹介文はTeam2ch Wikiから引用)

俺がやってるのはWCG。BOINCは、Windows/Mac/Linuxに対応しているので、普通にDebianで動かしてる。ちなみに、同時に複数のプロジェクトに加入することもできます。

インストール方法(Ubuntu/Debian)

  1.  ソフトウェアセンターで「BOINC」で検索、インストール
  2. 「システムツール」の所にあるので、そのままクリック
  3. 「ADD PROJECT」をクリック、お好みのプロジェクトを選択
  4. メルアド・パスワードなどを入力
  5. 登録完了!
  6. プロジェクトの公式サイトが自動的に開くので、ログイン、設定をする。
  7. ロケールを日本にして、チームに加入。minamiさんがリーダーの、俺も参加している「3degrees」に入ってもらえると嬉しいですw

※チームはプロジェクトごとにあります。成績もプロジェクトごとです。

こんなもん。とても簡単。あとは放っておくだけで社会貢献ができる。たまに結果とかを見てあげましょう。Advanced Viewにすると、詳細表示・詳細設定が可能。
常用PCで重いのが嫌なら 「高度な操作」→「プレファレンス」から。
※かなり負荷がかかります。CPU温度に注意

GPUが使えるプロジェクト(OS・グラボ依存、動かない場合も)もたまにあるので、興味のある方は探してみては

みなさんも余剰リソースを分散コンピューティングでお手軽社会貢献しましょう!w