2018年1月18日木曜日

もふもふの入力インタフェースの作成日記(その2)

前回の記事の続き(もふもふの入力インタフェースの作成日記(その1)

センサの取得値(生データで,FFTかけてない)はこんな感じになった.
全体的に取得値が低い問題はセンサを曲げたりして遊んでたから壊わしたかも...

この段階で,FFTかけて機械学習させてみると,触ったときと触っていないときの識別は90%くらいの精度で認識できていた(逆に,撫でた・触ったの識別があやしい).



触れてないとき

触れたとき

撫でたとき

センサ変えても同じであれば,アンプで信号増幅するか,裏紙を当てて振動を増幅させればいいかなー??

2018年1月17日水曜日

もふもふの入力インタフェースの作成日記(その1)

まえがき:
output学習すると良いと@kakakakakkuさんがこの前の勉強会でおっしゃられているのを見てひさびさにブログを書いた次第.

やってること:
社内向けのイベントで「“もふもふの入力インタフェース”があったらいいな〜」と,ふと思ってCFPを出してみたらすんなり通ったので開発することになった.
最終的にはVR内でケモノとかをなでられるようにしたいが,ひとまずはコレ(キーボード入力できるようにする)で

イメージとしては,こんな感じで



ファーに貼っつけたセンサの値をArduino microで取得して,Arduino microのHID機能を使ってPCにキーボード入力として認識させる.

実際のものはこんなの

ファー(毛皮):

左に伸びてるのがセンサ用の銅線

Arduino:




取得したデータをFFTにかけるところまではすんなりできたので,ここからどうやって,触れた・触れてない・なでたを認識・検知するか...
まぁ,どうやって識別するかは自分の中で答えが出てるけど(もう進めているけど),ココに書くのはまた今度で!

2014年12月11日木曜日

電気二重層キャパシタ(EDLC)を用いた バイクのバッテリーレス化


自分の原付バイクのバッテリーが寿命を迎えたため、これを機にEDLCでバッテリーレス化した
私は、電子工作の知識はそれほど有してなかったが今回の実験の無事成功を確認できた




























使用した部品

  • 電気二重層コンデンサー10F3V 6個
  • 片面ガラス・ユニバーサル基板 2x47.5mm 1個
  • ポリカーボネートケース 1個
  • ゴムシート 1個
  • 抵抗2kΩ 6個
  • ダイオード 6個

商品金額合計は約¥2,000ほどであった

EDLCのバランサー回路を調べていると、このような特許が引っかかったので少し改良して、
今回購入したコンデンサーの耐圧に合うようにダイオードを挟む形にした

また、抵抗も3kΩがあればそちらを使いたかったが、家に2kΩが大量に余っていたのでそちらを使用した
実際、どっちが適当か計算すれば分かると思うが自分には未知の分野なので放置
※結局、適当に作ってもEDLCのバランス回路として動いてくれたので、よしとした

防水加工をするために、ポリカーボネートケースに入れ
下にはゴムシートを引いて絶縁性を確保した(無くてもいい)

↓回路を寄せすぎて1つだけ抵抗が浮くような配置になってしまった




























ふたを閉めるとこうなる





























■追記

コンデンサ3つのみの簡易版だが,回路図を以下に示す.

2014年12月8日月曜日

CentOS6.5にOpenStack のインストールと設定 (grizzly)


CentOS6.5にEOLとなったOpenStack Grizzlyのインストール方法の覚え書き

久しぶりに、OpenStackを一から構築しようとすると問題が発生した

Installing Dependencies... [ DONE ]
Copying Puppet modules and manifests... [ DONE ]
Applying Puppet manifests...
Applying 192.168.0.2_prescript.pp

ERROR : Error during puppet run : err: /Stage[main]//Exec[update-selinux-policy]/returns: 
change from notrun to 0 failed: yum update -y selinux-policy-targeted returned 1 instead of one of [0] at /var/tmp/packstack/573688ed60034e2cb2c4801220f695e2/manifests/192.168.0.2_postscript.pp:9

Please check log file /var/tmp/packstack/20141207-143446-waaskW/openstack-setup.log for more information

もしくは、このようなエラー


私が参考にしたフォーラムに手順が書いてあるが、
今回は私がこのフォーラムを参考にし、この状態で正しくインストールができるか検証した
(CentOS6.4ではnetnsがデフォルトで使用できないので、CentOS6.5にインストールを行った)

ちなみにほとんどの内容は前回記事と同じである

まずは、前回記事通りにIP固定化やSELinuxをpermissiveにし、
OpenStack grizzlyのリポジトリのURLが変更されていることに注意しつつ進める

# yum install -y openstack-packstack まで終了したら以下の手順をはさむ

#yum install audit-libs-python libselinux-python libsemanage-python policycoreutils-python selinux-policy selinux-policy-targeted setools-libs setools-libs-python audit audit-libs policycoreutils

#mv /usr/share/selinux/devel/include/services/swift.if /usr/share/selinux/devel/include/services/swift.if.old

#rpm -e --justdb selinux-policy.noarch  --nodeps
(↑環境によってselinuxのバージョンは違うので適宜合わせる)

#wget https://repos.fedorapeople.org/repos/openstack/openstack-havana/epel-6/openstack-selinux-0.1.3-2.el6ost.noarch.rpm

#rpm -ivh openstack-selinux-0.1.3-2.el6ost.noarch.rpm

ここまでを実行後、answerファイルを作成し下記コマンドを実行する
この手順からは、前回記事と同じである

#packstack --answer-file=ans.txt


以上





2014年9月1日月曜日

OpenStack python-keystoneclientを使ってみる

OpenStackはUI上で様々な操作ができるが、APIを通じて処理を自動化できる。

今回は、操作した記録をここに残す。
演習中はbpythonを使用した。

bpythonを起動して、以下を入力する。

●認証方法

from keystoneclient.v2_0 import client
keystone=client.Client(auth_url="http://127.0.0.1:35357/v2.0",
username="admin",
password="hogehoge",
tenant_name="admin")

※環境によって、auth_urlアドレス、usernameユーザ名、passwordパスワードを設定する。
入力して、エラーが出なければ認証に成功している。
















●テナントの列挙

テナントのリストの取得は、以下のコードで可能

keystone.tenants.list()

bpythonでは、補完機能があるため
途中まで入力してTABキーを押すと文字が保管されるので便利である。
















途中まで入力し、















TABキーで選択する
















そして、keystone.tenants.list()を実行すると上図のようになる。
print関数を使わなくても内容が表示される。

以下、ここに載せきれないほど様々な関数が用意されている。

●テナント作成
keystone.tenants.create("tenant_name","description",True)

●テナント削除
keystone.tenants.delete("tenant_id")

●ユーザの列挙
keystone.users.list()

●新規ユーザ作成
keystone.users.create("name", "password", "email",None, True)

●ユーザの有効・無効化
keystone.users.update_enabled( "user_id", {True or False} )

●ユーザの削除
keystone.users.delete ("user_id")