日本語は嫌い
今日はとあるソーシャルゲーム会社にお邪魔してきました。
CTOの方ともお話が出来て非常にモチベーションが向上しましたが,その話は省略します。
そのゲーム会社はUnityをメインに使っているそうですが,それ関連で思い出したことがあるので備忘録代わりにメモ。
○Unityを「日本語ユーザー名」のアカウントでセットアップした際,初回起動時に起動できない。
その場合はオフライン認証をすべし。
○PPM(Perl Package Manager)のWindows版を起動しようとしても何の音沙汰もない。
起動しない,そんな場合は作業用ディレクトリを変更し,日本語が含まれないようにすべし。
あらかじめコマンドライン上から,もしくはppm.batに「SET ACTIVEPERL_PPM_HOME=(日本語が含まれないパス)」を追記しておくと良い。
参考: ActivePerl の ppm が起動しない: 男たちの群青
というわけです。
hotmailを日本語で登録していたせいでWindows8パソコンが日本語ユーザー名になってしまいました。
ユーザー名は変えられてもディレクトリ名は変えられないし,非常に腹が立つ……。
なんにせよPC上では日本語がやっかいになることがあるので気をつけるべきだと思います。
赤外線通信(笑)
先日学内で行われたUnitus主催のハッカソンに,Miceとして参加しました。
大半がゲームを作っていた中,僕たちだけはなぜかマウスを持ち込み,GR-PEACHを持ち込み,モーターを持ち込み……,異様な空間が出来ていました。
人目を引くこともあってか,なぜか1票差で最優秀賞! レッドブル2ダースを獲得しました!
……とまあ,そんなことはどうでも良いのですが,個人的には面白い取り組みを一つしたので失敗談を含めて紹介しようと思います。
マウスを動かすだけの簡単なシステムを製作したのですが,それだけではつまらないのでマウスに触れずに動作できるようにしました。
具体的に言うと,赤外線でマウスに行き先座標を送信するというシステムです。
「赤外線通信」と言うと,まずテレビのリモコンが思い浮かぶと思います。
今回は詳しい規格は紹介しませんが,あれは38kHzの搬送波にデータを載せて転送していたはずです。(これは後日たりぷろで実験します。絶対します。)
こいつを,簡易的に実装しようと思い立ち,次のプロトコルをでっち上げました。
(※プロトコル:通信規格のこと。例えばマクドナルドで注文するときには「商品名」と「個数」を言わないと頼めませんし,この基本的なルールは広く知られています。同じように,機械が機械と会話(通信)するときは,何を,どれだけ(何ビット)送信するか,というルールが決まっていないといけません。)
・1語を4ビットとし,「ヘッダ・データ本体・フッタ」を続けて送信する。
・ヘッダは4語で「1111 1111 0000 NNNN」で構成される。
NNNN:送信するデータ本体の語数(0~15)
・フッタは3語で「PPPP 0000 0000」で構成される。
PPPP:パリティ(文字数と送信文字すべてとパリティを加算すると下8桁が1111になるようなビット列)
・1ビットを5msで送信し,赤外線点灯時を1,消灯時を0とする。
つまりビットレートは200bpsとなる。
イメージ出来るでしょうか……?
例えば,ゴール座標{ 3, 1 }を送る場合次のようになります。
「1111 1111 0000 0010 0011 0001 1011 0000 0000 」
今回は近距離無線通信,外乱も非常に小さい環境で動作させたため,また送るデータ量も小さかったので何の問題も無く動作してくれました。
さて,プチ反省会をしましょう。
今回のプロトコルでは全く持ってダメダメな設計をしています。
赤外線センサを教室の上に向け,そして下に向けるとデータ受信が行われてしましました。なぜでしょうか……?
正解はさっき挙げた「外乱」,それと「ヘッダのダメ仕様」です。
教室の上に付いている「蛍光灯」,こいつからは赤外線も出ています。そりゃあ蛍光灯に向けたらセンサが反応しますよね。
これに対応するために,製品化されている赤外線通信の規格では,比較的高周波のパルス波の赤外線が照射されている場合のみ「1」と判断するようになっています。比較的,というのは蛍光灯などの外乱では発生しないレベルで,と言う意味です。
そしてプロトコルのヘッダ部分を見てください,「1111 1111 0000」となっていますよね。赤外線が強いところから弱いところに切り替われば,確かにこのヘッダと一致している! と認識されてもおかしくありません。
例えばヘッダを「1010 1010 1010」としてみましょう。これならば外乱をヘッダと読み違えることも大幅に減ると思われます。
今回の実験でプロトコルの重要性を体感させられました。
この結果を基に,たりぷろの赤外線通信を良い物に出来ればと思います。
ではでは,また。
○今回のサンプルコード
https://github.com/taniho0707/kani_kama
なおバグのため,パリティが一時的に無効化されているコードです,悪しからず。
初めての大会も終わり
お久しぶりです。
マイクロマウス東北大会,マイクロマウス全日本大会も終わり,ようやく落ち着きました。
結果はと言うと,東北大会リタイア,全日本大会予選13位・決勝リタイア,とまあ残念な結果に。
まあ初めて3ヶ月だから良いでしょうと気を取り直し,マイクロマウス2015が始まりました!
今抱えているタスクをざっと挙げると次の通りに。
・マイクロマウス2015。これには今の機体の大幅改造と,そのうち始めるであろう次回作があります。それとソフトウェアを製作します。
・他力本願プロジェクト(以降「たりぷろ」)。いろんなマイコン周辺機器を試してドキュメントとしてまとめようという部内企画です。
・ソフトウェアハッカソン。Unitusという団体とつながりが出来てしまったため,そこ主催のハッカソンや,外部団体・企業主催のハッカソン・コンテストに積極的に参加していきたいと考えています。
・GUGEN,NT京都系の電子工作イベント。何か作って出品したいですね,というお話。
・Renesasプロデューサ。GR-PEACHなるmbed基板を無償入手したため,その開発を進めます。
・ロボトレース。バイト先での研究課題にライントレースがあるので,その一環で参加しようと思ってます。
・知能ロボコン。先輩に勧められたは良いけど,果たしてやるのだろうか。
・まるっきり趣味。来年こそセキュリティキャンプに参加したいと思っているため,その辺の経験を積みたいです。というわけなのでNIC ICを買ってきてそれで遊ぼうかと思っています。
・ノベルゲーム制作。何としてでもやってみせます。
って感じです。これ全部来年夏までにこなせるのかな……
とまあ,こんなにやることがあればブログに書く内容も尽きることがないと思うので,これからは逐一更新するようにしたいと思います。
初心者が取っつけるような入門,つまづいたところなどの備忘録,作品紹介なら更新も滞らないだろう……。
と言うわけで今日はさっき挙げたたりぷろに関係する話を。
ジャンル分けする都合上,次の記事に続きます。
コミケ当選
なんと初応募でコミケ当選してしまいました。
というわけでみなさん,是非お越しください!
「3日目西い20a:のどかプラネタリウム」でお待ちしております。
頒布物は短編ノベルゲームを予定,鋭意制作中であります。
さてさて,今日はロボットのプチ大会という物があったのですが,
ライントレース部門で優勝してしまいました。
記録についてはあまり納得していませんが(PID制御結局諦めた),圧電ブザーを載せて音楽を鳴らしながら進ませることが出来たので,まあまあの出来だとは思います。
今日はちょっと疲れているので,また記事にまとめることにします。
先日秋葉原までパーツを買いに行ってきました。
STM32Discovery,LANコネクタモジュール,LED等々を買ってきたので,使えるように勉強しようと思います。
では,また
レポート作成
こんばんは。まだレポートに追われていないはんたすです。
レポートと言えば,もうWord一択の時代なのでしょうか。
僕も仕方がないのでMS Office最新版を買いましたが……。
高校時代は一太郎を愛用していました。細かなところに気が利いていて,個人的な文書を作る際は大変便利です。この宣伝はまた後日にでもしますね。
一方,論文などのフォーマルな文書を作る際は色々と苦労する点があります。
中身を考えるだけでも大変なのに,整形作業は出来るだけぱぱっとしてしまいたい。仕方がないからWordを使ってみよう,という感じで第1回のレポートはWordを作ってみました。
うーん,だめだこりゃ。一番肝心な段落番号振りの挙動がいまいち。キーボードショートカットはあるにしても,3ボタン押しはちょっと辛い……。
そんなてきとーな理由で「LaTeX」を勉強してみようと思い立ちました。
インストールには「TeXインストーラ3(http://www.math.sci.hokudai.ac.jp/~abenori/soft/index.html)」を使用。
非常に楽にインストールが終わりました。
苦労した点は次の点。
・余白と行数の設定変更
以下参考サイトを見ながらできました。ありがとうございます。
・日本語のコンパイルが出来ない
UTF-8を使う際は,パッケージ名を"ujarticle",コンパイルの際のコマンド名を"uplatex"とすればうまくいくようです。
・表が思った位置に表示されない
\begin{table}の位置指定に"h"を入れましょう。これで記述場所に表を挿入することが出来ます。
今のところこんな感じですかね。今期中にLaTeXを常用できる程度まで頑張ってみたいと思います。
ロボットの方は,今P制御らしき物までは進みました。ぐにゃぐにゃ進みます。
これでは安定性が皆無なので,今I制御を研究しているところですが……うまくいくのかな。
それではまた。
○参考サイト
「もうカツ丼でいいよな 1ページ当たりの行数,文字数と周囲の余白を設定する」 http://d.hatena.ne.jp/Rion778/20091002/1254482262
「Wikibooks TeX/LaTeX入門」 http://ja.wikibooks.org/wiki/TeX/LaTeX%E5%85%A5%E9%96%80
「電脳世界の奥底にて upLaTeXを使おう」 http://zrbabbler.sp.land.to/uplatex.html
ライントレーサー完成
4月からのどかプラネタリウムの作業を始めると言ったな,あれは嘘だ!
すいませんまだ出来てません。
でも来週の定例会までの目標は宣言しちゃったから,絶対やろう。やるっきゃない!
さてさて,今日ようやくライントレーサーが動く状態にまで持って行けました。
ラインの両脇を挟んだセンサーが線にかかるとモーターが止まり,線を見ているセンサーが線から外れると後退をするだけの単純なタイプですが,なんやかんやで苦労したので要点をココにまとめておきます。
完全に飲み込んでいるわけでは無いので,間違っている可能性はなきにしもあらず。マイコンはSH7125を使いました。
1.全般
基本的にピンの設定をする際は,
・"PFC"から入出力の設定とマルチプレクサの設定
内部クロックを使用する場合は
・"STB"のスタンバイ解除
2.シリアル通信
ビットレートの値はマイコンの設定と端末の設定を同じ物にしましょう。はちゃめちゃな表示になります。
改行文字は"\n\r"です。必ず復帰文字とセットで記入しましょう。
3.MTU(PWMモード)
これは"MultiFunction"と言うだけあって,様々なモードを備えたユニットのようです。今回はPWMモード2しか使用していません。
TIOC0~1の任意の出力端子からPWM出力を出したい場合,PWMモード2が使えそうです。今回はチャネル0について書いておきます。
レジスタTGRA_0~TGRD_0がそれぞれコンペアマッチのタイミングを保持します。カウンタのTCNTが上記レジスタと等しい値になったタイミングで,TIORで設定した出力をします。このレジスタにはデューティー比を設定することになります。
出力するピンは,僕の場合TIOC0Bを使いました。レジスタとピンの対応表はデータシートの表9.45を参照してください。
このピンがPWM出力を行うピンになるわけですが,もう一つ,周期を持つレジスタが必要になります。空いている,もしくはマルチプレクサで他の機能を割り当てているチャネル0のピンを探しましょう。僕の場合はTIOC0Aを使いました。
対応するレジスタTGRA_0~TGRD_0の周期を設定します。ここにPWM出力のベース周期を設定しておきます。
もう一つ,TCRからTCNTのカウンタクリア要因を,このレジスタに設定しておきます。こうすることで,一定の周期でリセットをかけ,一定時間で出力を出し,リセットがかかり……,という流れでPWM出力に無事成功です。
その他具体的な設定内容は他サイトに上手くまとめられているのでそちらを参照してください。
なお,チャネル3と4だけは"TOER"から各ビットの出力可否設定をする必要があります。
4.A/D変換(シングルモード)
AD0,AD1について,同じチャネルの違うピンの値を読み込む際は,"CH"から読み込みたいピン番号を選択します。
ここで,まだ原因は確定していないのですが,シングルモードで値の読み取りを連続して行うと上手く動かないという現象が発生しました。
読み込みの合間に1000ステップ程度のウェイトを入れると無事動作してくれました。
もし,一部のセンサから正常な値が出ないと言う場合は一度試してみましょう。
さてさて,今日つまずいた部分はこれくらいです。次はA/D変換の連続モード,あとはモータの回転方向の処理を綺麗にしたり……,色々やることは多そうです。
のどかプラネタリウムの方は,何事もまず形からということでタイトル画面とシステムで使用するレイヤの管理方法について進めようと思っています。
夏までに間に合うのかなー……
ではまた。