saitetu diary

ロボット,IoT,アプリ開発などの備忘録的なブログです。機械加工,電子工作とかも。。

Unity,Blender,C#,Javaなどの備忘録的なブログです。電子工作やArduinoなんかも。

Fusion360でベクター画像を取り込んだ際のTips

Fusion360SVGベクター画像を取り込んで,デザインに使用する際に,個人的に使えると思ったTipsです. まあ当たり前のことではありますが..

 1. オフセットを使う

3Dプリンタ出力前提で設計しているときに,ベクターのイラストをそのまま使おうとすると全体が面部分になってしまい,想定しているデザインにならないことがあります. そういったときにオフセット機能を使うと線を二重にすることができ,元のベクターの線を面にすることができます.

f:id:saitetutan:20181113041719p:plain

例えば,こんな感じのGopherくんのイラストを取り入れたいときに

f:id:saitetutan:20181113040545p:plain

オフセットを使えば

f:id:saitetutan:20181113040611p:plain

こんな感じの線が面状態になって表れてくれます.

2.どうしようもない所はスロットを使う

ただ,上の画像になるまで,どうしてもオフセットだと出来ない線がいくつかありました. そういうところはスロットを使ってごにょごにょしてます.

f:id:saitetutan:20181113041507p:plain

スロットの使い方はここのブログがわかりやすいです.

licensecounter.jp

余談

上記のをいろいろ弄って出力すると

f:id:saitetutan:20181113040805j:plain

こんな感じのGopherペンスタンドの出来上がりです.

github.com

AnkoでのSQLiteの関数まとめ

完全に個人的な備忘録用のものですが、KotlinでAndroidアプリを開発する際にSqliteを使うなら、Ankoが便利ですが、割と関数の引数の書き方で毎回リファレンス見るのめんどくさいので、まとめておこうかと。。

選択(SELECT)

ex) idが11かnameがTaroの物を取得

db.select("TableName", "ColumName")
    .whereArgs("(id > {Id}) or (name = {Name})",  
        "Id" to 11,
        "Name" to "Taro",
        )

挿入(INSERT)

ex) idが15でnameがHanakoのレコードを挿入

db.insert("TableName", 
    "id" to 15,
    "name" to "Hanako"
)

更新(UPDATE)

ex) nameがIchiroのidを2番に更新

update("TableName", "name" to "Ichiro")
    .where("id = {userId}", "userId" to 2)
    .exec()

削除(DELETE)

ex) idが50のレコードを削除

delete("TableName", "id = {userID}", "userID" to 50)

Raspbian Strech LiteでWiFiつなげようとしたらCould not communicate with wpa_supplicantって怒られた件

久しぶりの更新です。
タイトルのままですが、、

Raspberry PI zero Wに新しいRaspbianのディストリビューションStrechが来ましたね。
Download Raspbian for Raspberry Pi

せっかくなので僕も入れてみようと思って、USBからSSHで接続した矢先、なぜか無線LANに接続できませんでした。

wpa_supplicant.confを書き換えても接続している様子がないので、raspi-configからNetWorkの設定にアクセスしようとしたらタイトルの、could not communicate with wpa_supplicant ってエラーとhere was an error running option N2 Wi-fiってエラーが返ってきました。

軽く調べてみた所、国別コードがないのが原因という記事も見かけたのですが、そもそもconfを読んでる気配がないので、デバイスがdisableになってるのではないかと思いsudo ifup wlan0した所、ifup: unknown interface wlan0と返ってくる結果に。。
やっぱりwlan0がdisableになっているようです。

解決方法

こちらの公式フォーラムを参考にさせて頂きました。
Raspbian Stretch: Wifi not starting on boot - Raspberry Pi Forums

まず

sudo vim /etc/network/interfaces

で、最下部に

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

を追加し保存します。
これで起動時にwlanが許可されます。
その後、

sudo systemctl enable wpa_supplicant.service

でwpa_supplicantを再起動し、

sudo reboot now

でRaspiを再起動すれば完了です。

これで、raspi-configからNetworkの設定を開けてもエラーが返されなくなりました。
もし同じ症状で困っている方がいれば、参考にしていただけると幸いです。

また、RaspiでのUSBからのSSHに関してはいろいろな記事がありますが、Windows10からアクセスする際に関しては、僕もQiitaに記事を書いておりますので、そちらもどうぞ。
qiita.com

では。

電気工事士二種

IoT系のことをやるときにどうしてもコンセントを弄りたくなることが多かったので、先日電気工事士二種の資格をとりました。

この資格はどうしても専門学校などに通う方や現場で働いている方の取得が多く、自分みたいな完全に独学で取りたいと思っている方に参考になる記事が少ないと感じたので、役に立てばと思い書きます。

筆記試験

筆記試験ですが、ぶっちゃけると数日勉強すれば行けます。(自分はほぼ一夜漬けです)
とりあえず、下の本を一通り読めば基本的な知識は網羅できますし、出題される問題は過去問を数回解けば、見たことのある物ばかりな筈です。

また、計算問題は解かなくて良いという記事がよく見られますが、正直中学物理レベルですので、電気の計算に苦手意識のある方以外は得点源にした方がいいと思います。(特に理系の方は絶対解いた方が良いです)

技能試験

独学で勉強していて一番大変なのがこの技能試験対策です。
自分は下の用な必要な部品がセットになっている物を購入してDVDを見ながら一通り作ってみました。
ホームセンターで自分で揃えたら安いといった話がネット上で散見されますが、実際に計算してみるとそこまで変わりませんし、DVDなどもついてこないので、セットを買うことをオススメします。(というかホームセンターに売ってない物もあります。)

単線図→複線図は必ずかけるようにしておいた方がいいと思います。
また、結構時間がシビアになると思いますので、早く正確に組み立てられるように練習しておくといいと思います。
本試験時、自分はあと3分前という段階で圧着ミスに気づき、あと数秒という所でギリギリ終わらせました。。
あと、ワイヤストッリッパー(VVFストリッパ)は必ず持っておいた方がいいと思います。

これから受ける方は頑張ってください!


資格系の記事が続いていますので、次回は技術系の記事を書きたいと思います。

応用情報技術者試験受けてきました。

最近卒論やバイト、個人的なアプリ開発などで忙しくてブログの更新が止まっていました(何度目)
アクセス数は徐々に伸びてきてはいるのですが,もっと伸ばしていきたいので更新頑張っていきたいと思います。

今回は昨年の秋に受けた応用情報技術者試験の結果が返ってきまして合格しておりましたので、そのことを。

応用情報技術者試験とは

"技術から管理、経営まで、幅広い知識と応用力が身に付き、システム開発、IT基盤構築などの局面で、高いパフォーマンスを発揮することができます。"

https://www.jitec.ipa.go.jp/1_11seido/ap.html

とのことで、ここでは特にそれ以上のことは書きません。
ここでは自分が行った学習法の紹介を致します。行ったことは以下の通りです。少しでも参考になれば。。

1.応用情報技術者試験ドットコム

ほとんどこちらのサイトでの勉強が主でした。スマホに対応しているので通学中でもちょくちょくやっていました。
特にマネジメントやストラテジ系の知識があやふやでしたので重点的にこの分野を行いました。
期間としては1~2ヶ月ほどだったと思います。大体500問程はこなしたと思います。
www.ap-siken.com

2.栢木先生の基本情報技術者教室: イメージ&クレバー方式でよくわかる


前回基本情報を取った時に使用した本です。知識の確認はこれで行いました。

3.2018 応用情報技術者 午後問題の重点対策 (午後問題対策シリーズ)


午後対策はこれを使いました。ただ、金欠だったため図書館で5年程前のを借りて勉強したのと、午後対策は時間がかなり掛かりそうだったんでほとんどページを開けませんでした。。

4.iPad pro

iPad pro とApple pencileの組み合わせでノートを作りました。知らなかった言葉や解き方などをまとめました。
アプリはmetamoji Note liteで↓の感じに10ページ程まとめました。紙のノートと違って場所を取らずにどこでも編集&閲覧ができるのが良かったです。(字汚くてすいません。。)

f:id:saitetutan:20180127133549p:plain

やったことは以上の内容で、恐らく全て合計で20~30時間分ぐらいはかかったと思いますが、割りと過去問に類似した問題が多く出るので、難易度はそんなに高くはなかった気がします。
ITに詳しい方なら数時間ぐらいの勉強でも合格できるのかもしれません。

ロボットアーム製作日誌(ソフト編:後編 IoT,Unity)

ロボットアーム製作日誌最終回です。

 

前回まででとりあえず動くところまで行きましたので、今回はスマートフォンアプリからロボットアームを動かす所を書きます。

 

4.Websocket

まず、アプリからの制御と言っても、インターネットを介して制御するため、そこの部分の実装がまず必要になります。

 

今回はリアルタイム性が必要なことを考え、Websocketを使用しました。

学祭で展示するため、大学のポートを開けられないことから、VPSを経由する実装にしました。

 

まず、スマートフォンからVPSにwsで接続し、VPSがechoするだけ(送られてきたのを返すだけ)のサーバーとして働き、ロボットアームのラズパイもVPSに接続しておくことで、そちらにも送られるという形を取っています。

 

ラズパイ上はPythonのwebsocketclientを使用し、VPSではnode.jsでechoサーバーを実装しました。

 

 5.アプリ制御

上記でのwebsocket通信によって、角度をjson形式で送るとロボットの関節が動くようになりましたので、今度はアプリからwsを投げられるようにします。

 

アプリは直感的にどこの部分が動くのかがわかるようにするため3Dを使いたく、Unityを使用しました。

 

ロボットアームの3Dモデルは、Fusion360にて設計した際のCADデータを.objにコンバート、エクスポートして、Unityにインポートしました。

 コンバートの手順は以下のリンク先を参考にしました。

http://home3ddo.blog.jp/fusion360-import-export

 

ただ、CADデータといえどもOBJにしてしまえば締結部分のデータなどは失われてしまいます。今回は回転部分が多くありましたが、ここの部分のデータが無くなってしまったので、Unity上で設定する必要があります。

 

 Unity上でサーボモーターを再現するの方法として、transform.Rotateなどをいじる方法もありますが、今回の場合オブジェクトが大量に親子属性を持っており、それぞれがlocal座標を持っており、パラメータをいじるだけでこれを実現するのは困難です。

そこで、今回はHingejointコンポーネントを使用しました。これは本来ドアや、ドアノブなどのjoint部分に使用するようですが、motorクラスが用意されており、サーボモータとしても使用することができます。(後日Qiitaに記事を書くつもりです)


f:id:saitetutan:20171117100505j:image

 

これを6つの関節全てに適用して完了です。

あとはスライドバーを用意してUIは完成です。

あとはUnityからWebsocketを使用する為、websocket-sharpを利用しました。

websocket-sharpは以下のリンクを参考にしました。

https://qiita.com/oishihiroaki/items/bb2977c72052f5dd5bd9

 

できたアプリはこんな感じです。


f:id:saitetutan:20171117092850j:image

 

デザインにこだわる時間がなかったのでアレですが、下のスライドバーで角度を指定することで、

 


f:id:saitetutan:20171117092940j:image

 

このように動かすことができます。

 


f:id:saitetutan:20171117093005j:image

 

すべての関節が動かすことができるので、この様に動かせ、さらに、実際のアームもwebsocketを経由して動かすことができます。

 

6.まとめ

とりあえず、アプリから動くところまでは完成しましたが、課題が多くできました。

 

一番問題なのが、アルミの強度で、1mm厚だとなかなか自重やモーターのトルクに負けて曲がってしまったり振動してしまうことがありました。

これは全体を作り直す必要がありますので、またロボットアームを作りたくなったら挑戦したいと考えています。

ロボットアーム制作日誌(ソフト編 前編 制御)

ロボットアーム製作日誌3回目です。

前回はこちら

 

http:// http://saitetutan.hatenablog.jp/entry/2017/11/07/060400

 

3.制御

とりあえず、ラズパイから制御しますが、サーボモータドライバはこちらの既製品を使いました。

スイッチサイエンスから発売されてる、Raspberry Pi HATのPCA9685

 https://www.switch-science.com/catalog/2181/


f:id:saitetutan:20171109213707j:image

 

2400円程と、そこそこかかってしまいましたが、自作でやる時間がなく、エッチングするにしろ委託するにしろ、そんなには変わらない(むしろ安い?)気がします。

また、HATなのでスッキリして良かったです。

 

また、内部の制御はPythonで書きましたが、Adafruit社から提供されているPCA9685用のライブラリがとても便利に使えました。

 

サーボ用の電源ですが、たまたま拾った ACアダプターが5.1V3Aのいい感じの値だったのでそのまま流用します。大きめの3端子レギュレーターが載ってたので、電圧もそのままで入れました。

 

本来ならば、逆運動学を解いて指定した場所に掴みに行くという制御が理想ですが、如何せん本体の寸法精度など、全く信用できないので、とりあえず角度制御でいきます。(後日、逆運動学はやるかもしれません)

 

とりあえず、キー入力に従って動くようにしました。

 
f:id:saitetutan:20171109213311j:image

 

次回はIoT的な要素を入れるため、インターネットからの制御ができるようにした所を次回書きます。