2014年5月6日火曜日

PCで音声認識してmbedを制御する

PCのマイクで拾った音声の認識結果を用い、USB接続のmbedを制御しました。
今は詳しく書く気力がないので、作ったものを軽く紹介するだけにします。

使った技術


  • Web Speech API
    • HTML5で策定された仕様。まだGoogle Chromeでしか使えないけど、マイクからの音声を認識して、テキストとして取得できます。
  • Tornado
    •  HTTPサーバを構築するためのPython用ライブラリ。Web Speech APIを動かす基盤として、またmbedの操作窓口として使っています。
  • pySerial
    • Pythonでシリアルポートを使うためのライブラリ。シリアルポート経由でmbedと通信するために使います。
  • mbed
    • お手軽マイコン。PCからの命令を受け取ってLEDをチカチカさせます。

結果


「右」「左」「止まれ」の3つの声を認識し、mbedのLEDを制御できました。
最終的にはmbedにロボットを接続して、声で動かす予定です。

2014年3月25日火曜日

Dreamweaver CC で CORESERVER.JP に FTPS でアクセスする

Adobe Dreamweaver CC には、ホームページのデータをサーバへ転送するための機能が搭載されています。

  • FTP
  • SFTP
  • FTP over SSL/TSL(暗黙的な暗号化)
  • FTP over SSL/TSL(明示的な暗号化)
などに対応しています。

有料レンタルサーバ CORESERVER.JP で対応している FTP over SSL/TSL、略して FTPS を Dreamweaver CC で使うための設定を紹介します。



  • サーバー名:任意の名前
  • 使用する接続:FTP over SSL/TSL(明示的な暗号化)
  • FTPアドレス:CORESERVER設定画面の「FTPサーバー」
  • ユーザー名:CORESERVER設定画面の「FTPアカウント」
  • パスワード:CORESERVER設定画面の「FTPパスワード」
  • 認証:なし(暗号化のみ)
  • FTP Passive モードを使用:チェック
「認証」を「なし」に設定することが大切です。初期設定では「信頼するサーバー」に設定されておりますので、ご注意下さい。


参考(FileZilla での設定)
http://bono.s206.xrea.com/2010/02/1130-xrea-ftps/

2014年1月29日水曜日

Sphinx で LaTeX 出力のメモ

画像貼り付けでno BoundingBox

PNG画像を貼り付けようと思ったら
"! LaTeX Error: Cannot determine size of graphic in chelper_code.png (no BoundingBox)."
と怒られた。.ebbや.bbファイルを生成しても解決しなかった。

解決策:dvipdfmxを使う

使い始めたばかりのSphinxでPDFを生成してみたと似た症状かなと思って、強制的にdvipdfmxを使うように設定してみた。conf.pyに
latex_elements = {
'classoptions': ',dvipdfmx',
}
こんな感じの設定をする。latex_elementsは最初から入ってるので、'classoptions'の行を追加する。(今回は更に"! Package babel Error: You haven't specified a language option."というエラーが出たので、language = 'ja'という設定も追加した)

2014年1月22日水曜日

Adobe Illustrator CC で白抜き矢印を描く

Adobe Illustrator CC で白抜きの矢印を描く方法です。
illustratorで白抜き矢印を描く の方法はちょっと古いので、Illustrator CCでのやり方を解説します。

太い矢印を作る

直線ツールを選択します

太い直線を描きます


矢印にします
([ウィンドウ]-[線])

矢印の外郭線を得る

図形の外形を抽出します
([オブジェクト]-[パス]-[パスのアウトライン])

パスを合流させます
([ウィンドウ]-[パスファインダー])

白抜きにする

塗りの色、線の色・太さなどを調整します

2013年12月9日月曜日

進捗どうでしょう

「進捗どうですか」と聞いて「進捗ダメです」って答えるネタが流行っているみたい。元ネタは良く知らないのだけど。
この記事は進捗Advent Calendar 2013 9日目向けのものです。アドベントカレンダーなるものに初めて参加してみます。

修士論文

僕の進捗といえば修論の話をしなくてはいけません。なぜなら修士2年生だからです。そう、もう数ヶ月で卒業…。大学に入学して6年、ああ、小学校時代と同じ長さなのか!そりゃすんげえ!

修論は論文誌に投稿するのが12月中、学校に提出するのが1月後半という目標です。
単純なページ数的進捗で言えば、論文誌用の論文の方は2/6ページ書きました。執筆が捗るときと捗らないときの波が結構ありますけど、残りも頑張ります。ちなみにC-Helperが僕の研究です。

マイスタイル

僕が論文書くときのスタイルなどを書いておきます。「我も同じじゃ」とか「こうしたほうが良いよ」などありましたらコメントで教えてください。参考にさせていただくかもしれません!

音楽

BGMをかけつつ文章を書くのが好きです。電子音がピコピコするアニソン系の曲、東方JAZZアレンジ系、UKロックなど聴きます。日本語の歌詞が聞き取りやすい曲も好きですが、作業効率は落ちる気がします。
そうそう、最近はDiverse Systemのworks.3を買いまして、修論のお供に良く使ってます。アルバムタイトルの通り、結構優秀な作業用BGMだと思います。

場所

執筆活動をする場所も僕には重要です。僕は自宅ではゲームなどやってしまって執筆が捗ったためしがありません。比較的集中できるのはドトールなどのカフェや通学電車です。自宅以外だとお気に入りのゲームも無いですし、適度に人の目(カフェ席で寝てたら恥ずかしいので寝ないですみます)もありますから。
さらに付加効果として、カフェでMacBook Airを広げると多少優越感があります。Haswell搭載のノートPCにすれば、一日中電源なしでカフェを転々として執筆活動にいそしめます。

道具

Vim+TeXをターミナルから使って論文書いてます。Vimで.texファイルを保存するたびにmakeが非同期で走るように.vimrcを設定してあり、自動でTeXコンパイルされます。PDFのプレビューにSkimを使えば、ファイルの更新を自動で検出して再読み込みしてくれるので便利です。しかも、再読込時に他のウィンドウよりも手前、ターミナルよりも後ろという超絶妙な位置に再配置されるので、非常に使いやすい。おすすめ。

修論の同士たち、一緒に頑張りましょう。


さて、明日は wraith13 さんの担当で御座います。進捗は如何でしょう?

2013年11月22日金曜日

USBメモリはローカルディスク?リムーバブルメディア?

USBメモリをWindowsマシンに挿したとき、ローカルディスクになってしまう問題があります。または、無理やりローカルディスクとして認識させたい場合もあるでしょう(今回調べたのは、後者の理由です)。

少し調べたところ、USBメモリがリムーバブルメディアとして認識されるのはATAのIDENTIFY DEVICEコマンドの戻り値のRemovable Media Bitが1だからだそうです。

リムーバブル メディア デバイス設定は、SCSI Inquiry コマンドへの SCSI Inquiry Data 応答内に含まれたフラグです。バイト 1 のビット 7 (インデックスは 0 から開始) は、Removable Media Bit (RMB) です。ゼロに設定された RMB は、デバイスがリムーバブル メディア デバイスではないことを示します。1 に設定された RMB は、デバイスがリムーバブル メディア デバイスであることを示します。

flip removable media bit とググると、んもうたくさんの質問や記事が出てきます。皆さんUSBメモリにパーティションを作りたくてうずうずしているのでしょう。

漁ってみた中で一番確実そうな方法は "Lexar BootIt utility" を使う方法でした(まだ試していませんが)。LexarはUSBメモリのメーカーで、恐らく自社製品用にツールを作ったのだと思います。ということで、お店でLexarのTwistTurnなるUSBメモリを買ってきました。(Lexarのツールを使ってみたらここに追記予定)


Tips for USB pen drives によれば、「Removable」は本来、フロッピーやZIPドライブ、フラッシュカードリーダーなど、取り外し可能メディアを持つ機器を表すそうです。USBメモリがRMB=1になっているのは厳密には正しくないけれども、ほとんどすべてのUSBメモリがそうなってしまっているのだそうです(反対にUSBハードドライブはRMB=0になっています)。

なぜUSBハードディスクはリムーバブルでないのにUSBメモリはリムーバブルなのかは理解できませんが、現実的に市場の製品がそうなってしまっているのだから仕方がない。注意して製品選びするしかなさそうです。

Lexar BootIt utilityを試したらこの記事を修正するつもりです。

2013年10月15日火曜日

OS X Mountain Lion で i686-elf 向け GCC をビルドする

Xcode の Command Line Tools でインストールされる gcc コマンドは llvm-gcc なので、本当の GNU C Compiler ではありません。 Mac でクロスコンパイル用の GCC をビルドするためには、本物の gcc コマンドが必要です。
Mountain Lionユーザのためのクロスコンパイラビルド - Handwriting を読んでこの事実を知りました(それまで5回ぐらいクロスコンパイル用 GCC をビルドしようとして失敗していました)。

以下、ビルド手順メモ

ネイティブ用 GCC ビルド

クロスコンパイル用 GCC をビルドするための GCC をビルドします。A bare-metal x86-cross-compiler on Mountain Lion | The Intobooks や、そこからリンクされている Compiling gcc-4.7.1 on Mac OSX Lion が参考になりました。これらの記事の手順は僕の Mountain Lion でも使えました。

各種ソースコードのダウンロードと展開

$ cd ~
$ mkdir gcc-4.8.1
$ cd gcc-4.8.1
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.gz
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/gmp/gmp-5.1.3.tar.gz
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/mpfr/mpfr-3.1.2.tar.gz
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/mpc/mpc-1.0.1.tar.gz
$ tar zxvf gcc-4.8.1.tar.gz
$ tar xzvf gmp-5.1.3.tar.gz 
$ tar xzvf mpfr-3.1.2.tar.gz
$ tar xzvf mpc-1.0.1.tar.gz

ビルドとインストール

ビルドするまえに環境変数 PATH の値をなるべくシンプルに調整するとミスがありません。PATHを調整し終えたらいざビルド。

GMP
$ mkdir gmp-build
$ cd gmp-build
$ ../gmp-5.1.3/configure --prefix=/Users/uchan/gcc-4.8.1/ --enable-cxx
$ make -j4
$ make install
$ cd ..

MPFR
$ mkdir mpfr-build
$ cd mpfr-build
$ ../mpfr-3.1.2/configure --prefix=/Users/uchan/gcc-4.8.1 --with-gmp=/Users/uchan/gcc-4.8.1
$ make -j4
$ make install
$ cd ..

MPC
$ mkdir mpc-build
$ cd mpc-build
$ ../mpc-1.0.1/configure --prefix=/Users/uchan/gcc-4.8.1 --with-gmp=/Users/uchan/gcc-4.8.1 --with-mpfr=/Users/uchan/gcc-4.8.1
$ make -j4
$ make install
$ cd ..

GCC
$ mkdir gcc-build
$ cd gcc-build
$ ../gcc-4.8.1/configure --prefix=/Users/uchan/gcc-4.8.1 --enable-checking=release --with-gmp=/Users/uchan/gcc-4.8.1 --with-mpfr=/Users/uchan/gcc-4.8.1 --with-mpc=/Users/uchan/gcc-4.8.1 --enable-languages=c,c++
$ make -j4
$ make install
$ cd ..

以上でクロスコンパイル用 GCC をビルドするためのネイティブ GCC が出来上がりました!(ややこしい(^^;

さて、やっとクロスコンパイル用 GCC のビルドです。まず PATH の調整など。先ほどビルドした GCC のパスと、クロスコンパイル用 GCC のパスも忘れず通します。GCC, GMP, MPFR, MPC のソースは先ほど展開したものを再利用します。
$ export PATH=$HOME/i686-elf-gcc-4.8.1/bin:$HOME/gcc-4.8.1/bin:$PATH
$ cd ~
$ mkdir i686-elf-gcc-4.8.1
$ cd i686-elf-gcc-4.8.1
$ mkdir src
$ cd src
$ ln -s ~/gcc-4.8.1/src/gcc-4.8.1 ./
$ ln -s ~/gcc-4.8.1/src/gmp-5.1.3 ./
$ ln -s ~/gcc-4.8.1/src/mpfr-3.1.2 ./
$ ln -s ~/gcc-4.8.1/src/mpc-1.0.1 ./

binutils
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/binutils/releases/binutils-2.23.2.tar.bz2
$ tar xjvf binutils-2.23.2.tar.bz2
$ mkdir binutils-build
$ cd binutils-build
$ ../binutils-2.23.2/configure --prefix=/Users/uchan/i686-elf-gcc-4.8.1 --target=i686-elf
$ make -j4
$ make install
$ cd ..

GCC
$ mkdir gcc-build
$ cd gcc-build
$ ../gcc-4.8.1/configure --prefix=/Users/uchan/i686-elf-gcc-4.8.1 --target=i686-elf --enable-languages=c,c++ --without-headers
$ make -j4 all-gcc
$ make install-gcc

必要な configure オプションについては 開発環境(自作OS) - こうじのがく まとめ(自作OS、ホームページ作成) を参考にしました。
  • --without-headers : 自作 OS 開発には標準ヘッダファイルや標準ライブラリは要りませんので、これを指定しておきましょう。
make に all-gcc を指定するのが重要です。これを指定しないと make の途中でエラーが発生するかもしれません。(実際、 libstdc++ のビルドに失敗している様でした)

以上でクロスコンパイル用 GCC のインストールは完了です。やったね!