アシスト研
3月29
3月15
どうもアシスト研 15 のも です。久しぶりの投稿になります。
今回は後期研究報告会でも紹介した自作キーボードver1.0について紹介したいと思います。
〇初めに
まず皆さんに訴えたいのは、今あるキーボードとマウスという入力装置(ヒューマンインターフェースデバイス)は長い間その姿をほとんど変えておらず、そろそろ新しいデバイスに代わってもよいのではないか!、ということです。
ロ技研のポリシー「ないものは作れ!」に従って自分で作ってしまおうと思い立ち、
newHID(ヒューマンインタフェースデバイス)projectが始動しました。
まずは勉強がてら自作のキーボードを作ってみようということで作ってみました。
〇試作
自作のキーボードといってもいわゆるPCのキーボードを作るとなると100キー以上必要になるわけです。そんなにスイッチをつけるのは大変ですし、そもそもピアノのように同時押しをすることを考えたら7キー(2の7乗=128)ですべてのキーを表すことができるはず(Shiftなどの同時押しを考慮しないなら)。
いろいろ考えた結果
使ったのは手軽にプログラミングできて、HIDclassに対応しているLPC1768と、HIDのライブラリが整っているmbedです。
実際に作った自作キーボードはこちら。
左から順に
●モードチェンジ(文字モード、数字モード、Functionキーモード)
●modifier(CTRL,SHIFT,ALT,WINキー)
●
●
●文字(アルファベット)
●
●
●ENTER,SPACE,BACKSPACE
●
にすることで標準のキーボードのすべての入力を再現することができました。
キー入力をマイコンからできるということは、自動でキー入力ができるということでは
と思い、自動入力を使っていろいろ面白いものを作ってみました。
〇メモ帳を使ってメニューを表示する
時間差で複数のキーコードを送信することで、スイッチを一回押すだけで高速でキーボード入力しているのと同じことができ、PCを自在に操作できます。
ここでこの自作キーボードにボタンの入力以上のことをさせるアイデアを思いつきました。
Win+R
文字列"notepate"の入力
ENTER
を高速でキー入力することで自動でメモ帳を開きそこにメニュー画面を文字列入力で表示します。
メニューを選択すると同じく高速でキー入力することでchromeを開いたりcmdを開いたりなど様々なことが行えます。
〇勝手に検索
HIDとして認識されるこのデバイスは、誰のキーボードにさしても外付けキーボードとして認識され、セキュリティをかいくぐってPCを操作することができます。
その例として今回はUSBを指したら勝手にロボット技術研究会のブログを開くようなプログラムを書いてみました。
Winキー + "chrome"の入力 でgooglechromeを開き、
"titech-ssr.blog.jp"の入力 + ENTER でロ技研のブログを開いています。
このようにキーボード入力で行えることはマイコンに事前にキー入力を予約しておくことで自動化することができます。
誰かのPCにさして勝手にgoogle検索をすることが可能なのです。(BadUSBみたい)
〇メモ帳でリバーシ
文字の入力が高速でできるのでメモ帳を使ってリバーシをしてみました。
このデバイスを指すだけで適当なテキストを入力できるところでリバーシをすることができます。
〇まとめと今後
HIDクラスで入力できるUSBデバイスならばセキュリティをかいくぐってPCを思いのままに操り、楽しいことができるということが分かったので、今後はもっと実用的な形にしていきたいと思います。
ver2では小型化のために今度はpicマイコンを使い、人が持ちやすい形、スイッチの配置をしていき、新歓展示を目標に製作していきたいと思います。
今回は後期研究報告会でも紹介した自作キーボードver1.0について紹介したいと思います。
〇初めに
まず皆さんに訴えたいのは、今あるキーボードとマウスという入力装置(ヒューマンインターフェースデバイス)は長い間その姿をほとんど変えておらず、そろそろ新しいデバイスに代わってもよいのではないか!、ということです。
ロ技研のポリシー「ないものは作れ!」に従って自分で作ってしまおうと思い立ち、
newHID(ヒューマンインタフェースデバイス)projectが始動しました。
まずは勉強がてら自作のキーボードを作ってみようということで作ってみました。
〇試作
自作のキーボードといってもいわゆるPCのキーボードを作るとなると100キー以上必要になるわけです。そんなにスイッチをつけるのは大変ですし、そもそもピアノのように同時押しをすることを考えたら7キー(2の7乗=128)ですべてのキーを表すことができるはず(Shiftなどの同時押しを考慮しないなら)。
いろいろ考えた結果
使ったのは手軽にプログラミングできて、HIDclassに対応しているLPC1768と、HIDのライブラリが整っているmbedです。
実際に作った自作キーボードはこちら。
左から順に
●モードチェンジ(文字モード、数字モード、Functionキーモード)
●modifier(CTRL,SHIFT,ALT,WINキー)
●
●
●文字(アルファベット)
●
●
●ENTER,SPACE,BACKSPACE
●
にすることで標準のキーボードのすべての入力を再現することができました。
キー入力をマイコンからできるということは、自動でキー入力ができるということでは
と思い、自動入力を使っていろいろ面白いものを作ってみました。
〇メモ帳を使ってメニューを表示する
時間差で複数のキーコードを送信することで、スイッチを一回押すだけで高速でキーボード入力しているのと同じことができ、PCを自在に操作できます。
ここでこの自作キーボードにボタンの入力以上のことをさせるアイデアを思いつきました。
Win+R
文字列"notepate"の入力
ENTER
を高速でキー入力することで自動でメモ帳を開きそこにメニュー画面を文字列入力で表示します。
メニューを選択すると同じく高速でキー入力することでchromeを開いたりcmdを開いたりなど様々なことが行えます。
〇勝手に検索
HIDとして認識されるこのデバイスは、誰のキーボードにさしても外付けキーボードとして認識され、セキュリティをかいくぐってPCを操作することができます。
その例として今回はUSBを指したら勝手にロボット技術研究会のブログを開くようなプログラムを書いてみました。
Winキー + "chrome"の入力 でgooglechromeを開き、
"titech-ssr.blog.jp"の入力 + ENTER でロ技研のブログを開いています。
このようにキーボード入力で行えることはマイコンに事前にキー入力を予約しておくことで自動化することができます。
誰かのPCにさして勝手にgoogle検索をすることが可能なのです。(BadUSBみたい)
〇メモ帳でリバーシ
文字の入力が高速でできるのでメモ帳を使ってリバーシをしてみました。
このデバイスを指すだけで適当なテキストを入力できるところでリバーシをすることができます。
〇まとめと今後
HIDクラスで入力できるUSBデバイスならばセキュリティをかいくぐってPCを思いのままに操り、楽しいことができるということが分かったので、今後はもっと実用的な形にしていきたいと思います。
ver2では小型化のために今度はpicマイコンを使い、人が持ちやすい形、スイッチの配置をしていき、新歓展示を目標に製作していきたいと思います。
12月6
みなさんこんにちは15情報工学科、アシスト研代表の野元です。
これは rogy Advent Calendar 2016 6日目の記事です。
自作の光学式ロータリーエンコーダの製作について記事を書きます。
○きっかけ
前期の研究報告会で少し話しましたが、小さいロボットをたくさん作って群ロボットのようなものを作りたいな、と思っていましたが、それにあったっての大きな問題はお金です。
ものづくりにはお金がかかる。特に小型のエンコーダはとても高い(一個○千円)!しかも群をつくるので大量に必要になる。
こういう時にはロ技研のモットーを思い出してみよう。
『ないものは作る!』
そう!エンコーダが買えないのならば作ってしまえばいいのです。
○ロータリーエンコーダとは
ロータリーエンコーダ(以下エンコーダ)とは、モーターやタイヤなどの回転数を知るためのセンサーです、エンコーダーは大きく分けて磁気式と光学式の2通りに分けられます。今回作るのは光学式のほうです。
詳しくはggって。
○製作
自作のために下のフォトインタラプタというセンサを使います。
くぼみの部分に赤外線が通っていて、赤外線が遮断されるとわかる仕組みです。
これを使って回転を測るために部室に導入された3Dプリンターで下のようなスリットが入った円盤を作ります。
一回転で30個のスリットが入っているので、赤外線が通るか通らないかの2通りで検知して、一回転を60分割で検知できます。専門的な用語でいうと60ppr(パルス/ラウンド)です。
回転を読んでみたときの動画はこれです。
動画でもわかる通り、今のままでは順方向と逆方向との区別がつかず、どっちに回転してもカウントアップしてしまいます。
本来のエンコーダは2相式になっていてどっちに回転しているかが分かるようになっています。
(http://ednjapan.com/edn/articles/1203/16/news012_2.html より引用)
しかし2相式にするには構造が複雑になり、3dプリンターで2相式のスリットを作り2相のパルスを読むのは大変です。
今回はモーターの回転を読むので、モーターの回転方向によってカウントアップかカウントダウンを変えることにします。
これを作るのに必要なコストはフォトインタラプタと3dプリンタ代+その他でなんと100円程度で作れます。
○実装
小型ロボットの足回りのモーターにこの自作のエンコーダを実装してみます。
モーターについた歯車にスリットを入れてモーターの回転数を読みます。
このように回転数が読めました。
○使ってみる
このエンコーダを搭載した小型ロボットを作ったので、自作のエンコーダを使って自己位置推定してみます。
あんと01 youtube
あんと02 youtube
あんと03 youtube
完成したロボット「あんと」
工大祭にも展示しました小型ロボット「あんと」です。自作エンコーダのほかにレーダーのように回転する測距モジュールがついていて周りの状況を取得することができます。これをたくさん作って制御したいな、と思っていますがお金がなくて実現は遠そうです。
○まとめ
自作の光学式エンコーダは自作にしては結構制度も出て、しかも100円程度という低コストで作ることができたので成功といってもいいと思います。お金がないけどエンコーダが欲しいな、というときは自作してみてください。
○今後
今回は一相式の光学式エンコーダを作りましたが、モーターが入力とは逆回転してしまった場合や、モーター以外の物の正転逆転も読めるように、余裕があるときに二相式の光学式エンコーダも作ってみたいと思います。
次はmahato_straguleさんです。よろしくお願いします。
これは rogy Advent Calendar 2016 6日目の記事です。
自作の光学式ロータリーエンコーダの製作について記事を書きます。
○きっかけ
前期の研究報告会で少し話しましたが、小さいロボットをたくさん作って群ロボットのようなものを作りたいな、と思っていましたが、それにあったっての大きな問題はお金です。
ものづくりにはお金がかかる。特に小型のエンコーダはとても高い(一個○千円)!しかも群をつくるので大量に必要になる。
こういう時にはロ技研のモットーを思い出してみよう。
『ないものは作る!』
そう!エンコーダが買えないのならば作ってしまえばいいのです。
○ロータリーエンコーダとは
ロータリーエンコーダ(以下エンコーダ)とは、モーターやタイヤなどの回転数を知るためのセンサーです、エンコーダーは大きく分けて磁気式と光学式の2通りに分けられます。今回作るのは光学式のほうです。
詳しくはggって。
○製作
自作のために下のフォトインタラプタというセンサを使います。
くぼみの部分に赤外線が通っていて、赤外線が遮断されるとわかる仕組みです。
これを使って回転を測るために部室に導入された3Dプリンターで下のようなスリットが入った円盤を作ります。
一回転で30個のスリットが入っているので、赤外線が通るか通らないかの2通りで検知して、一回転を60分割で検知できます。専門的な用語でいうと60ppr(パルス/ラウンド)です。
回転を読んでみたときの動画はこれです。
動画でもわかる通り、今のままでは順方向と逆方向との区別がつかず、どっちに回転してもカウントアップしてしまいます。
本来のエンコーダは2相式になっていてどっちに回転しているかが分かるようになっています。
(http://ednjapan.com/edn/articles/1203/16/news012_2.html より引用)
しかし2相式にするには構造が複雑になり、3dプリンターで2相式のスリットを作り2相のパルスを読むのは大変です。
今回はモーターの回転を読むので、モーターの回転方向によってカウントアップかカウントダウンを変えることにします。
これを作るのに必要なコストはフォトインタラプタと3dプリンタ代+その他でなんと100円程度で作れます。
○実装
小型ロボットの足回りのモーターにこの自作のエンコーダを実装してみます。
モーターについた歯車にスリットを入れてモーターの回転数を読みます。
このように回転数が読めました。
○使ってみる
このエンコーダを搭載した小型ロボットを作ったので、自作のエンコーダを使って自己位置推定してみます。
あんと01 youtube
あんと02 youtube
あんと03 youtube
完成したロボット「あんと」
工大祭にも展示しました小型ロボット「あんと」です。自作エンコーダのほかにレーダーのように回転する測距モジュールがついていて周りの状況を取得することができます。これをたくさん作って制御したいな、と思っていますがお金がなくて実現は遠そうです。
○まとめ
自作の光学式エンコーダは自作にしては結構制度も出て、しかも100円程度という低コストで作ることができたので成功といってもいいと思います。お金がないけどエンコーダが欲しいな、というときは自作してみてください。
○今後
今回は一相式の光学式エンコーダを作りましたが、モーターが入力とは逆回転してしまった場合や、モーター以外の物の正転逆転も読めるように、余裕があるときに二相式の光学式エンコーダも作ってみたいと思います。
次はmahato_straguleさんです。よろしくお願いします。
6月11
はじめまして。ロ技研でアシスト研の15 小林といいます。
主に電子工作をしています。
今日は部室3DプリンタのFlashAir化について書きます。
これは、ロ技研の部室にある3Dプリンターです。
この3Dプリンタは、SDカードのファイルを読み込む方式のため、プリントする時は
①まず部室のPCにSDカードを刺し、.zcodeファイルを生成して書き込み
②そのSDカードを3Dプリンタに挿し替え
③そしてプリンタ本体で操作する
という手順を踏まなければならず、面倒でした。
そこで3DプリンタのSDカードをFlashAirに替え、部室netに接続することが出来れば無線LAN経由でファイルを送信できるので、SDカードを挿し替えることなくプリントを行うことができ便利だろう
ということで、実装してみました。
今回使用した「FlashAir」です。
このFlashAirは、SDカードの形をしていて、挿した機器には普通のSDカードとしてふるまいながらも、無線LANを内蔵していて、SDカード内のファイルを無線経由で共有できるという製品です。FlashAir内にWebサーバーが内蔵されていて、SDカード内のファイルをHTTPのGETで取得したり、POSTで書き換えたりできます。
詳細な設定方法などは研究報告書に書くとして、使い方を説明します。
--------3DプリンタのFlashAirの使い方--------
①3Dプリンタの電源が入っている状態でないと無線LANが繋がらないので、まず電源を入れてください。(電源を入れてからLANに繋がるまで少し時間がかかります。)
②FlashAirにアクセス
部室パソコン(右側)の場合は、デスクトップの右下に「3Dプリンター FlashAir」というアイコンがあるので、これを開きます。
自分のパソコンで接続したい場合は、パソコンを部室NETに繋いだ状態でブラウザを立ち上げ、アドレスバーに " http://3dprinter/ " と入力します。(これで繋がらない人はプリンタの近くに貼ってあるipアドレスを入力してみてください。)
3Dプリンターに刺さっているFlashAirに現在入っているファイルの一覧が表示されます。
③ファイルを転送
ファイルをFlashAirに転送する時は、②の画面の下の方の「アップロード」というリンクをクリックします。
新しくタブが開きます。
「ファイルを選択」をクリックし、
これからプリントしようとする.zcodeファイルを選択しOKで閉じ、
最後に「submit」ボタンをクリックすると転送が始まります。
読み込みが終わってから(上のくるくるに注目)”Success”と出たら転送が完了です。
これで3DプリンタのSDカードに.zcodeファイルが書き込まれました。
タブを閉じて前の画面に戻り、「更新」ボタンをクリックすると、いまアップロードしたファイルが追加されたのが確認できると思います。
PCの操作は以上です。あとは3Dプリンタを操作してプリントを開始できます。
もし直前に転送したファイルがプリンタで表示されない時は、一度メニューに戻ってから再度ファイル一覧に移動すると表示されるようになります。
--------------------------------
操作方法は以上です。是非利用してみてください。
これで、上を向いていてごみの入りやすいSDカードホルダーを完全に閉じることができ、ゴミが入って故障するリスクを減らすことができました。
ところで上の写真の右のほうと画面の下あたりに何かありますが、
これは「twitterの3Dプリンターbot」のための機器です。
次回はこの3Dプリンターbotの紹介をします。
主に電子工作をしています。
今日は部室3DプリンタのFlashAir化について書きます。
これは、ロ技研の部室にある3Dプリンターです。
この3Dプリンタは、SDカードのファイルを読み込む方式のため、プリントする時は
①まず部室のPCにSDカードを刺し、.zcodeファイルを生成して書き込み
②そのSDカードを3Dプリンタに挿し替え
③そしてプリンタ本体で操作する
という手順を踏まなければならず、面倒でした。
そこで3DプリンタのSDカードをFlashAirに替え、部室netに接続することが出来れば無線LAN経由でファイルを送信できるので、SDカードを挿し替えることなくプリントを行うことができ便利だろう
ということで、実装してみました。
今回使用した「FlashAir」です。
このFlashAirは、SDカードの形をしていて、挿した機器には普通のSDカードとしてふるまいながらも、無線LANを内蔵していて、SDカード内のファイルを無線経由で共有できるという製品です。FlashAir内にWebサーバーが内蔵されていて、SDカード内のファイルをHTTPのGETで取得したり、POSTで書き換えたりできます。
詳細な設定方法などは研究報告書に書くとして、使い方を説明します。
--------3DプリンタのFlashAirの使い方--------
①3Dプリンタの電源が入っている状態でないと無線LANが繋がらないので、まず電源を入れてください。(電源を入れてからLANに繋がるまで少し時間がかかります。)
②FlashAirにアクセス
部室パソコン(右側)の場合は、デスクトップの右下に「3Dプリンター FlashAir」というアイコンがあるので、これを開きます。
自分のパソコンで接続したい場合は、パソコンを部室NETに繋いだ状態でブラウザを立ち上げ、アドレスバーに " http://3dprinter/ " と入力します。(これで繋がらない人はプリンタの近くに貼ってあるipアドレスを入力してみてください。)
3Dプリンターに刺さっているFlashAirに現在入っているファイルの一覧が表示されます。
③ファイルを転送
ファイルをFlashAirに転送する時は、②の画面の下の方の「アップロード」というリンクをクリックします。
新しくタブが開きます。
「ファイルを選択」をクリックし、
これからプリントしようとする.zcodeファイルを選択しOKで閉じ、
最後に「submit」ボタンをクリックすると転送が始まります。
読み込みが終わってから(上のくるくるに注目)”Success”と出たら転送が完了です。
これで3DプリンタのSDカードに.zcodeファイルが書き込まれました。
タブを閉じて前の画面に戻り、「更新」ボタンをクリックすると、いまアップロードしたファイルが追加されたのが確認できると思います。
PCの操作は以上です。あとは3Dプリンタを操作してプリントを開始できます。
もし直前に転送したファイルがプリンタで表示されない時は、一度メニューに戻ってから再度ファイル一覧に移動すると表示されるようになります。
--------------------------------
操作方法は以上です。是非利用してみてください。
これで、上を向いていてごみの入りやすいSDカードホルダーを完全に閉じることができ、ゴミが入って故障するリスクを減らすことができました。
ところで上の写真の右のほうと画面の下あたりに何かありますが、
これは「twitterの3Dプリンターbot」のための機器です。
次回はこの3Dプリンターbotの紹介をします。
5月5
こんにちは 15 のもとです。
前回ののもットアーム(ハード編)の続編です。
五本指のロボットハンドをどうやって制御しようかと考えたときに、人型の手なのだからコントローラーではなく、やっぱりマスタースレーブ方式にしようと思い立ち、 興味があったleapmotionを使ってみようと思いました。
←leapmotion
leapmotionについてはggってください。
leapmotionを使うことによって指や手の座標やベクトルを読みとることができ、その情報によって指や手のひらの角度、向きを決めています。
また肘から肩までの制御には手のひらの座標をもとにしたIK(逆運動学)を実装してみました。
leapmotionの情報から各サーボモーターに指定する角度を計算するのはパソコン側で行い、そのデータを8bit内に正規化してシリアル通信でnucleoF401に送っています。(通信の闇を味わった)
今回ののもットアームの製作にかかった期間はなんと2か月ちょっと!
これだけ早く作れたのは間違いなく3Dプリンターのおかげです、機械を作るのが不得手な回路制御の人もこれを活用して機体を作ってみてほしいです。
blogには作品紹介として概要をさらっと紹介してきました、詳しくは研究報告書にまとめていきたいと思います。製作を助けてくれたみなさん、特に さはら君、あってぃ!さん ありがとうございました。
前回ののもットアーム(ハード編)の続編です。
五本指のロボットハンドをどうやって制御しようかと考えたときに、人型の手なのだからコントローラーではなく、やっぱりマスタースレーブ方式にしようと思い立ち、 興味があったleapmotionを使ってみようと思いました。
←leapmotion
leapmotionについてはggってください。
leapmotionを使うことによって指や手の座標やベクトルを読みとることができ、その情報によって指や手のひらの角度、向きを決めています。
また肘から肩までの制御には手のひらの座標をもとにしたIK(逆運動学)を実装してみました。
leapmotionの情報から各サーボモーターに指定する角度を計算するのはパソコン側で行い、そのデータを8bit内に正規化してシリアル通信でnucleoF401に送っています。(通信の闇を味わった)
今回ののもットアームの製作にかかった期間はなんと2か月ちょっと!
これだけ早く作れたのは間違いなく3Dプリンターのおかげです、機械を作るのが不得手な回路制御の人もこれを活用して機体を作ってみてほしいです。
blogには作品紹介として概要をさらっと紹介してきました、詳しくは研究報告書にまとめていきたいと思います。製作を助けてくれたみなさん、特に さはら君、あってぃ!さん ありがとうございました。
カテゴリー