<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3980187635094452050</atom:id><lastBuildDate>Fri, 25 Oct 2024 01:37:19 +0000</lastBuildDate><category>Ubuntu</category><category>OpenRTM</category><category>C#</category><category>C++</category><category>Depth Sensing</category><category>PerC</category><category>stm32</category><category>Make</category><category>Eclipse</category><category>Haptics</category><category>Oculus Rift</category><category>Unity</category><category>realtime</category><category>ARM</category><category>Android</category><category>ROS</category><category>mbed</category><category>road bike</category><title>背筋トレーニング日記</title><description>このブログでは日々の背筋トレーニングの実況をしていきたいと思います。</description><link>http://mohammedari.blogspot.com/</link><managingEditor>noreply@blogger.com (Kazuyuki Arimatsu)</managingEditor><generator>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-2949161596610746915</guid><pubDate>Sun, 03 Oct 2021 15:18:00 +0000</pubDate><atom:updated>2021-10-04T10:42:35.827+09:00</atom:updated><title>Kailh ChocV2の完全無線分割キーボードを作ってZMKで動かした話</title><description>&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;TL;DR&lt;/h3&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Kailh Choc V2スイッチ対応のキーボードを新しく設計しました&lt;/li&gt;&lt;li&gt;3Dプリントのインテグレーテッドトッププレートでスイッチを嵩上げして、対応キーキャップを増やしています&lt;/li&gt;&lt;li&gt;フレキ接続でキーマトリクス基板とマイコン基板を分割して有線版と無線版を作りましたが、組み立てが面倒なのと設計の自由度が下がってしまうのでおすすめしません...&lt;/li&gt;&lt;li&gt;無線版のファームウェアにはQMKではなくZMKを使用しました&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;はじめに &lt;/b&gt;&lt;/h3&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://mohammedari.blogspot.com/2021/01/thumbsplit58.html&quot; target=&quot;_blank&quot;&gt;前回Thumbsplit58を設計した&lt;/a&gt;時点で理想のキー配列が固まり、エンドゲームに到達したかに思われました。使い心地はほとんど問題なく、実際毎日使っているわけですが、使用しているスイッチがKailh Chocのためキーキャップのバリエーションが少なく、カッコいいキーキャップが発売されても指を咥えて見ていることしかできませんでした...&lt;br&gt;&lt;br&gt;そこでCherry MX互換のカッコいいキーキャップを嵌めて見た目もエンドゲームなキーボードを目指すべく、Choc V2スイッチを使って新しいキーボードを作りました！&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQalsrye9S_7kzfqwUhYEiOEA6qFRes4uR8ixso7I6LwS7gDBLLG8LtpRML5HU7owjQKtTKHbWwI8bU48nHdMHgzVTONcl37uWNVyLiGIWykpU6-Sa9uPbMH8dKy7Vz079rWYoS0gK3Ks/s4912/DSC06312.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3264&quot; data-original-width=&quot;4912&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQalsrye9S_7kzfqwUhYEiOEA6qFRes4uR8ixso7I6LwS7gDBLLG8LtpRML5HU7owjQKtTKHbWwI8bU48nHdMHgzVTONcl37uWNVyLiGIWykpU6-Sa9uPbMH8dKy7Vz079rWYoS0gK3Ks/w400-h266/DSC06312.JPG&quot; title=&quot;Thumbsplit58 W&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Thumbsplit58 Wired&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1R-uBJdnMHYca7VzTveDdPxKym60fLg41E8O88FjdJYbU_J-4FDXfCJPADNQfmK3yyZgri-6E8XAcf939a_5SDx5o9afnC5FA2e1qCCRIVGXvY2ow2mgZytcHMFuYrWE8mwbhOcrJaLc/s4912/DSC06302.JPG&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3264&quot; data-original-width=&quot;4912&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1R-uBJdnMHYca7VzTveDdPxKym60fLg41E8O88FjdJYbU_J-4FDXfCJPADNQfmK3yyZgri-6E8XAcf939a_5SDx5o9afnC5FA2e1qCCRIVGXvY2ow2mgZytcHMFuYrWE8mwbhOcrJaLc/w400-h266/DSC06302.JPG&quot; title=&quot;Thumbsplit58 BLE&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Thumbsplit58 BLE&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br&gt;このとき実験的な試みとして、3Dプリントのインテグレーテッドトッププレートでスイッチを嵩上げすることで、キー押下時のキーキャップとトッププレートのクリアランスを確保し、従来Choc V2スイッチに嵌めるとトッププレートに当ってしまっていたキーキャップも使えるようにしています。また、設計を使い回せるように、フレキ接続でキーマトリクス基板とマイコン基板を分割し、AVRを使った有線版マイコンボードと、nRF52を使った無線版マイコンボードを作りました。&lt;br&gt;&lt;br&gt;ファームウェアの方も少し実験的な試みとして、無線版のマイコンボードではQMKではなくZMKを使い、BLEの完全無線キーボードとして動作させています。ZMKの設定などはあまり解説しているブログがないので、備忘録的な意味も含めてこのあたりのことをブログに残しておこうと思います。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Kailh Choc V2キースイッチの嵩上げ&lt;br&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;a href=&quot;http://www.kailh.com/en/Products/Ks/CS/755.html&quot; target=&quot;_blank&quot;&gt;Kailh Choc V2スイッチ&lt;/a&gt;はKailh社製のロープロファイルキースイッチ (Chocシリーズ) の十字ステム版で、キーキャップをはめる部分がCherry MXスイッチ互換になっているため、Cherry MXスイッチ向けのキーキャップをはめることができるようになっています。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;ところがChoc V2スイッチにはすべてのCherry MXスイッチ向けのキーキャップをはめることができるわけではありません！&lt;a href=&quot;https://salicylic-acid3.hatenablog.com/entry/ajisai74-build-guide#%E3%82%AD%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81&quot; target=&quot;_blank&quot;&gt;AJisai74のビルドガイド&lt;/a&gt;によると、&lt;/span&gt;&lt;span&gt;&lt;b&gt;CherryプロファイルやGRIDプロファイルはスイッチ自体とキーキャップが干渉してしまう&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;ようです。DSA、ADA、OEM、SAなどではキーキャップとスイッチは干渉しないのですが、これらのキーキャップを使った場合でもキー押下時にトッププレート取り付け位置よりもキーキャップが下側に来てしまうので、&lt;/span&gt;&lt;span&gt;&lt;b&gt;トッププレートを使うとキー押下時にキーキャップがトッププレートにあたってしまいます&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #fcff01;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRHBUd01vMzLP1iZkcjqzwgp-J6eJE-LexwEqcirM_Sets-OBvmtn8JmuOgKonJJIPOsBm75sD4SkfnyFM2OKkpeYwGheWCYvVNKwnpDLk5Zw5preV1FHMhTyVVT8kIyb-V-wMHfzKbAs/s4032/PXL_20210213_072708001.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRHBUd01vMzLP1iZkcjqzwgp-J6eJE-LexwEqcirM_Sets-OBvmtn8JmuOgKonJJIPOsBm75sD4SkfnyFM2OKkpeYwGheWCYvVNKwnpDLk5Zw5preV1FHMhTyVVT8kIyb-V-wMHfzKbAs/w400-h300/PXL_20210213_072708001.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DSAキーキャップがキー押下時にトッププレートと接触しています&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;なので、Choc V2スイッチ対応の自作キーボードキットは、基本的にトッププレートを使用していません。(c.f. &lt;a href=&quot;https://salicylic-acid3.hatenablog.com/entry/ajisai74-build-guide&quot; target=&quot;_blank&quot;&gt;AJisai74&lt;/a&gt;、&lt;a href=&quot;https://github.com/74th/sparrow62-buildguide&quot; target=&quot;_blank&quot;&gt;Sparrow62&lt;/a&gt;)&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ところが、トッププレートを使わない場合はPCBがむき出しになってしまうのでデザインが限られてしまうのと、スルーホール部品がある場合には半田付け部などに汚れやホコリが付着しやすくなってしまいます。PCBが直接打鍵の荷重を受けるので、打鍵感や打鍵音にも難点があるかもしれません。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;そこで、Choc V2スイッチでトッププレートを使いつつ、キーキャップとトッププレートが干渉しないようにするため、&lt;b&gt;キースイッチを1mm嵩上げするインテグレーテッドトッププレートを3Dプリンタで作りました。&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitfUh7bmGZNhRQ8ju10Vsp9Yvkd-B-UQmGKHqA4oIomHsC6Si4gKPpoadXR4LSVeIEnVfCdsrvg7r7RAM-sNgxU2kdZD58fw3BdCXqWpvx5FQ56lDU13NRmCbWhRATUb8-wzdFu5mJpFM/s1265/thumbsplit58ble_chocv2_liftup.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;542&quot; data-original-width=&quot;1265&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitfUh7bmGZNhRQ8ju10Vsp9Yvkd-B-UQmGKHqA4oIomHsC6Si4gKPpoadXR4LSVeIEnVfCdsrvg7r7RAM-sNgxU2kdZD58fw3BdCXqWpvx5FQ56lDU13NRmCbWhRATUb8-wzdFu5mJpFM/w640-h274/thumbsplit58ble_chocv2_liftup.png&quot; width=&quot;640&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;インテグレートトッププレートの断面&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;トッププレートは板厚1mmで、スイッチの爪にかかる0.5mmのリブ部分だけ1mm嵩上げされており、キー押下時にキーキャップがトッププレートに干渉しないようになっています。トッププレートはPCBに接触するため、RGBLED以外の電子部品はすべて裏面に表面実装で実装しました。&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;PA12で刷った試作トッププレート(原理確認はできたのですが、PA12では歪んでしまったので作り直しました… ※後述)での確認の様子です。嵩上げによってキー押下時にトッププレートとキーキャップの間に余白が残っています。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-LJM08J8imRZbjovTTdd5OB5UavYxAA1_NlTM5DURWrFqOM1m2SZwxXcxEL7bUuOXe9VCHCTf1kIZ1Ua1pdcvRSnnwdjvjWzuq5makao9M-WNxUL7W4LpE-LCDSPyzlK8FQbKil4ACc/s4032/PXL_20210316_012648749.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-LJM08J8imRZbjovTTdd5OB5UavYxAA1_NlTM5DURWrFqOM1m2SZwxXcxEL7bUuOXe9VCHCTf1kIZ1Ua1pdcvRSnnwdjvjWzuq5makao9M-WNxUL7W4LpE-LCDSPyzlK8FQbKil4ACc/w400-h300/PXL_20210316_012648749.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;嵩上げによってDSAキーキャップがトッププレートと接触しなくなりました&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;PA12GBで作り直したトッププレートにスイッチを載せるとこのような感じになります。手持ちのDSAプロファイルのキーキャップでは1mmの嵩上げで接触しなくなりましたが、他のプロファイルの場合は干渉するかもしれません。その場合には、トッププレートを薄くして嵩上げ高さをさらに上げる必要があります。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiDs-oX2HLyTqJIdo8ab40jGe07mdJWvwF57HiT5Y75mo2RhsFA2rq_dzLyW38TzimB85r1FTI3hoNRFkgijxCXr_XOt2LZwp1eUcHaD9OenMkac1z1yi0vNKVgKzPomJXc2238z4K57U/s4032/PXL_20210420_150931089.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiDs-oX2HLyTqJIdo8ab40jGe07mdJWvwF57HiT5Y75mo2RhsFA2rq_dzLyW38TzimB85r1FTI3hoNRFkgijxCXr_XOt2LZwp1eUcHaD9OenMkac1z1yi0vNKVgKzPomJXc2238z4K57U/w400-h300/PXL_20210420_150931089.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;スイッチをはめた様子&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;嵩上げ部分は0.5mm厚になっており、打鍵の荷重も受けること考えると一般的なFDMの3Dプリンタでは強度を維持するのが難しいかもしれません。今回は高い形状再現性と機械強度を得るべく、&lt;a href=&quot;https://make.dmm.com/print/material/85/&quot; target=&quot;_blank&quot;&gt;DMM.makeのMJF PA12GB&lt;/a&gt;で出力しました(※詳細は後述)。まだ1ヶ月程度しか連続使用していませんが、特に破損する様子はありません。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;ロジックボードをフレキ接続 (※おすすめしません)&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回キーボードの設計を始めた当初、既に自分は理想のキー配列に到達したと感じていました。そこで、どうせキー配列が変わらないのなら共通で使い回せるキーマトリクスの基板を作っておけば、有線バージョンも無線バージョンにも使えるし、今後新作を作るときにも使い回せるかもしれない！、という考えのもと、基板を「マイコンやコネクタが載ったロジックボード」と「キーマトリクス配線とスイッチソケット、RGBLEDが載ったシールド」に分割しました。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ロジックボードはおなじみのAVRを使った有線接続のロジックボードと、nRF52モジュールを搭載した無線接続ロジックボード(※詳細は後述)を作りました。基板上にはマイコン周りの回路と、TRRSジャック、USB Type-C ハウジング、リセットスイッチが載っており、分割キーボードの背面部分に取り付けて使う想定です。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvhOodBjl26eRQp7Boy-oa8itajqpd7Z_ePmyhlNSv9Z9UPk4gxzqyTUM2OiB-R3ZFTmMtiuyBb6VebnKAZJhHoMIyXkHrknPkfpXwDBA7PIGPktdO4wM-sgWo1F-JMXS9wdgLKNh7E50/s4032/PXL_20210419_125533097.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvhOodBjl26eRQp7Boy-oa8itajqpd7Z_ePmyhlNSv9Z9UPk4gxzqyTUM2OiB-R3ZFTmMtiuyBb6VebnKAZJhHoMIyXkHrknPkfpXwDBA7PIGPktdO4wM-sgWo1F-JMXS9wdgLKNh7E50/w400-h300/PXL_20210419_125533097.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;有線接続ロジックボード (Atmel ATmega32U4)&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn1Ex-qdORWjH_oWeqr-PjZZ9crt5fDiUvd51TkYkZUQ1LZDGl_GKLE-owQp5cDrOEIDlTAp1aT2_CvyvnwfZH7rT8Ebemb231e0ioFeki3AqF1pmxkh_ujZ8X3LJchlKLVJbbwCrM4mI/s4032/PXL_20210601_141921802.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn1Ex-qdORWjH_oWeqr-PjZZ9crt5fDiUvd51TkYkZUQ1LZDGl_GKLE-owQp5cDrOEIDlTAp1aT2_CvyvnwfZH7rT8Ebemb231e0ioFeki3AqF1pmxkh_ujZ8X3LJchlKLVJbbwCrM4mI/w400-h300/PXL_20210601_141921802.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;無線接続ロジックボード (Minew MS88SF2)&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;2種類のロジックボードは、キーマトリクスの配線にスイッチソケットとRGBLEDを実装した共通のシールド基板とフレキケーブルで接続します。ROWとCOL併せて13ピンと、RGBLED用のシリアル1ピン、RGBLEDのVCC/GNDはフレキコネクタの定格電流が低いために3ピンずつ割り当てて、合計20ピンのフレキコネクタを使いました。&lt;br&gt;&lt;br&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPm9L2P_hUXzvSshFYhUKKDLmnFmlE21YFURuN6U5YT8eS_zOkZkFZ_UsjAb-oZoB5qeZu-W9BFfkhYBEDpo9WZcM3Bm22wsXd3JiVbJfNuesfvXvAZUNjH2t1dxlWZfbyXF_aRvVz8VY/s4032/PXL_20210411_132440408.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPm9L2P_hUXzvSshFYhUKKDLmnFmlE21YFURuN6U5YT8eS_zOkZkFZ_UsjAb-oZoB5qeZu-W9BFfkhYBEDpo9WZcM3Bm22wsXd3JiVbJfNuesfvXvAZUNjH2t1dxlWZfbyXF_aRvVz8VY/w400-h300/PXL_20210411_132440408.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;フレキケーブルでロジックボードとシールドを接続&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;コネクタには0.5mmピッチのMolex 50348-2000を使っています。ロック付きでフットプリントが小さいため、スイッチを180度回転させなくても行間に配置することができました。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただし、このコネクタはJLCPCBのパーツリストにはないので、自分でDigiKey等で購入して実装する必要があります。また、Molex純正のフレキがめちゃくちゃ高い (1個400円とかします…) ので、コスパは非常に悪いです…&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;また、新しいキーボードを作るときには全体的にいろいろ変えたくなるものなので、使い回すことはあまり考えるべきではないのかもしれないです…&amp;nbsp;(次に作ろうと思っているキーボードでは早速互換性を捨てる予定です…)。新しいキーボードを作るときには現状に満足できなくなったときだと思うのですが、その時に&lt;b&gt;互換性を保つことが設計上の制約になってしまって、理想を追求することができずに本末転倒になってしまう&lt;/b&gt;、というのが今回共通化を目指してみて得られた知見です。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;無線版のマイコンボードの設計 &lt;br&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;低消費電力で技適が通っている無線キーボード向けのマイコンとなると、現状はほぼ&lt;a href=&quot;https://shop.yushakobo.jp/products/ble-micro-pro?variant=37665571340449&quot; target=&quot;_blank&quot;&gt;BLE Micro Pro&lt;/a&gt; (BMP) 一択になってしまっています。Switch Scienceでは&lt;a href=&quot;https://www.switch-science.com/catalog/6939/&quot; target=&quot;_blank&quot;&gt;ISP1807を搭載したPro Micro互換のボード&lt;/a&gt;も最近発売されましたが、無線キーボードで使う場合には電源LEDを剥がしたり、USB接続時にBATに電流が流れないようにする外付け回路が必要になると思います。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回はキーボードをなるべく小さくしたかったためにBMPは使わず、技適取得済みのnRF52のモジュールを使用したボードを自分で設計することにしました。ただ、自分はリフロー設備を持っていないため、手ハンダ可能なモジュールを使う必要があります。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;nRF52の技適取得済みモジュールはいくつかあるのですが、USB接続可能 (&lt;a href=&quot;https://www.nordicsemi.com/Products/Low-power-short-range-wireless &quot; target=&quot;_blank&quot;&gt;52840 or 52833 or 52820&lt;/a&gt;) なもので、かつ手ハンダ可能なものは&lt;a href=&quot;https://www.minew.com/product/ms88sf2-3y40air/&quot; target=&quot;_blank&quot;&gt;Minew MS88SF2&lt;/a&gt;しかありませんでした。Switch Scienceでも&lt;a href=&quot;https://www.switch-science.com/catalog/6564/&quot; target=&quot;_blank&quot;&gt;ブレイクアウトボードの販売があります&lt;/a&gt;が、モジュール単品の販売はなかったので、&lt;a href=&quot;https://ja.aliexpress.com/item/4000101935456.html&quot; target=&quot;_blank&quot;&gt;AliExpressから購入しました&lt;/a&gt; (ちゃんと技適マーク付きのモジュールが届きました)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、MS88SF2には、&lt;b&gt;VBUSが外に出ていない(モジュール内部でVDDHと接続されている)&lt;/b&gt;という大きな問題がひとつあります。これはバッテリー駆動しない場合や、USBからの電源供給のみで動作する場合には問題ないのですが、バッテリー駆動とUSBからの電源供給を切り替える場合には外付け回路が必要になってしまいます…&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;VBUSとVDDHが切り離されていれば、VDDHは使用せずに電源はVDDから供給しつつUSBの内部モジュールのみをVBUSで駆動することができるのですが、VBUSとVDDHが接続されているために、USB接続時にVDDHに5Vが入って、内部レギュレータの出力がVDDから出てきてしまいます。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;回避策は&lt;a href=&quot;https://devzone.nordicsemi.com/f/nordic-q-a/63105/ms88sf2-power-configuration&quot; target=&quot;_blank&quot;&gt;Nordicでも同様の質問が上がっている&lt;/a&gt;通り、「バッテリー駆動時はVDDに入力、USB接続時にはVDDをバッテリーから切り離してVDDHにVBUSを入れる」という回路を外付けで用意する必要があります。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;自分はPch MOSFETを3.3V LDOの後にいれてVBUS接続時にバッテリーを遮断することにしました。VDDHに5Vがかかるとモジュール内部の電源回路がVDDに3.3Vを出力しますが、FETがOFFになっているのでバッテリーに電流は流れません。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKkuVsC0I0sA4JyCk6t4ZpmO3r0tYsJFHYbJyFA8JDlwOGWdomI-FqDfP2pgJUh91KruKX6C2foMGq7kKwiJ_BgriaaUYZj5BkdzoeVjLCRcnMBy9W1pxEyxLqDrUd0gWU3jqzVhF1B88/s883/MS88SF2_vbus_vdd_selection.png&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;432&quot; data-original-width=&quot;883&quot; height=&quot;314&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKkuVsC0I0sA4JyCk6t4ZpmO3r0tYsJFHYbJyFA8JDlwOGWdomI-FqDfP2pgJUh91KruKX6C2foMGq7kKwiJ_BgriaaUYZj5BkdzoeVjLCRcnMBy9W1pxEyxLqDrUd0gWU3jqzVhF1B88/w640-h314/MS88SF2_vbus_vdd_selection.png&quot; width=&quot;640&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;USB接続時のバッテリー切り離し回路&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;無線キーボードを動作させるためには何らかのバッテリーが必要になってくるわけですが、前回のキーボードでは&lt;a href=&quot;https://akizukidenshi.com/catalog/g/gB-09605/&quot; target=&quot;_blank&quot;&gt;塩化チオニルリチウム電池&lt;/a&gt;という一次電池を使用していました。この電池は流せる電流が非常に限定されている(~100mA)代わりに、体積あたりの容量が非常に大きく (単三電池型で0.5mA連続放電で2400mAh)、自己放電も少ないのが特徴になっています。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、前回キーボードを実際に毎日運用してみたところ、実測で半年～1年ぐらいしか持たない事がわかりました (&lt;a href=&quot;http://mohammedari.blogspot.com/2021/01/thumbsplit58.html&quot; target=&quot;_blank&quot;&gt;前回のブログで計算した理論値&lt;/a&gt;より少し短いです)。十分長いといえば長いのですが、それでも電池交換が面倒に感じたので、今回のキーボードは二次電池を搭載して充電できるようにしたいという思いがありました。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今のキーボードの大きさに入れるとなると、リチウムイオン電池は3.7V 500mA程度が限界になります。それだと&lt;a href=&quot;https://zmk.dev/power-profiler/&quot; target=&quot;_blank&quot;&gt;ZMK Power Profiler&lt;/a&gt;の計算ではCentral側が1 ~ 2ヶ月ぐらいしか持たない計算になります(※これはDeep Sleepありの場合でこの値のようです。Deep Sleepは現時点ではデフォルト無効になっているのですが、後述のようにZMK_SLEEPで有効にできます)。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPvW_Ktm8G5sWE-FDDBRR0UhAV4LF1qX3eQvxYu41SQn7rhNG3L0JQhnZXAUWHOyTeszBuJIEXDgygSi239b6_AEY04oNrfxFBW_oweSXilLRRGE6vXEhSWZJgJYi-RaSlofydDQaasSk/s4032/PXL_20210815_061730398.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPvW_Ktm8G5sWE-FDDBRR0UhAV4LF1qX3eQvxYu41SQn7rhNG3L0JQhnZXAUWHOyTeszBuJIEXDgygSi239b6_AEY04oNrfxFBW_oweSXilLRRGE6vXEhSWZJgJYi-RaSlofydDQaasSk/w400-h300/PXL_20210815_061730398.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;3.7V 500mAh のリポバッテリーを搭載&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;そこで、リポ充電回路を載せてUSB接続時に充電できるようにしました。といっても回路としてはMCP73831をリファレンス回路通り使っているだけです。LEDは砲弾型の2色LEDを使っていて、ステータス用にマイコンから青色を駆動、MCP73831から充電ステータス用に赤色を駆動としました。USB接続時にはRGBLEDを点灯させる可能性もあるので、充電電流は100mAとしています。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMbKEtH1l83vw77Gwf0ANfhMYsj3wfgQoJ1t0uXTgiUnzgNttKYCie6XB1LZjYKK-ux3iVZ5woSaRDTursaOcB_AQ6q3s_P6iIfUFY9G6hLOpZT3A1X_kP-r7xSmwBxNf2Mvn040gycmg/s1143/mcp73831_charger.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;330&quot; data-original-width=&quot;1143&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMbKEtH1l83vw77Gwf0ANfhMYsj3wfgQoJ1t0uXTgiUnzgNttKYCie6XB1LZjYKK-ux3iVZ5woSaRDTursaOcB_AQ6q3s_P6iIfUFY9G6hLOpZT3A1X_kP-r7xSmwBxNf2Mvn040gycmg/w640-h184/mcp73831_charger.png&quot; width=&quot;640&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;リポ充電回路&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;自作基板に合わせてZMKの設定をする&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;自分で設計したnRF52のボードでBluetoothの無線キーボードを作ろうとした場合、QMKを使うのであれば&lt;a href=&quot;https://github.com/sekigon-gonnoc/qmk_firmware/tree/nrf52&quot; target=&quot;_blank&quot;&gt;sekigon-gonnocさんのqmk_firmwareのフォークのnrf52ブランチ&lt;/a&gt;を使わせてもらうという選択肢があります(&lt;a href=&quot;https://github.com/joric/nrfmicro/wiki/BMPAPI&quot; target=&quot;_blank&quot;&gt;BLE Pro Microの方は&quot;BMPAPI&quot;内部の実装が公開されていないので、自作のボードで動作させることはできません&lt;/a&gt;)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、nrf52ブランチは現在はメンテナンスされていないのと、QMK以外のファームウェアを試してみたかったので、&lt;a href=&quot;https://zmk.dev/&quot; target=&quot;_blank&quot;&gt;ZMK Firmware&lt;/a&gt;を使用してみました。ZMKは&lt;a href=&quot;https://www.zephyrproject.org/&quot; target=&quot;_blank&quot;&gt;Zephyr&lt;/a&gt;というRTOSのアプリケーションとして動作するキーボード用のファームウェアで、Permissive License (MIT)なのと、Wireless動作を前提にしているのが特徴になっています。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;後発のキーボード用ファームウェアではありますが、精力的に開発が続けられていて、QMKから乗り換える場合でも比較的&lt;a href=&quot;https://zmk.dev/docs/&quot; target=&quot;_blank&quot;&gt;機能の差異は少なくなってきて&lt;/a&gt;います(OLED、Mouse Keyやキーマップ書き換えは目下開発中のようです)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、少し(非常に？)とっつきにくい部分があるのも事実で、ZMKの機能がDevice Tree Bindingとして実装されているために、&lt;b&gt;キーマップ等の設定にDevice Treeの編集が必要になる&lt;/b&gt;点です(単純にキーマップを変更するだけならoverlayで良いのですが、自作のボードに対応させようとすると編集するファイルが多くなってけっこう大変です…)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://qiita.com/koara-local/items/ed99a7b96a0ca252fc4e&quot; target=&quot;_blank&quot;&gt;Device Tree自体はARM Linuxのデバイスドライバの肥大化を防ぐために開発された&lt;/a&gt;設定パラメータ格納構造ですが、&lt;a href=&quot;https://docs.zephyrproject.org/latest/guides/dts/intro.html&quot; target=&quot;_blank&quot;&gt;Zephyrではこのデータ構造をハードウェアごとの設定パラメータを記述するために使用&lt;/a&gt;しています。一番の違いはLinuxのDevice Treeはプロパティを格納したツリーでデバイスドライバからは動的に値を参照されるのに対し、ZephyrではDevice Treeをビルド時にマクロ経由でCのソースコードに変換してしまうところでしょうか…。もともとのDevice Treeの思想からは離れてしまうような気がしますが、ZephyrではDevice Treeによる柔軟なハードウェア構成記述を活用して、組み込みデバイスごとの設定を管理しているようです。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ZMKの機能(LayerやMod Tap等々)は&lt;a href=&quot;https://zmk.dev/docs/behaviors/key-press&quot; target=&quot;_blank&quot;&gt;Device Tree Bindingとして実装&lt;/a&gt;されていて、基本的にはこれを&lt;a href=&quot;https://zmk.dev/docs/features/keymaps&quot; target=&quot;_blank&quot;&gt;&quot;zmk,keymap&quot;をcompatible設定したにDevice Treeノード(専用の.keymapファイルに記述します)に書いていく&lt;/a&gt;ことでキーマップを設定します。ただここで設定したキーマップはビルド時にソースコードに変換されてしまうため、今のところZMKには動的にキーマップを書き換える方法は用意されていません。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;また、少しややこしいのが、ZMKでは&lt;b&gt;Device Treeによる設定とは別に、KConfigによる設定というものも存在&lt;/b&gt;します。ZephyrではDevice Treeがハードウェアの構成や(その機能を使った場合の)デフォルトの設定値を記述するのに対して、KConfigはアプリケーションが使う機能を取捨選択するのに使う&lt;a href=&quot;https://docs.zephyrproject.org/latest/guides/dts/dt-vs-kconfig.html&quot; target=&quot;_blank&quot;&gt;というガイドラインがある&lt;/a&gt;ようで、ZMKでもそのガイドラインに習った棲み分けがなされていて、例えばRGBLEDが接続されているピンやSPIの設定はDevice Treeで行った上で、実際にRGBLEDを使用するかどうかはKConfigで設定を行う、といった形です。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回のキーボードは(基板上は分かれていますが、入れ替えて使用することはできないので)BoardとShieldとして分けずに、&lt;a href=&quot;https://github.com/mohammedari/zmk/tree/oneoff/thumbsplit58ble/app/boards/arm/thumbsplit58ble&quot; target=&quot;_blank&quot;&gt;マイコン直付けの分割キーボード(=Board)として設定を作成&lt;/a&gt;しました。Board内でLeftとRightのDTSを用意するために少し複雑になってしまっていますが、普通に新たなキーボードをZMKで動かすためには、Kconfig.board、Kconfig.defconfig、${board_name}_defconfig、${board_name}.dts、${board_name}.keymap、${board_name}.yaml、のファイルが必要になります (改めて多いですね… ※各ファイルの役割の詳細は&lt;a href=&quot;https://zmk.dev/docs/development/boards-shields-keymaps/&quot; target=&quot;_blank&quot;&gt;ZMKのこちらのドキュメント&lt;/a&gt;に記載されています)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;また、まだデフォルトで有効にはなっておらずドキュメントにもまだ記載がないのですが、ZMKには&lt;a href=&quot;https://github.com/zmkfirmware/zmk/pull/211&quot; target=&quot;_blank&quot;&gt;Deep Sleepという機能&lt;/a&gt;があり、ZMK_SLEEPのオプションで有効にすることができます。これはその名の通りマイコンをDeep Sleep状態にする機能で、デフォルトでは1440秒(24分)でDeep Sleepします。この状態になると無線機能はすべてオフになり左右間およびホストPCとのBluetooth接続は解除され、消費電力が非常に小さい状態になります。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;上記のPRを読む限りではキー押下でスリープから復帰しそうに見えるのですが、自分が試した限りではキーを押してもスリープから復帰してくれませんでした。なので、今のところはリセットスイッチを押してマイコンをリセットすることで対応していて少し不便なのですが、この機能は特にスプリットキーボードでは必ず有効にしておく必要があります。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;スプリットキーボードのホスト側はスレーブからのキー入力を受け付けるために定期的にBLEを受信モードで待機する必要があり、キーボードを使用してない間も電力を消費し続けてしまいます。ZMKでは消費電力を予測する&lt;a href=&quot;https://zmk.dev/power-profiler/&quot; target=&quot;_blank&quot;&gt;ZMK Power Profiler&lt;/a&gt;というページが用意されていて、ZMKで動くキーボードのバッテリーがどの程度持つのかを手軽に調べることが可能になっています。注意しなければならないのは、この値はDeep Sleepが有効になっている場合のシミュレーション結果になっているので、この値と同等のバッテリー持続時間を得るためにはZMK_SLEEPを有効にしておく必要がある点です。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;例えば、今回作成したキーボードは721855サイズの500mAhのバッテリーを搭載していて、PSUはLDO、1日8時間使用するとしてPercentage Asleepを70%とすると、このような結果になりました。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKXdim55D-1wnLcWmuwBvAIJzPm2RyGL35GG7JH6u-zaOF6OL_IYn5ginBMda8uuvoQwVTZuUj1wLxcB4VnIs1khrmn29v87Tcg7TeTSLmrMFTbjP47phTdGoCuJDNBUNatjv4NTOauw/s1258/zmk_power_profiler.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;ZMK Power Profiler&quot; border=&quot;0&quot; data-original-height=&quot;1258&quot; data-original-width=&quot;1141&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKXdim55D-1wnLcWmuwBvAIJzPm2RyGL35GG7JH6u-zaOF6OL_IYn5ginBMda8uuvoQwVTZuUj1wLxcB4VnIs1khrmn29v87Tcg7TeTSLmrMFTbjP47phTdGoCuJDNBUNatjv4NTOauw/w363-h400/zmk_power_profiler.png&quot; title=&quot;ZMK Power Profiler&quot; width=&quot;363&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;ZMK Power Profiler&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;左手(Central)側は右手(Peripheral)側から送られるキー入力を受信する必要があるためマイコンの待機時間が多く、バッテリー持続時間が少なくなっていることがわかります。&lt;p&gt;実際に毎日使用して運用している限りでは、充電せずに使用し続けて1ヶ月経過時点で残量レポートが40%を切るような形だったので、大体プロファイラーのシミュレーション結果通りになっていると思います。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;ZephyrのBluetoothスタック使用と技術基準適合証明(技適)について&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Zephyrはnrf52が公式にサポートしているNordicのSoftDeviceではなく、&lt;a href=&quot;https://docs.zephyrproject.org/latest/guides/bluetooth/bluetooth-arch.html&quot; target=&quot;_blank&quot;&gt;独自のBluetoothスタック&lt;/a&gt;を使ってBluetoothを飛ばします。これが無線モジュールの製造業者が工事設計認証を受けた時の検査に使用したBluetoothスタックと異なるものだった場合、製造業者が付与した技適マークが無効になるかもしれない、という懸念があるかもしれません。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Bluetoothスタックの実装によって結果が変わる試験項目にあるのか、技適取得時の何のBluetoothスタックを使ったのか、またそれ以外のBluetoothスタックを使用した場合は技適が無効になるのか、少し調べてみたのですが確かな情報を得ることはできませんでした。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;未解決の問題について&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回、キーキャップを嵩上げすることによってDSAキーキャップがトッププレートに接触するのを防ぐことはできたのですが、現状の設計では&lt;b&gt;スタビライザーを使用できない&lt;/b&gt;という問題が残っています。今後の計画としては、インテグレーテッドトッププレートに直接スタビライザーのハウジングを造形して、MXスイッチ向けのスタビライザーのステムが刺さるようにしたいなぁ、と考えています。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回の基板にはRGBLEDとして、WS2812-2020を使用しています。今までWS2812-2020はWS2812互換だと思っていて、実際QMK(のBitBang)では問題なく使用できていたのですが、ZMKではうまく制御することができず、&lt;b&gt;ランダムにピカピカ光る&lt;/b&gt;状態になってしまいました…&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ZMKでは&lt;a href=&quot;https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.6.1/zephyr/reference/devicetree/bindings/led_strip/worldsemi,ws2812-spi.html?highlight=ws2812&quot; target=&quot;_blank&quot;&gt;Zephyrに実装されているWS2812のSPIドライバ&lt;/a&gt;を使用しており、デフォルトの設定だとSPIの駆動周波数が4MHz (250ns / bit)、8bit毎に 0x70 (0b0111&#39;0000) と 0x40 (0b0100&#39;0000) でWS2812のHとLの1ビットを表現しています。よくよくデータシートを読んでみると&lt;a href=&quot;https://akizukidenshi.com/download/ds/worldsemi/WS2812B_20200225.pdf&quot; target=&quot;_blank&quot;&gt;WS2812&lt;/a&gt;と&lt;a href=&quot;https://akizukidenshi.com/download/ds/worldsemi/ws2812c-2020.pdf&quot; target=&quot;_blank&quot;&gt;WS2812-2020&lt;/a&gt;ではT0Hが220ns ~ 380nsとシビアで、SPI 4MHzではデータシートの条件を満たしたパルスを作ることはできません。そこで、SPIを8MHzにしてHを 0x7E (0b0111&#39;1000)、Lを 0x60 (0b0110&#39;0000) としてデータシートの条件を満たすようにしました。また、ZMKではWS2812では動くからという理由で、データシートでは250us以上必要なリセットディレイが8usに設定されてしまっている、&lt;a href=&quot;https://github.com/zephyrproject-rtos/zephyr/commit/17c0ddfe9c1bf571d25f90512dcccf76f14f1609&quot; target=&quot;_blank&quot;&gt;このコミット&lt;/a&gt;をcherry-pickしてリセットディレイもデータシートに合わせました。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、これらの変更を加えても状況は改善せず、現状はRGBLEDをオフにしています…&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;--&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;3Dプリントの材質についてのTips&lt;/b&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;DMM.makeでは3Dプリントに多くの材料を選ぶことができますが、個人的には&lt;a href=&quot;https://make.dmm.com/print/material/85/&quot; target=&quot;_blank&quot;&gt;MJF PA12GB&lt;/a&gt;を非常におすすめします。&lt;a href=&quot;https://jp.ext.hp.com/printers/3d-printers/products/&quot; target=&quot;_blank&quot;&gt;HP社のMulti Jet Fusion&lt;/a&gt;は層ごとにナイロン粉体を選択的に熱で溶かして立体を成形する方式で、複雑な形状の立体を異方性がなく、実用に耐えられる強度で印刷することが可能です。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://make.dmm.com/item/1032566/&quot; target=&quot;_blank&quot;&gt;DMM.makeのPA12GB出力サンプル&lt;/a&gt;を手で曲げてみた限りでは、力をかけると1mm厚の部分は弾性変形の範囲を超えて歪みが残ってしまいますが、2mmの部分は全力で力をかけても折ることはできませんでした。PA11、PA12もそこまでPA12GBとは硬さに違いがありませんでしたが、ガラスビーズが添加されていない分少し柔らかく、折れる可能性はより低いと思われます。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3uSgUeIg_04LnbYqCpFbYNWavaoO9kVcfwxOODInX0aF4tJnFXahbhoVnPMSG17qF2DhCLvt1q0VIdvKKAtVYax2aQS3PC6OCMhJAQMdDPgu34fmxqhm3QPz8eYjYSrCS7TcX4LRPrDo/s2556/PXL_20211003_130431756.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1475&quot; data-original-width=&quot;2556&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3uSgUeIg_04LnbYqCpFbYNWavaoO9kVcfwxOODInX0aF4tJnFXahbhoVnPMSG17qF2DhCLvt1q0VIdvKKAtVYax2aQS3PC6OCMhJAQMdDPgu34fmxqhm3QPz8eYjYSrCS7TcX4LRPrDo/w400-h231/PXL_20211003_130431756.jpg&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;b&gt;PA12GB出力サンプルを手で曲げた図&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;ただ、MJFでも粉体を焼結するときに応力が発生するようで、造形時には歪みが発生します(異方性がないことと、歪みが発生することは別)。PA11で造形を頼んだ際には非常に歪みが出てしまい、まともに使用できないものができてしまったこともありました。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9sj49zOXNx7DfBunoLoYTyoUO9IItGAXggxxoFEkJWTfqsX8oWXpQuBFLY8POqHGhvY95hyphenhyphenTMlcD_HHftoqCmvdL2EXRNl-xDmQNAVvM_hQyciF0dm_FxUfonJouR5aq1px2RA-wBdN8/s4032/PXL_20210316_011149575.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9sj49zOXNx7DfBunoLoYTyoUO9IItGAXggxxoFEkJWTfqsX8oWXpQuBFLY8POqHGhvY95hyphenhyphenTMlcD_HHftoqCmvdL2EXRNl-xDmQNAVvM_hQyciF0dm_FxUfonJouR5aq1px2RA-wBdN8/w400-h300/PXL_20210316_011149575.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;歪みが発生してしまったトッププレート&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;このあとに設計を見直して歪みが大きく発生していた右下部分の厚みを均等にしたのと、PA12GBで印刷し直したことで無事に歪みは発生しなくなりました。経験的にはPA11よりもPA12GBのほうが造形時の歪みは少ないように思えます。ただし、DMM.makeでは造形方向を指定できないので運頼みの側面もあります。&lt;/div&gt;&lt;br&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6h6kRw-lK7Ih3FtbOOlP5gsjuQWZaBtrCM7D7Svtw5hwc9tJL0XUojX66yTMdKFag5nQb9pT3x1t4lutTd-j0uWpGXb3RH1NGDMGNSDIALgsHC_Mlhr0g9c7gKQrmICKgfsUnwuIFi4/s4032/PXL_20210403_142002886.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6h6kRw-lK7Ih3FtbOOlP5gsjuQWZaBtrCM7D7Svtw5hwc9tJL0XUojX66yTMdKFag5nQb9pT3x1t4lutTd-j0uWpGXb3RH1NGDMGNSDIALgsHC_Mlhr0g9c7gKQrmICKgfsUnwuIFi4/w400-h300/PXL_20210403_142002886.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;PA12GBで印刷し直したトッププレート&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;染色に関するTips&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;DMM.makeでは、100mm以上の物体は色むらが出るため、造形時のオプションでブラックは選べません。PA12GBは無地だと吸水性があるのと、見た目もそこまできれいなわけではないので、何らか色をつけたほうがきれいに見えると思います。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;初めは塗装の条件を色々試してみてみたのですが、ナイロンは塗装しづらいのでプライマーが必須なのと、造形物に細かい凹凸があるからなのか、マットで塗装しても変な光沢が出てしましました。もちろん下処理をしたり何回も塗り重ねると良いのかもしれませんが、あまり手軽にできる作業ではありません…&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;そこで、もう少し手軽に色を付けられる工程として、染色を試してみることにしました。ナイロンは塗装はしにくいですが染色はしやすく、SDN染料というものを使うと簡単に染色できます。自分は&lt;a href=&quot;https://svds.militaryblog.jp/e930290.html&quot; target=&quot;_blank&quot;&gt;このページ&lt;/a&gt;を参考に、SDNの説明書より濃い目の10倍希釈した溶液をジップロックに入れて、湯煎して70度に温めた後に造形物を投入、10分後に取り出しました。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlieBd4ftB_0SEkfjZjlNLWWrNwy_79ALhRo5EXBxmiwIvCztDhYRbobLQTXFulReLHSHa8UzVQbwCjItcWcsIKXXaWwD64NUBH59abyg7Fgi0217bKUgmoHMT6jH8f_JlBloEcDvGdKc/s4032/PXL_20210411_054451860.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlieBd4ftB_0SEkfjZjlNLWWrNwy_79ALhRo5EXBxmiwIvCztDhYRbobLQTXFulReLHSHa8UzVQbwCjItcWcsIKXXaWwD64NUBH59abyg7Fgi0217bKUgmoHMT6jH8f_JlBloEcDvGdKc/w400-h300/PXL_20210411_054451860.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;ベランダでプラスチックを煮る図&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;SDN染料は非常に匂いが独特でキツいのと、こぼした時に床が黒く染まってしまう可能性があるので、屋外でやるのが良いと思います。もし万が一こぼしてはいけないところで熱い溶液をこぼしてしまった場合は、反応を止めるためにすぐに冷水で流すのが良いと思います(経験談)。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;一番左がDMM.makeから届いたままのPA12GB無地、中央が軽く残留粉を落とした後にミッチャクロンマルチ、Mr.サーフェイサー500、アサヒペン水性多用途つや消し黒で塗装したもの、一番右がSDNの黒を10倍希釈したものを70度で湯煎して10分間つけた後に乾燥させたものです。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikvrlt9yTA8DzMxQiBnOFUGqOgpiBieBIm_88FF8x0CsPDdVWkF88xawBYf9oxcEhoNjapL77dpiYhF_JcJsop90xYPH93-YdE5v9WbN7iF7jWBffntomN42e8XEnhktQHDPZzeN370Wc/s4032/PXL_20210410_073112724.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikvrlt9yTA8DzMxQiBnOFUGqOgpiBieBIm_88FF8x0CsPDdVWkF88xawBYf9oxcEhoNjapL77dpiYhF_JcJsop90xYPH93-YdE5v9WbN7iF7jWBffntomN42e8XEnhktQHDPZzeN370Wc/w400-h300/PXL_20210410_073112724.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;左からPA12GB無地、プラサフつや消し塗装、SDN10倍10分染色の結果&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;染色だと比較的お手軽にマット黒にできているのがわかると思います。ただし染色では積層痕は完全には消えないので造形時の線が残ってしまったり、少し匂いが残るので鼻を近づけるとSDNの匂いがします(半年たっても匂いは完全には消えませんでした)。また、同時にすべての部品を染色しないと色が変わってしまうという欠点もあります。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;この4つのパーツはSDN染料を1本使用し、同一日に10倍希釈70度10分で順番に煮たものなのですが、明るい照明下で並べると違いが分かる程度には仕上がりの色が異なってしまっています。原因はSDN染料の濃度なのか温度/時間条件の少しの違いなのかはわかりませんが、完全に同一の色にしたいパーツがある場合には同時に煮るのが良いと思います。&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU_8x50Hy2fhMK9mQhLJtH5WQShMI-Z-3GP8rsHmrG3b0LrU09U8Tjh6YYbpEte1g8XJJeQ7N81-FimvJ03UeJ0IUQc1z_lty2kOwjstT6Gzn5KkGy4L331UGCxK4Ct0S_9ADuKJvPg0g/s4032/PXL_20210411_122812680.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;b&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU_8x50Hy2fhMK9mQhLJtH5WQShMI-Z-3GP8rsHmrG3b0LrU09U8Tjh6YYbpEte1g8XJJeQ7N81-FimvJ03UeJ0IUQc1z_lty2kOwjstT6Gzn5KkGy4L331UGCxK4Ct0S_9ADuKJvPg0g/w400-h300/PXL_20210411_122812680.jpg&quot; width=&quot;400&quot;&gt;&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;同一条件で染色しても仕上がりの色は異なる&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ただ、そこまで見た目にこだわらないのであればMJF12GBをマットブラックにする際は染色がお手軽なのでおすすめです。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Minew MS88SF2のBootloaderについて&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ZMKのバイナリは直接デバッガを使って焼くこともできるのですが、キーマップを書き換えるたびに一度分解してデバッグ用の端子にアクセスするのは現実的ではありません。そこで、UF2ブートローダーを使用してUSBストレージとしてOSに認識させて、UF2ファームウェアを書き込むようにするのが一般的だと思います。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;今回は&lt;a href=&quot;https://github.com/mohammedari/Adafruit_nRF52_Bootloader/commit/f8053679307a689f313df5f39569e292cbac32d7&quot; target=&quot;_blank&quot;&gt;AdafruitのnRF52ブートローダーのボード設定を追加して&lt;/a&gt;、ボードに書き込みました。キーボードをUSBで接続した状態でリセットスイッチを連続して2回押し込むとブートローダーモードになり、認識されたUSBストレージにZMKのUF2ファイルを書き込むことでファームウェアの書き換えが可能になります。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://mohammedari.blogspot.com/2021/10/kailh-chocv2zmk.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQalsrye9S_7kzfqwUhYEiOEA6qFRes4uR8ixso7I6LwS7gDBLLG8LtpRML5HU7owjQKtTKHbWwI8bU48nHdMHgzVTONcl37uWNVyLiGIWykpU6-Sa9uPbMH8dKy7Vz079rWYoS0gK3Ks/s72-w400-h266-c/DSC06312.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-6548988086243759931</guid><pubDate>Sat, 02 Jan 2021 06:22:00 +0000</pubDate><atom:updated>2021-01-02T15:22:57.168+09:00</atom:updated><title>完全無線分割キーボード Thumbsplit58 を作った話</title><description>&lt;h3 style=&quot;text-align: left;&quot;&gt;&amp;nbsp;TL; DR&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;完全無線分割キーボードを設計しました。今のところエンドゲームです。&lt;/li&gt;&lt;li&gt;日本語キーボードは親指周りにキーが多いので、BackSpace/Enterを無変換/変換等に割り当てることで、ノートPC使用時にもキーマップの互換性をある程度担保できます。&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;はじめに&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2019年の中頃に、&lt;a href=&quot;https://github.com/mohammedari/thumbsplit58-hardware&quot; target=&quot;_blank&quot;&gt;完全無線分割キーボード Thumbsplit58 &lt;/a&gt;を設計しました。1年ほどキーボードを使って出てきたフィードバックを取り込んで、今年の終わりに一度ケースを作り直しました。スイッチはKailh Choc&amp;nbsp; (ソケット対応)、キーキャップは MBK Low Pro (1u/1.5u) を想定しています。&lt;a href=&quot;https://github.com/qmk/qmk_firmware/tree/master/keyboards/mitosis&quot; target=&quot;_blank&quot;&gt;Mitosis&lt;/a&gt;、&lt;a href=&quot;https://github.com/qmk/qmk_firmware/blob/master/keyboards/comet46/readme.md&quot; target=&quot;_blank&quot;&gt;Comet46&lt;/a&gt;&amp;nbsp;がベースになっていて、NordicのGazellプロトコルで左手と右手がキー情報をQMKが動くUSB接続のレシーバに対して送信します。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最近流行りのBluetooth自作キーボードに対する利点としては、とりあえずレシーバをUSB接続したら動く、左右の手が独立にレシーバに送信するので低レイテンシー低消費電力(のはず)、QMKはレシーバのatmega32で動くのでQMK標準の方法で書き込み可能、とかでしょうか…？&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOBl540gPcE2lQqyBcUpPHb_sxd8z0UYAd-13phdj_lo8zhaCMXUOLkMM2EaPH-e33cp-OEOcuN5JwINYp4wkBG_Q-OU_CoYNTx9oJaCS71vTv58zzvG-p11ieDGY2FuLHmqm9ED3x1uU/s1024/teaser.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOBl540gPcE2lQqyBcUpPHb_sxd8z0UYAd-13phdj_lo8zhaCMXUOLkMM2EaPH-e33cp-OEOcuN5JwINYp4wkBG_Q-OU_CoYNTx9oJaCS71vTv58zzvG-p11ieDGY2FuLHmqm9ED3x1uU/w640-h480/teaser.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;今のところこのキーボードを販売する予定はありませんが、備忘録も兼ねて設計思想をここに残しておこうと思います。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;どうして作ったのか？&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;もともと自分は10年以上ThinkPadの日本語キーボードを愛用していて、ノートパソコンはX40からずっとThinkPadですし、USB接続のトラックポイントキーボードも初代から使い続けています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;※世代が変わってもずっと同じ配列 (13インチの日本語キーボードは違いますが…) でキーボードを設計してくれているので安心です。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ただトラックポイントが必須かというとそういうわけではなくて、人差し指が腱鞘炎になりかけてVimキーバインドを覚えてからは打鍵中にトラックポイントを使うことは減り、現在は特になくても不自由ではないという状態です。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ちょうど2年前ぐらいに自作キーボード界隈に入沼し、&lt;a href=&quot;http://mohammedari.blogspot.com/2019/02/blog-post.html&quot; target=&quot;_blank&quot;&gt;ErgoDashを作って&lt;/a&gt;分割キーボードの素晴らしさに目覚めたあとは、エンドゲームを求めて自分でキーボードを設計する方法を模索していました。椅子の肘掛けに置いて使うために、完全無線分割にするという構想は当初からあったような気がします。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;分割キーボードというとErgoDoxの地を受け継いだColumn Staggeredのものが多い印象ですが、実際に使ってみてRow Staggeredのほうがあっている感じがしたのと、ノートパソコンを使う際にはThinkPadの配列で打鍵するので、それに近いものが良いなぁと思っていました。ただ、親指周りにキーを配置して小指の負担を減らすのは非常に効果があったので、親指周りは3キーずつ欲しいという思いがありました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;なので設計の要望をまとめると、&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;完全無線分割&lt;/li&gt;&lt;li&gt;Row Staggeredで、ThinkPadと同じ配列(各行が0.5u/0.25u/0.5uズレる)&lt;/li&gt;&lt;li&gt;日本語キーボードのキーマップができるキー数(右手小指に十分なキーが必要)&lt;/li&gt;&lt;li&gt;親指にBackSpace、Space、Enterを配置したい&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;みたいな感じでした。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;自分が日本語キーボードにこだわっている理由は親指周りのキーの豊富さにあって、USキーボードのスペースバーの部分(CVBNMの下)に4キー配置されています。そのため、&lt;b&gt;ThinkPadを使用しているときにも無変換にBackSpace、変換にEnter、カタカナ/ひらがなにDeleteを割り当てることで、最低限の互換性を保つことができる&lt;/b&gt;ようになっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;※キーマップについての詳細は後述します&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;具体的には、Thumbsplit58では日本語キーボードのこの範囲を切り出しました。右手小指が担当していたBackSpace、Enterは無変換、変換にマップしているので、その範囲のキーは省いています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;※6とBは右手にも置きたかったのですが、後述のNordic MCUのGPIO数の制約があって配置できませんでした。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCNvPsVBo-3OSgFlyRTp_TFoe0MB7ipA0RTed9PmdeVz6dEpmDiP9jwojCN4AqGI4YjA1vHwb8_q3qWy7wGcw5JWquXuh8ErF1_dtePuARNwqu87zw7DRsMVHK9YJpXucaXO-mBXs66Dk/s1497/thinkpad_keyboard_layout.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;624&quot; data-original-width=&quot;1497&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCNvPsVBo-3OSgFlyRTp_TFoe0MB7ipA0RTed9PmdeVz6dEpmDiP9jwojCN4AqGI4YjA1vHwb8_q3qWy7wGcw5JWquXuh8ErF1_dtePuARNwqu87zw7DRsMVHK9YJpXucaXO-mBXs66Dk/w640-h266/thinkpad_keyboard_layout.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;基板&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;基板の設計はKiCadで行いました。設計にあたっては &lt;a href=&quot;https://twitter.com/foostan&quot; target=&quot;_blank&quot;&gt;@foostan&lt;/a&gt;&amp;nbsp;さんの「&lt;a href=&quot;https://booth.pm/ja/items/1049300&quot; target=&quot;_blank&quot;&gt;自作キーボード設計入門&lt;/a&gt;」を参考にしています。また、使用している部品は殆ど &lt;a href=&quot;https://github.com/satt99/comet46-hardware/tree/master/bom&quot; target=&quot;_blank&quot;&gt;Comet46に使われているもの&lt;/a&gt; と同じで、MCUはNordic nRF51822が載っている &lt;a href=&quot;https://www.raytac.com/product/ins.php?index_id=66&quot; target=&quot;_blank&quot;&gt;Raytac MDBT40&lt;/a&gt;&amp;nbsp;を使用しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MDBT40周りは一応データシートに沿って設計したつもりですが、これで無線電波特性がちゃんと期待通り出ているかはわかりません…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7dEWHWLW5ZBWDAWPV6DfhkYRFvpoDyFwcmZS-RPI3wpUpwdFyWU1ict-2ivXkKse7UQ6yBRJGQAJAiJVYHTAyMaW3BTjgvWgmXHLeg9r96-K0xRFkeXYqtGOzvDIy7d9gvZchdNLoumw/s1920/thumb-split-v0.1-mdbt40.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7dEWHWLW5ZBWDAWPV6DfhkYRFvpoDyFwcmZS-RPI3wpUpwdFyWU1ict-2ivXkKse7UQ6yBRJGQAJAiJVYHTAyMaW3BTjgvWgmXHLeg9r96-K0xRFkeXYqtGOzvDIy7d9gvZchdNLoumw/w640-h360/thumb-split-v0.1-mdbt40.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;実装部品を少なくするために全キー直接GPIOに繋いでスイッチ入力を検知しているのですが、MDBT40はGPIOが31本しかないので、右手30キー + ステータス用のLEDでいっぱいいっぱいになっています。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;なお、レシーバは自分で設計は行っておらず、&amp;nbsp;&lt;a href=&quot;https://github.com/satt99/comet46-hardware/tree/master/gerbers/oled-display-receiver&quot; target=&quot;_blank&quot;&gt;Comet46 の OLED Display Receiver&lt;/a&gt; をそのまま使わせてもらっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;基板はFusion PCBに発注しました。キーマトリクスがないのでLEDはついておらず、スッキリしてます。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTCPCe_bDw1BhPcWBXdFPe7yhAn4P-HFmtuxHlsGsMbCgPd0HObPriq7AER2idZsoE85iZLfi4V2QBOg5WK-_ivrmsKg2U1t5M37VRrfV71wgq5Yj3hd2NtAvuaeirZuV8z5SRQ6CiHlg/s4912/DSC04873.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3264&quot; data-original-width=&quot;4912&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTCPCe_bDw1BhPcWBXdFPe7yhAn4P-HFmtuxHlsGsMbCgPd0HObPriq7AER2idZsoE85iZLfi4V2QBOg5WK-_ivrmsKg2U1t5M37VRrfV71wgq5Yj3hd2NtAvuaeirZuV8z5SRQ6CiHlg/w640-h426/DSC04873.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;もともとは写真のようにCR2032を1個で運用していたのですが、普通に使っていると1ヶ月で電池が切れてストレスに感じたので、設計変更時に塩化チオニルリチウム電池を使用するようにしました。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;定格上は 3V 220mAh から 3.6V 2600mAh なのでエネルギーは14倍になりますが、実際はそれ以上に電池の持ちは良くなると思います (まだ切れたことがないので分かりませんが…)。というのも、MDBT40は無線の送信時に 15mA 程度の電流を消費しており、CR2032を1個で運用していたときは標準的な放電電流を大きく上回ってしまっていたためです。&lt;div&gt;&lt;br /&gt;&lt;div&gt;※消費電力の計測については後述します&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;ケース&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://keyboard.university/200-courses/keyboard-mounting-styles&quot; target=&quot;_blank&quot;&gt;マウント方式&lt;/a&gt;はサンドイッチマウントというかボトムマウントというか…、トッププレートがPCBの貫通穴を通してボトムケースのボスにネジ止めされています。あまり打鍵感について理解せずにケースを設計したので、8本のボス + 外周でトッププレートを支えており、打鍵感は非常に硬いです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjE-d4sQknt8Xvs785GrDpAkvcrl_CjhU7Wg54ACUbX-sMY0axXPlG9ZyRNX0nkBZg1zbCTPfIbxzPoo1CgbRIR3EWmw7A0gFPmW1J_boqQxh0Pbaf7E75hWGbhn_CVWc5rs-QGxVPNRI/s4032/PXL_20201223_144344913.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjE-d4sQknt8Xvs785GrDpAkvcrl_CjhU7Wg54ACUbX-sMY0axXPlG9ZyRNX0nkBZg1zbCTPfIbxzPoo1CgbRIR3EWmw7A0gFPmW1J_boqQxh0Pbaf7E75hWGbhn_CVWc5rs-QGxVPNRI/w640-h480/PXL_20201223_144344913.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;もともとは奥に見えるケースのように、CR2032の部分のケースをくり抜くことで、高さをなるべく低く &amp;amp; 電池が外から交換可能を実現していました。ただ、いくら外から簡単に電池が交換できるとはいえ月イチでキーボードの反応が悪くなるのはダメでした…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-nWpShyHLdXdrz_xEh9cqHhplrjNcjJWOAwXnzcujM5CB2pfboelSOwq8BieYfnCS8HNZBNEQDjjnTRnpwD4LLrY7qfW3miWRgyQh2RZ85nBLaSya4IH1QMUKOk5vxtRj0y5v76uSL4Q/s4912/DSC04890.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3264&quot; data-original-width=&quot;4912&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-nWpShyHLdXdrz_xEh9cqHhplrjNcjJWOAwXnzcujM5CB2pfboelSOwq8BieYfnCS8HNZBNEQDjjnTRnpwD4LLrY7qfW3miWRgyQh2RZ85nBLaSya4IH1QMUKOk5vxtRj0y5v76uSL4Q/w640-h426/DSC04890.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;そこで設計変更時にはキーボードに10度の傾斜をつけ、足の部分に単三電池と同じ形状の塩化チオニルリチウム電池を入れることにしました。手前側はCR2032がなくなったことで、逆に高さを低くすることができています。&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYbJQr-v6_tuUCx-1wiv7RH_mS2mNFWCQPbMDm-NpIbBNBsSM7-RfACP9tlAs_6w4AfU9E4GVCTxMzbWZj-YgCCfq-7tOGCi-dx6F5VsdvSUYjkFn-yTFYUrtBKu5k3iHp-ZalHSRwtZo/s4032/PXL_20201224_122154877.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYbJQr-v6_tuUCx-1wiv7RH_mS2mNFWCQPbMDm-NpIbBNBsSM7-RfACP9tlAs_6w4AfU9E4GVCTxMzbWZj-YgCCfq-7tOGCi-dx6F5VsdvSUYjkFn-yTFYUrtBKu5k3iHp-ZalHSRwtZo/w640-h480/PXL_20201224_122154877.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;プレートは&lt;a href=&quot;http://mohammedari.blogspot.com/2018/09/ali-expressbest-carbon.html&quot; target=&quot;_blank&quot;&gt;過去記事&lt;/a&gt;でお世話になった、&lt;a href=&quot;https://www.aliexpress.com/item/32826820227.html&quot; target=&quot;_blank&quot;&gt;AliExpressのBestCarbon&lt;/a&gt;に注文しました。1mm の綾織マットを切削してもらっています。特にカーボンである必要はないのですが、見た目が好きなのでカーボンを使用しています。&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;※カーボンは導電性で電波を遮断してしまうので、電波特性的には樹脂のトッププレートのほうが良いかもしれません&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0SZbk6ZsbjcBuh6SkSxVBXDSvYYK_zn5zd5TpsCFeP9mx-Ab3_utqa2autQ7LuXFs_pQfpX23wGOlaK1ybaH9PJa9ohCiZ5WT3Fc0FtF7_C0n6AAfcLwbqftp2tB83v43XI0559JPS-E/s4912/DSC04879.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3264&quot; data-original-width=&quot;4912&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0SZbk6ZsbjcBuh6SkSxVBXDSvYYK_zn5zd5TpsCFeP9mx-Ab3_utqa2autQ7LuXFs_pQfpX23wGOlaK1ybaH9PJa9ohCiZ5WT3Fc0FtF7_C0n6AAfcLwbqftp2tB83v43XI0559JPS-E/w640-h426/DSC04879.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;このときは1.5uキーキャップが手に入らなかったのですべて1uの位置にキースイッチを配置していますが、今は1.5uの位置にキースイッチを挿し直して、プレートも1.5u専用のものを作り直しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;ファームウェア&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;このキーボードは、左手と右手にそれぞれ入っているNordic MCUがキー状態が変更されるたびに現在のキー押下状態を送信し、PCにUSB接続されたレシーバに入っているNordic MCUがそれを受信します。レシーバのatmega32はNordic MCUからシリアル通信でキー状態を受信して、QMKのマトリクススキャン関数の中では、実際にはマトリクスをスキャンせずに受信した値を使用します。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;左手と右手は電池で動くので、可能な限り消費電力を少なくする必要があります。そのため、なるべくMCUがスリープしている時間を長くして、キー入力があったときだけ割り込みで起動するようなファームウェアにしなくてはいけません。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ところが、割り込みとスリープが絡むとファームウェアの挙動を追うのは難しいですし、クロックソースや無線送信の設定で大きく消費電力が変わってしまうこともあるので、消費電力が少ないファームウェアを開発する際には、実際にボードが消費している電流を計測してみるのが良いと思います。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;良いオシロスコープを持っていればそれで計測することもできたのですが、自分は持っていなかったので、&lt;a href=&quot;https://www.nordicsemi.com/Software-and-tools/Development-Tools/Power-Profiler-Kit&quot; target=&quot;_blank&quot;&gt;Nordic Power Profiler Kit&lt;/a&gt;&amp;nbsp;を購入してみました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtEFwS951g4HOSuLDJf5Be5sNC2H1SYCBNWw39AF1UhBUElmsO_aD1ihDVR3L1UmMXC5XP3AwPYmPe8Dftsj-tG9aTY6F4UiHxrPdK8ZicFxXOaIViLeN2xTT-MHDcw8AzD-ThEIFSNY/s4032/IMG_20200813_110500.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtEFwS951g4HOSuLDJf5Be5sNC2H1SYCBNWw39AF1UhBUElmsO_aD1ihDVR3L1UmMXC5XP3AwPYmPe8Dftsj-tG9aTY6F4UiHxrPdK8ZicFxXOaIViLeN2xTT-MHDcw8AzD-ThEIFSNY/w640-h480/IMG_20200813_110500.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nordic PPKはNordicのMCUに限らず、(出力電圧電流の範囲であれば、)どんなボードでも消費電流を計測することができます。もちろんオシロスコープでも同様のことは可能ですが、PPKはUSBで繋ぐだけで簡易的に計測可能なので、お手軽さが良い感じです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最近、後継の &lt;a href=&quot;https://www.nordicsemi.com/Software-and-tools/Development-Tools/Power-Profiler-Kit-2&quot; target=&quot;_blank&quot;&gt;Nordic Power Profiler Kit II&lt;/a&gt; が出たようです。最大出力可能電圧が3V -&amp;gt; 5V、サンプリングレートが10倍になって、さらにアクリルのケースもついてくるようなので、無線自作キーボードを作っている方は消費電力計測用にに購入してみても良いかもしれません。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;実際にPPKで計測するとこのような計測結果を得ることができます。グラフで大きく立っているスパイクが無線を送信したときの消費電流になっていて、1キー押して離した時には2回の送信が行われます。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;※このグラフはThumbsplit58のファームウェアで、nRF5 SDK 11のデフォルトの無線設定を使用した状態の計測結果です&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Comet46の実装では何もキーの状態に変更がない場合でも10秒間に一度キーの状態を送信しようとする挙動になっていたのですが、Comet46は最大リトライ回数が100回に設定されているのもあり、PCがスリープしてレシーバに電流が共有されていない状態では10秒おきに100回の送信が行われてしまっていました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;そこで、Thumbsplit58のファームウェアでは送信失敗した場合に、送信成功するか500msが経過するまで125ms周期でキー状態を再送信する挙動に変更することで、送信失敗時に不整合が起きる状況をなるべく回避しつつ、無駄な送信をしないように変更しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;※このグラフでは送信成功しているので、再送信は発生していません&lt;/div&gt;&lt;div&gt;※500msタイムアウトはデバウンス用の1000Hz割り込みの中でカウントしているのですが、もう1本周期割り込みを追加すれば消費電力を更に減らせるかもしれません&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJsBy4kyrq2O0R6AqMX5h-IViem2jaQ3MVvzzZxMPSZbvAvSWXqJj-njut0q7TwvGz6sFf-bGVVYSwA8DqlSVyoAsHi0-6SSQspYoUCP6_YJTGktChfbwjqJ_RcPP2VhoriAjQH_ii50/s1280/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25891.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJsBy4kyrq2O0R6AqMX5h-IViem2jaQ3MVvzzZxMPSZbvAvSWXqJj-njut0q7TwvGz6sFf-bGVVYSwA8DqlSVyoAsHi0-6SSQspYoUCP6_YJTGktChfbwjqJ_RcPP2VhoriAjQH_ii50/w640-h360/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25891.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;次のグラフはサンプリングレートを上げて送信部分を取り直したものです。1回の送信(上のグラフでスパイクに見えていた部分)は実際は「キーボードからレシーバへの送信」と「レシーバからのACK受信」の繰り返しになっています。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4irEpEDmlrTNPZeB0ztiTdJ3VJn5MJ0SMoWspZvCdWZ3G-FD5Crnu47tw4p71mfWGiKAtxtAl_foXfHGAVq4d9Gd1YJw_FcyDdWcjCs0ysvzP52K5T-CaF-vl3tDafuYBW8MN7459E6A/s1280/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25892.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4irEpEDmlrTNPZeB0ztiTdJ3VJn5MJ0SMoWspZvCdWZ3G-FD5Crnu47tw4p71mfWGiKAtxtAl_foXfHGAVq4d9Gd1YJw_FcyDdWcjCs0ysvzP52K5T-CaF-vl3tDafuYBW8MN7459E6A/w640-h360/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25892.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;このグラフは送信信号強度を +4dbm に設定したときのものですが、送信信号強度を落としてもデータ送信の山が小さくなるだけでACK受信の山は変化しないため、送信信号強度はそこまで消費電力に大きな影響を与えず、むしろリトライ回数を減らすほうが重要そうです。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;送信時にリトライが発生するのは周波数ホッピングを行っているためです。Nordic MCUは下記のようにある一定時間ごとに送受信するチャンネルを変更しながら送受信を行いますが、送信側と受信側で時刻同期が取れていない状態では、チャンネルが合わずに送受信を行うことができません。そこで、送信側は送信が成功するまで同じ周波数で何度も(timeslots_per_channel_when_device_out_of_sync回)送信を行い、送信が成功したあとは受信側と同期してホッピングを開始します。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigUgXe3IW_YXTJobXdtwKQ2NGixQkE3CGiFQtckqsKRiIQL2ox1urxoqLwyyx9zP7UqPPETs2-nEsRD-iONDynK00GSpZOkjk0CBB2yT9YvVhgNd2NitHIjbz2cJDkRGtSjV0NrWORNAY/s791/frequency+hopping.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;285&quot; data-original-width=&quot;791&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigUgXe3IW_YXTJobXdtwKQ2NGixQkE3CGiFQtckqsKRiIQL2ox1urxoqLwyyx9zP7UqPPETs2-nEsRD-iONDynK00GSpZOkjk0CBB2yT9YvVhgNd2NitHIjbz2cJDkRGtSjV0NrWORNAY/w640-h230/frequency+hopping.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;※&lt;a href=&quot;https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v11.0.0%2Fgzll_02_user_guide.html&amp;amp;cp=7_5_12_5_0&quot; target=&quot;_blank&quot;&gt;Gazell Link Layer User Guide&lt;/a&gt; の Frequency Hopping より&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;デフォルトでは channel_table に入っているのが 4ch, 25ch, 42ch, 63ch, 77ch の5つで、Timeslot が 600us 、timeslots_per_channel は 2 になっていて、1.2ms毎にチャネルホッピングしているようです。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;timeslots_per_channel_when_device_out_of_syncのデフォルト値は 15 になっていたのですが、そのチャンネルが競合しているケースのリトライ回数を減らすために、自分のファームウェアでは 10 (ちょうど総当り) に変更してみました。また、最大リトライ回数は20に設定しているので、チャンネルが競合していた場合は次のチャンネルを試します。ただし、この設定変更をしても劇的にリトライ回数が減らせるわけではなく、ベストな設定はいまいち見つけられていません…&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;※channel_tableに入っているチャネル数を減らすと良かったりするかもしれませんが、未検証です&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;送信側と受信側が同期している時間を増やせばリトライ回数を大きく減らすことができるのですが、syncを維持するには16MHzクロック(HFCLK)を動かし続ける必要があるので、sync維持時間をむやみに伸ばしてしまうとsync維持中の消費電流が1mA程度に増えてしまって本末転倒になってしまいます。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;自分の計測では1回のリトライあたり6.7uC、1msのsync維持に1.2uCの電荷が消費されました。チャンネル競合がないとするとリトライ回数の期待値は3.6回になるので、全くsyncしない場合の送信1回のリトライによる電荷消費量の期待値は24.12uCになり、これはsync維持時間の20msに相当します。つまり、20msの間に送信が2回以上連続して発生しない場合は、sync維持時間を20msより伸ばしてしまうとsyncの意味がなくなってしまいます。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;デフォルトでは 18ms 間syncを維持するようになっていますが、キーボード用途の場合は1回の送信ペイロードにすべてのデータが収まるためにデータを連続送信する必要がなく、普通に打鍵していて20ms以内にキー入力が重複することは多くないので、自分のファームウェアではsync維持時間は 0ms にして常に out of sync 状態にするように無線設定を変更しています。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBmw7DdYBFJ-gi_au8MrGTwpibIvLeUXPv3XNlD6ntegDgnZqWPcxmhkVA3t65B9jesnaZ2ex04c6Ymlh2ty1W2prnr5BUwfKrrIYSF4iLCk0PkjVv4d1syimxT9p9LGe2FYRT4FRpM-E/s1280/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25893.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBmw7DdYBFJ-gi_au8MrGTwpibIvLeUXPv3XNlD6ntegDgnZqWPcxmhkVA3t65B9jesnaZ2ex04c6Ymlh2ty1W2prnr5BUwfKrrIYSF4iLCk0PkjVv4d1syimxT9p9LGe2FYRT4FRpM-E/w640-h360/%25E3%2582%25B9%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%25893.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;キーマップ&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;現在のキーマップはこんな感じで、前述の通り日本語キーボード配列がベースになっています。BackSpace、Space、Enter、DelはThinkPadでも近い場所にリマップしているので、ノートPC使用時でもそこまで違和感なく使用できます。1年程このキーマップを使っていますが、特に不満な点は出てきませんでした。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPfpxwBk3Dv3DeeNjOPvzwBtNnZzGrUuyCrv-F6UPeQfEqrwlpZJmEWztwD-fEe5d6b_SW9zSYOMF3jTeo_uDseo2ubbgNAumjC8YS8f1km1Q9q9A8uepkUUXwxb6LnfGMbANhPN_U0gY/s952/row-staggered-thumb-ergo.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;333&quot; data-original-width=&quot;952&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPfpxwBk3Dv3DeeNjOPvzwBtNnZzGrUuyCrv-F6UPeQfEqrwlpZJmEWztwD-fEe5d6b_SW9zSYOMF3jTeo_uDseo2ubbgNAumjC8YS8f1km1Q9q9A8uepkUUXwxb6LnfGMbANhPN_U0gY/w640-h224/row-staggered-thumb-ergo.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;キーが2つ書いてあるキーは QMK の &lt;a href=&quot;https://docs.qmk.fm/#/mod_tap&quot; target=&quot;_blank&quot;&gt;Mod-Tap&lt;/a&gt;&amp;nbsp;の機能を使って、短押しで通常のキー入力、長押しで Modifierキー入力になるように設定しています。例えばCapsLockのところにあるキーの場合、短押しでEsc、長押しでCtrlになります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;残念ながら Mod-Tap は Windows/Ubuntu で容易に実現する方法がないので、ノートPCのキーボードを使用しているときには使えません。ノートPCとのキーマップ互換性の観点では入れないほうが良いのかもしれませんが、Esc/Ctrl等は実際使っていて結構便利なので入れてしまっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;レイヤー機能は(ノートPC使用時に使えないのもあって)あまり使いこなせておらず、F1 ~ F12を数字キーに入れたり、HJKLをカーソルキーにしたり、WASDをマウスキーにしている程度です…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;おわりに&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;初代 Thumbsplit58 を1年間使って見えてきた電池の持ち等の課題については、無事に rev2 で解決できました。今のところこれが自分にとってのエンドゲームな気がしていますが、使っていて不便なところが出てきたらまた改良していこうと思います。&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;塗装に関するTips&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ケースは &lt;a href=&quot;https://make.dmm.com/print/material/85/&quot; target=&quot;_blank&quot;&gt;DMM.make のサービスを使って MJF&lt;/a&gt; で出力しました。材料はPA12GBを使用しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;塗装はなしでも良いかなと思っていたのですが、1辺が100mmを超えていてブラック染色オプションを選べなかったのと、MJFには吸水性があるという話を聞いていたので、汚れる前に塗装することにしました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MJFの出力は積層痕が目立ちにくく、全く表面処理をせずに塗装しても上の記事のように十分綺麗になります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PA12はナイロンなので、プライマーは必須です。自分は&lt;a href=&quot;https://somayq.com/products/mityakuron&quot; target=&quot;_blank&quot;&gt;ミッチャクロンマルチ&lt;/a&gt;のスプレーを使いました。ベランダで塗装するときはホコリが舞わないように水を撒いてからやると良いと思います。ただし冬場は乾燥を室内で行う必要があるので、塗料は水性のものをオススメします。自分は&lt;a href=&quot;https://www.asahipen.jp/products/view/18613?genre=1&quot; target=&quot;_blank&quot;&gt;アサヒペンの水性多用途シリーズ&lt;/a&gt;を愛用しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;塗装前のPA12GBナチュラルはこんな感じで、薄いまだらなグレーです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDq8KTk16SswIcdEvAoqrfTYCj-tXD1Az6zgjavAIAZyVugBvOWxc57_Ct9vdbCoqvqIRl0_raKR8NPRbp0pqViUbBOeuHazymVfNnRX7ZUrLUag-RTUv3RBNujjoklYt44Q0iEh6_ThM/s4032/PXL_20201223_152433693.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDq8KTk16SswIcdEvAoqrfTYCj-tXD1Az6zgjavAIAZyVugBvOWxc57_Ct9vdbCoqvqIRl0_raKR8NPRbp0pqViUbBOeuHazymVfNnRX7ZUrLUag-RTUv3RBNujjoklYt44Q0iEh6_ThM/w400-h300/PXL_20201223_152433693.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;これをつや消しブラックで塗装するとこんな感じになりました。塗装前の表面処理は全くやっていないため、造形の都合でできた線のようなものが見える箇所があります。気になる場合は塗装前に目地埋めしたり、何度か重ね塗りする必要があるかもしれません。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjgaqIMkXh_UzmRndsyxCnN0J57jum5dVRn0sVs6k-KineGD3DalISbOlnlICCAzRAs6zJtiDYSVX3XOr5YpVcJPDfm9KGtHL2Oyh082Ra3OT4pK7ZmTReOon2Hwk6XONQIw2zzXIBqco/s4032/PXL_20201224_035615865.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjgaqIMkXh_UzmRndsyxCnN0J57jum5dVRn0sVs6k-KineGD3DalISbOlnlICCAzRAs6zJtiDYSVX3XOr5YpVcJPDfm9KGtHL2Oyh082Ra3OT4pK7ZmTReOon2Hwk6XONQIw2zzXIBqco/w400-h300/PXL_20201224_035615865.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;突然押したキーと全く違うバラバラなキーが入力された際のTips&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1年使っている中で突然押したキーと全く違うバラバラなキー入力を返したり、(キーコードにマップされてなくて)押しても反応しなくなったりする現象に遭遇したのですが、これはどうもQMKの問題というか、EEPROMが壊れたときに起きる現象のようです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.reddit.com/r/olkb/comments/7j3ci4/qmk_mixed_up_keys_and_keys_that_dont_register/&quot; target=&quot;_blank&quot;&gt;このページ&lt;/a&gt;にあるように、EEPROM Resetを行うことで無事に押した通りのキーが入力されるようになりました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;dfu-programmer atmega32u4 flash --eeprom eeprom_reset.hex&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://mohammedari.blogspot.com/2021/01/thumbsplit58.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOBl540gPcE2lQqyBcUpPHb_sxd8z0UYAd-13phdj_lo8zhaCMXUOLkMM2EaPH-e33cp-OEOcuN5JwINYp4wkBG_Q-OU_CoYNTx9oJaCS71vTv58zzvG-p11ieDGY2FuLHmqm9ED3x1uU/s72-w640-h480-c/teaser.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-8907026324638406050</guid><pubDate>Mon, 17 Aug 2020 13:43:00 +0000</pubDate><atom:updated>2020-08-17T22:48:30.718+09:00</atom:updated><title>LOUQE Ghost S1 Mk3ケースで小型Ryzenゲーミングマシンを組んでみた</title><description>&lt;h2 style=&quot;text-align: left;&quot;&gt;TL;DR&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;LOUQE Ghost S1 Mk3ケースで小型&amp;nbsp;(9.6L)&amp;nbsp;のゲーミングマシンを組みました&lt;/li&gt;&lt;li&gt;内部の電源ケーブルを自作しましたが、高効率電源用のカスタムケーブルは自作が大変です&lt;/li&gt;&lt;li&gt;ケースはtaobaoで購入しましたが、taobaoを利用するには覚悟が必要です&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;SFF PCの世界&lt;/h2&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73eAXqQ8T2w2zH75T4ERZXK1DddmgzYeqBwcyCWRZfGhI4v7b98n0hyphenhyphenyvORhtZWrd-B3NlSVGTOh7RFFougRqr2BalE7gEK0nlKpVaRNoIsVmWO203U4O0A7FH1j2kToE4fPcs4RW2-M/s4032/IMG_20200812_001505.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73eAXqQ8T2w2zH75T4ERZXK1DddmgzYeqBwcyCWRZfGhI4v7b98n0hyphenhyphenyvORhtZWrd-B3NlSVGTOh7RFFougRqr2BalE7gEK0nlKpVaRNoIsVmWO203U4O0A7FH1j2kToE4fPcs4RW2-M/s640/IMG_20200812_001505.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;皆さんはPCのケースを購入する際に、何を基準にして選ばれているでしょうか？&lt;/p&gt;&lt;p&gt;入れようとしているマザーボードの大きさに対応しているか確認したり、ケースファンがいくつ付けられるとか、5インチベイは必要かどうか、HDD/SSDを搭載するから3.5インチベイや2.5インチベイが何個必要か、などといったことを確認すると思います。もしくは、本格水冷するならリザーバタンクが配置できるかとか、サイドパネルが強化ガラスになっていて中身のRGBライトが見えるか、なんてことが重要になってくるかもしれません。&lt;/p&gt;&lt;p&gt;世の中にはPCケースが小型であることに強い魅力を見出し、拡張性や冷却性能を犠牲にしてもなお、より小さいPCを組もうと探求する&lt;b&gt;スモールフォームファクター (SFF) &lt;/b&gt;というジャンルの自作PCがあります。このSFFのコミュニティ&amp;nbsp;(&lt;a href=&quot;https://www.reddit.com/r/sffpc/&quot; target=&quot;_blank&quot;&gt;Reddit&lt;/a&gt;, &lt;a href=&quot;http://SFF.Network&quot; target=&quot;_blank&quot;&gt;SFF.Network&lt;/a&gt;) ではPCケースを選ぶ際に、&lt;b&gt;ケースの容積 (リットル) &lt;/b&gt;を重要な基準とみなし、&lt;b&gt;ハイスペックなCPU/GPUをなるべく小さな容積のケースに押し込めることが良いことである&lt;/b&gt;とされています。&lt;/p&gt;&lt;p&gt;自分も&lt;a href=&quot;https://mohammedari.blogspot.com/2014/09/gpu.html&quot; target=&quot;_blank&quot;&gt;2014年にVRデモ用に持ち運べるデスクトップPCを作って&lt;/a&gt;以降、小型PCの魅力に取りつかれており、第3世代 Ryzen が登場してからデスクトップPC更新の機会をうかがっていました。そしてついに様々な要因から「今しかない」という直感を感じたので、給付金を片手に満を持してPCの更新に手を付けた次第です。&lt;/p&gt;&lt;p&gt;これから発売される、もしくは過去に販売されたSFFケースの大部分は、SFF.Networkの&lt;a href=&quot;https://smallformfactor.net/forum/threads/sff-master-list.12988/&quot; target=&quot;_blank&quot;&gt;このスプレッドシート&lt;/a&gt;に網羅されています。&lt;/p&gt;&lt;p&gt;今回自分が購入するに当たって、以下の条件を満たす&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;2スロットフルサイズのグラフィクスカードが入る&lt;/li&gt;&lt;li&gt;電源はSFXサイズに対応している&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ものを検討しました。有名どころをいくつかピックアップして紹介すると…&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;DAN Cases A4-SFX (&lt;a href=&quot;https://www.dan-cases.com/dana4.php&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;)&lt;/h3&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;DAN Case A4-SFX v4 - PCケース＆パーツ、オーディオのパイオニア ...&quot; height=&quot;427&quot; src=&quot;https://www.dirac.co.jp/wp-content/gallery/dancase-a4-sfx-v4/DAN-Cases-ws-003_R.jpg&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;2016年にKickstarterで登場して以降、昨今のSFFブームを牽引し続ける最も有名なケースです。&lt;b&gt;7.2L&lt;/b&gt;の筐体に295mmまでの2スロット幅グラフィクスカードを搭載することが可能となっています。ライザーケーブルを使ってマザーボードとグラフィクスカードを背中合わせに配置する「サンドイッチ」構造を導入したケースで、発売以降非常に強い人気を誇っており、このケースの構造を真似た多くのケースが登場しました。&lt;/p&gt;&lt;p&gt;2020年1月にはv4.1が登場し、PCIe Gen4やフロントI/OのUSB3.2 Gen2に対応しました。日本では&lt;a href=&quot;http://www.dirac.co.jp/dan-case-a4-sfx-v4-1/&quot; target=&quot;_blank&quot;&gt;DIRACが代理店&lt;/a&gt;となっており、各社通販サイトから購入することが可能です。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;LOUQE Ghost S1 (&lt;a href=&quot;https://www.louqe.com/ghost-s1/&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;)&lt;/h3&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img height=&quot;385&quot; src=&quot;https://www.louqe.com/wp-content/uploads/2018/07/chassis.png&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;A4-SFXの流れをくむケースで、&lt;b&gt;8.2L&lt;/b&gt;サイズです。A4-SFXの弱点だったCPU冷却性能を改善するためにケースの幅を広げ、CPUクーラーの最大高さを 47mm から 66mm まで大きくしています。また、ケースの上部にTopHatと呼ばれる別売りの拡張パーツをつけることによって、ストレージを増強したり、上部に25mmファンを追加してエアフローを改善したり、水冷ラジエーターを搭載したりして冷却能力を高めることが可能になっています。TopHatをつけた場合のサイズは、M TopHatが&lt;b&gt;9.6L&lt;/b&gt;、L TopHatが&lt;b&gt;11.0L&lt;/b&gt;になります。&lt;/p&gt;&lt;p&gt;2020年7月に登場したMk3ではPCIe Gen4に対応しましたが、日本には代理店がなく、購入するにはtaobao等を利用する必要があります。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;FormD T1 (&lt;a href=&quot;https://formdworks.com/products/t1-black&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;)&lt;/h3&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;T1 V1.1&quot; height=&quot;400&quot; src=&quot;https://cdn.shopify.com/s/files/1/0375/5973/0308/products/20200624_Heroimage_01.24_960x.png?v=1593120338&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;&lt;p&gt;基本構造がA4-SFXやGhost S1と同じ&lt;b&gt;9.5L&lt;/b&gt;ケースですが、Ghost S1とは異なるアプローチで拡張性を高めています。Top Hatを追加することで拡張性を持たせたGhost S1に対してFormD T1ではケースの大きさは固定 (Ghost S1 + M TopHat相当) ですが、CPU/GPUコンパートメントの仕切りを動かすことができ、70mm CPUクーラー + 2スロットGPU、もしくは 50mm CPUクーラー + 3スロットGPUに組み替えることが可能になっています。&lt;/p&gt;&lt;p&gt;現在公式サイトから第2バッチのPreorderを受け付けており、10月から出荷が開始されるようです。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;VELKASE Velka7 (&lt;a href=&quot;https://www.velkase.com/products/velka-7&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;)&lt;/h3&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;vk7 side.jpg&quot; height=&quot;400&quot; src=&quot;https://images.squarespace-cdn.com/content/v1/5d38a89a3b6514000155ebc8/1595907745770-VWCSX09ZNIN8JJH1GB1G/ke17ZwdGBToddI8pDm48kJUlZr2Ql5GtSKWrQpjur5t7gQa3H78H3Y0txjaiv_0fDoOvxcdMmMKkDsyUqMSsMWxHk725yiiHCCLfrh8O1z5QPOohDIaIeljMHgDF5CVlOqpeNLcJ80NK65_fV7S1UfNdxJhjhuaNor070w_QAc94zjGLGXCa1tSmDVMXf8RUVhMJRmnnhuU1v2M8fLFyJw/vk7+side.jpg?format=750w&quot; width=&quot;400&quot; /&gt;&lt;/div&gt;&lt;p&gt;このケースは筐体体積を極限まで小さくするために縦置き配置とし、マザーボードとグラフィクスカードを90度方向を変えて配置することで、現行製品で最小の筐体体積 &lt;b&gt;5.9L &lt;/b&gt;を実現しています。&lt;/p&gt;&lt;p&gt;ただし、このケース (revision 2.0) はまだ発売されておらず、出荷時期も未定になっています。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;各ケースのサイズを模式的に箱で比較すると、このような形になります(右から順にSodaCan、A4-SFX、Ghost S1、T1、Velka7、SG05)。参考までに、&lt;a href=&quot;https://mohammedari.blogspot.com/2014/09/gpu.html&quot; target=&quot;_blank&quot;&gt;2014年にゲーミングPCを組んだ&lt;/a&gt;時に使用した小型ケース Silverstone SG05 (&lt;a href=&quot;https://www.silverstonetek.com/product.php?pid=210&amp;amp;area=jp&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;) も並べてみました。SG05も十分小型 (&lt;b&gt;10.8L&lt;/b&gt;) なのですが、サンドイッチ型ではないのでケース内にデッドスペースができてしまい、254mmまでのグラフィクスカードしか搭載することができません。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe height=&quot;480&quot; src=&quot;https://comparesizes.com/external/Soda Can/122.682x66.03999999999999x66.04/DAN Cases A4-SFX/200x317x112/LOUQE Ghost S1/188x322x140/FormD T1/216x330x133/VELKASE Velka7/303x177x111/Silverstone SG05/176x276x222&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;上の候補から、現時点で入手可能なA4-SFXとGhost S1で迷ったのですが、拡張性の高さとCPU冷却性能に余裕がある点が良いと思ったので、&lt;b&gt;LOUQE Ghost S1&lt;/b&gt;を選びました。&lt;/p&gt;&lt;p&gt;ほかに入手性が良い似たようなケースだと、&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Nouvolo Steck (8.7L)&amp;nbsp;&lt;a href=&quot;https://www.nouvolo.com/pages/steck&quot;&gt;https://www.nouvolo.com/pages/steck&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Sligger SM550 (9.7L)&amp;nbsp;&lt;a href=&quot;https://www.sliger.com/products/cases/sm550/&quot; target=&quot;_blank&quot;&gt;https://www.sliger.com/products/cases/sm550/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GEEEK A50 PLUS (9.9L)&amp;nbsp;&lt;a href=&quot;https://www.geeekstore.com/shop/a50-plus-mini-itx-case/&quot; target=&quot;_blank&quot;&gt;https://www.geeekstore.com/shop/a50-plus-mini-itx-case/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;NCase M1 (11.4L)&amp;nbsp;&lt;a href=&quot;https://ncases.com/products/m1&quot; target=&quot;_blank&quot;&gt;https://ncases.com/products/m1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;RAIJINTEK OPHION (16.0L)&amp;nbsp;&lt;a href=&quot;https://www.raijintek.com/jp/products_detail.php?ProductID=90&quot;&gt;https://www.raijintek.com/jp/products_detail.php?ProductID=90&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;あたりがあると思いますが、外見が好みではなかったので選択肢から除外しています。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;パーツ構成&lt;/h2&gt;&lt;p&gt;CPUは今勢いに乗っているAMDのRyzen 7です。チップセットはPCIe Gen4に対応するミドルレンジのB550、メモリはRyzenの定格に合わせて3200MHz、小型ケースに収めるためにストレージはm.2のみとしました。強いグラフィクスカードを搭載するため、電源には余裕をもってCorsair SF750を選択しました。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrvWKhxeYaQdeafnio04E8yBxKhnDB5mYR6avlcnIolsDKafLodo9SHX4yl30jl2B8eYG63B-EQXhw_3dcZ78idCrN8dTHcAcmoik0TTpRFqh0YGwaxJQXDIM8YzlOLJA03ctf37G8MHo/s4032/IMG_20200809_155223.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrvWKhxeYaQdeafnio04E8yBxKhnDB5mYR6avlcnIolsDKafLodo9SHX4yl30jl2B8eYG63B-EQXhw_3dcZ78idCrN8dTHcAcmoik0TTpRFqh0YGwaxJQXDIM8YzlOLJA03ctf37G8MHo/w640-h480/IMG_20200809_155223.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;google-sheets-html-origin style=&quot;text-align: start;&quot;&gt;&lt;/google-sheets-html-origin&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;214&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;126&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;種類&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border: 1px solid rgb(0, 0, 0); font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;種類&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;品名&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;品名&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;値段&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;値段&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;備考&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;備考&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;CPU&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;CPU&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;AMD Ryzen7 3700X&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;AMD Ryzen7 3700X&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;38,888円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;38,888円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;TDP 65W&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;TDP 65W&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;マザーボード&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;マザーボード&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GIGABYTE B550I AORUS PRO AX&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;GIGABYTE B550I AORUS PRO AX&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;21,450円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;21,450円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PCIe Gen4 / WiFi 6&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;PCIe Gen4 / WiFi 6&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;メモリ&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;メモリ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;CFD DDR4 3200 16GB x2&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;CFD Gaming CX1 DDR4-3200 16GB x2&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;15,279円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;15,279円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;XMPでOCが必要&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;XMPでOCが必要&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ストレージ&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ストレージ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;CFD M.2 2280 NVMe 1TB&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;CFD M.2 2280 NVMe 1TB&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;23,980円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;23,980円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PCIe Gen4&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;PCIe Gen4&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;電源&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;電源&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Corsair SF750&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Corsair SF750 Platinum&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;21,647円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;21,647円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Platinum&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ケース&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ケース&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;LOUQE Ghost S1 + M Tophat&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;LOUQE Ghost S1 Mk3 + M Tophat&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;37,082円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;37,082円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;taobaoで購入&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;taobaoで購入&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;CPUクーラー&amp;quot;}&quot; style=&quot;background-color: white; border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; color: black; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;CPUクーラー&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Noctua NH-L12 Ghost Edition&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Noctua NH-L12 Ghost Edition&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6,929円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;6,929円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;eBayで購入&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;eBayで購入&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ケースファン x2&amp;quot;}&quot; style=&quot;background-color: white; border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; color: black; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ケースファン x2&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Noctua A12x25 x2&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Noctua A12x25 x2&lt;/td&gt;&lt;td data-sheets-numberformat=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;#,##0&amp;quot;,&amp;quot;3&amp;quot;:1}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8,096円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;8,096円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;高い…&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td colspan=&quot;2&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;合計&amp;quot;}&quot; rowspan=&quot;1&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: bold; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;合計&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;173,351円&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;173,351円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;給付金とは…&amp;quot;}&quot; style=&quot;border-color: rgb(204, 204, 204) rgb(0, 0, 0) rgb(0, 0, 0) rgb(204, 204, 204); border-image: initial; border-style: solid; border-width: 1px; font-family: arial; font-weight: normal; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;今回GPUは購入していないので、このリストには含まれていません。今初めて合計を計算して自分でもびっくりしたんですけど、10万円を軽くオーバーしてますね… 当初は給付金の範囲内でPCを更新する予定だったのですが…&lt;/p&gt;&lt;p&gt;Ryzen 7 3700Xは&lt;a href=&quot;https://www.amd.com/ja/products/cpu/amd-ryzen-7-3700x&quot; target=&quot;_blank&quot;&gt;定格だとメモリ周波数が3200MHzまでに対応&lt;/a&gt;しているので、それに合わせてDDR4-3200を購入しました。ただし購入したCFD Gaming CX1は定格電圧1.2Vでは2666MHzでしか動作しないので、1.35V 3200MHzで動作させるためにはBIOSからXMPを有効にしてオーバークロックする必要があるので注意してください。&lt;/p&gt;&lt;p&gt;マザーボードはB550のmini-ITXマザーボードの中から、CPUクーラーと干渉しにくそうなもの(後述)を選びました。B550マザーボードであれば、PCIe Gen4のm.2スロットがついているので、対応するSSDを取り付ければシーケンシャルリード5GB/sの爆速ストレージが手に入ります。&lt;/p&gt;&lt;p&gt;電源にはCorsairの750Wのものを選択しましたが、この構成だと600Wでも十分だったかもしれません。実際、TDP250WのNVIDIA Titan RTX (TDP280W) を取り付けて3DMark TimeSpyを実行した場合でも、システム全体の消費電力はワットメーター読みで390W程度なのでかなり余裕があります。&lt;/p&gt;&lt;p&gt;小型ケースでハイエンドCPUを使用する場合に最も重要になるのが、CPUクーラーの選択です。Ryzen7 3700XにはWraith Prismという高品質な(しかも光る)CPUクーラーが付属しているのですが、残念ながらGhost S1には大きすぎて入れることができません。一般的に小型ケースのベンダーはケースに適したCPUクーラーのリストを提供していますが、DAN Caseは既製品のCPUクーラーに飽き足らず、A4-SFX専用に設計された &lt;a href=&quot;https://www.alpenfoehn.de/produkte/cpu-kuehler/black-ridge&quot; target=&quot;_blank&quot;&gt;Alpenfohn Blackridge&lt;/a&gt;というCPUクーラーを販売しています。LOUQE Ghost S1に適合するCPUクーラーとしては&lt;a href=&quot;https://noctua.at/en/nh-l12&quot; target=&quot;_blank&quot;&gt;Noctua NH-L12&lt;/a&gt;が最も良いとされていたのですが、既に販売が終了してしまっており、Ghost S1オーナーの間では&lt;a href=&quot;https://www.reddit.com/r/Louqe/comments/bai621/louqe_with_noctua_nhl12s/&quot; target=&quot;_blank&quot;&gt;後継のNH-L12Sのヒートパイプを無理やりまげる方法&lt;/a&gt;などが確立されていました。ところが、2020年7月にLOUQEがNoctuaとタイアップし、NH-L12を再設計した&lt;a href=&quot;https://noctua.at/en/nh-l12-ghost-s1-edition&quot; target=&quot;_blank&quot;&gt;NH-12 Ghost S1 Edition&lt;/a&gt;を発売し、Ghost S1にも公式専用CPUクーラーが誕生しました。&lt;/p&gt;&lt;p&gt;小型ケースで空冷を選択する場合にはエアフローを稼いで効率的にコンポーネントを冷却する必要があるので、ケースファンは値段は高価だが性能が高いことに定評のあるNoctuaの定番モデルを購入しました。実際、&lt;a href=&quot;https://youtu.be/QnBo9bTRsxk?t=349&quot; target=&quot;_blank&quot;&gt;OptimumTechの比較動画&lt;/a&gt;ではNoctua A12x25が他を圧倒しています。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;組み立て&lt;/h2&gt;&lt;p&gt;組み立てにあたって重要なのが、CPUクーラーとマザーボードの干渉です。特に最近のハイエンドマザーボードはVRMに一体型の大型ヒートシンクがついているものが多く、mini-ITXのマザーボードではCPUクーラーのマウントと干渉する可能性があります。今回使用したNoctua NH-L12 &lt;b&gt;Ghost S1 Edition&lt;/b&gt;ではマウントの形状が改良されていて、&lt;a href=&quot;https://www.reddit.com/r/Louqe/comments/hj3de8/share_your_itx_board_nhl12_ghost_s1_edition/&quot; target=&quot;_blank&quot;&gt;各種マザーボードに取り付けられます&lt;/a&gt;が、NH-L12 &lt;b&gt;無印版&amp;nbsp;&lt;/b&gt;だと&lt;a href=&quot;https://www.reddit.com/r/Louqe/comments/hj3de8/share_your_itx_board_nhl12_ghost_s1_edition/&quot; target=&quot;_blank&quot;&gt;ASUS X570I等のヒートシンクにマウンタが干渉する&lt;/a&gt;ようです。&lt;/p&gt;&lt;p&gt;今回のNH-L12 Ghost S1 EditionとGIGABYTE B550Iの組み合わせでも、クリアランスはギリギリでした…&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZUGY0nb_wbH7C0KaRxN7EGAmyIc3yrSXV0uomw_g9Fdj3OnfpGHjE5hOpMi7Xx156Daxka9moyKcknGqwUu1dt6-ZshbJTugzqxXQQ2KbNQU6Xm5jcivbRiv2mx6BMXYcaQ9wWvBQ48A/s4032/IMG_20200809_161902.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZUGY0nb_wbH7C0KaRxN7EGAmyIc3yrSXV0uomw_g9Fdj3OnfpGHjE5hOpMi7Xx156Daxka9moyKcknGqwUu1dt6-ZshbJTugzqxXQQ2KbNQU6Xm5jcivbRiv2mx6BMXYcaQ9wWvBQ48A/s640/IMG_20200809_161902.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;また、今回の組み立てにあたって少し凝ったことをしてみようと思い、&lt;b&gt;内部のATX電源ケーブルを自作&lt;/b&gt;してみました。蛍光グリーンとブラックのPETスリーブケーブルで、今回のパーツ構成に合わせてピッタリの長さになるようにしています。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtYyvJazYOY2NFumua-j3gVcsz94yFcyK2SUbc_w4gW7VlUfQ9duvJrQAGwW745OUmYIXUMS_fne9g2YZLE19j_Cdr_ZKoRtzRuzIV_1e3e7hbOJsr_3jtQx9j20DYB78GNswrlT2rac/s4032/IMG_20200811_223433.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtYyvJazYOY2NFumua-j3gVcsz94yFcyK2SUbc_w4gW7VlUfQ9duvJrQAGwW745OUmYIXUMS_fne9g2YZLE19j_Cdr_ZKoRtzRuzIV_1e3e7hbOJsr_3jtQx9j20DYB78GNswrlT2rac/s640/IMG_20200811_223433.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4j67AZoOg_Lk6AMvLENcekin-2cQEXzsQhdFK6atqiDXv-ECfi34g4GoZWVczG8UhQi-q97ldjqImCqByqAstHDfud3Jlt_teKXZE2gACOyvSID2t6ZQ7p-02nd5FhyphenhyphenBcgP4OfGoZ9_g/s4032/IMG_20200811_235127.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4j67AZoOg_Lk6AMvLENcekin-2cQEXzsQhdFK6atqiDXv-ECfi34g4GoZWVczG8UhQi-q97ldjqImCqByqAstHDfud3Jlt_teKXZE2gACOyvSID2t6ZQ7p-02nd5FhyphenhyphenBcgP4OfGoZ9_g/s640/IMG_20200811_235127.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;カスタムケーブルの自作自体は (作業は非常に面倒ですが) それほど難しくなく、自分の手で行うことが可能です。基本的にはPSUのピン配置対応図 (Corsairの場合は&lt;a href=&quot;https://pc-mods.com/blogs/psu-pinout-repository/corsair-psu-type-4-cables-pinout&quot; target=&quot;_blank&quot;&gt;このページ&lt;/a&gt;がわかりやすかったです) を確認しながら、長さを合わせて線を切って、コネクタを圧着して差し込むのを繰り返します (&lt;a href=&quot;https://www.youtube.com/watch?v=cHR2PfSrr6M&amp;amp;t=564s&quot; target=&quot;_blank&quot;&gt;OptimumTechのこの動画&lt;/a&gt;がわかりやすかったです)&lt;/p&gt;&lt;p&gt;PETを使った場合に面白いのが末端の処理で、動画にあるように端子を圧着した後に熱収縮チューブを被せて、少し長めに熱を加えます。すると、PETスリーブが熱収縮チューブに圧縮された状態で溶けて固まり、熱収縮チューブをはぎ取った際に綺麗にまとまります。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQp1xo5zuktwwCksU8IRfaDpHfDqjBn1q56kbldqMVlMW5wu0wnj2VtxvPsQf1ViQDqExFJHEyTSqJdpJr96R3P2zVxJ9AohcmcR_iYrv5CYtLlDWGNOl6m65UXmR_5-tYSB5F2SUcOI/s1656/cabling.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1656&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQp1xo5zuktwwCksU8IRfaDpHfDqjBn1q56kbldqMVlMW5wu0wnj2VtxvPsQf1ViQDqExFJHEyTSqJdpJr96R3P2zVxJ9AohcmcR_iYrv5CYtLlDWGNOl6m65UXmR_5-tYSB5F2SUcOI/s640/cabling.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;ただし、カスタムケーブルを自作するうえで一つ注意しなければならないのが、高効率電源 (Corsairの場合PlatinumのSF450/600/750) 用の24pinケーブルには &lt;b&gt;sense wire &lt;/b&gt;と呼ばれるものが取り付けられており、&lt;b&gt;高効率電源はマザーボードコネクタ側の電圧をそれで計測&lt;/b&gt;しています。つまり、24pinケーブルを作成する際にNCを除いた23本を結線するだけではだめで、&lt;b&gt;+4本追加で線をつなぐ必要があります&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;Corsairの電源の場合&lt;a href=&quot;https://hardforum.com/threads/corsair-sf600-600w-sfx-powersupply.1864645/post-1042840760&quot; target=&quot;_blank&quot;&gt;hardforumのスレッド&lt;/a&gt;によるとsense wireはこの画像の4本で、この4本には電流がほとんど流れず、マザーボード端の電圧を計測するためだけに使われます。この4本の線は&lt;b&gt;Platinum未満のGoldクラスの電源では使用されない&lt;/b&gt;ので、カスタムケーブル作成サイトや、自作紹介動画でも&lt;b&gt;省略されることが多い&lt;/b&gt;のですが、&lt;b&gt;CorsairのPlatinum電源の動作には必須&lt;/b&gt;なので、注意が必要です。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi3H14VAyRokoltQC7xzIbIMuxNph4-fhwuTUwsEC5ITIMc7Ddgzow8jcJLdcVQSD_79DbFhTO1BmD_vMTztI04vNIh1Is-vx3j-G7XWZwmFSpOJ8Yj3MdYPwJtN2HQSI0mQwC6FM9wnk/s800/73960_IMG_0538.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;364&quot; data-original-width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi3H14VAyRokoltQC7xzIbIMuxNph4-fhwuTUwsEC5ITIMc7Ddgzow8jcJLdcVQSD_79DbFhTO1BmD_vMTztI04vNIh1Is-vx3j-G7XWZwmFSpOJ8Yj3MdYPwJtN2HQSI0mQwC6FM9wnk/s640/73960_IMG_0538.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;今回は&lt;a href=&quot;https://www.reddit.com/r/PCSleeving/comments/et7wwy/what_do_you_think_18awg_and_22awg_sense_wires/&quot; target=&quot;_blank&quot;&gt;Redditのスレッド&lt;/a&gt;を参考に、スリーブの中にDouble Wireの4本については&lt;b&gt;給電用のAWG16とセンシング用のAWG24の2本&lt;/b&gt;の線を通し、AWG24を途中でスリーブから分岐して出してPSU側のコネクタに刺しました。&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsZKgM2-55RwaqBtrdmyj7FtMhI_HT4TPivJ4MgQfb7NoajVfFllk05sP_7SMk-rq2tw0ZjrpZGCZBAErWZ407byrx6fWFu8k1RV2Sm7T2zJlW1svawZ3xz22b0FGE55qexC2JAdafWjc/s4032/IMG_20200811_144632.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsZKgM2-55RwaqBtrdmyj7FtMhI_HT4TPivJ4MgQfb7NoajVfFllk05sP_7SMk-rq2tw0ZjrpZGCZBAErWZ407byrx6fWFu8k1RV2Sm7T2zJlW1svawZ3xz22b0FGE55qexC2JAdafWjc/s640/IMG_20200811_144632.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;実際にケーブルを作ってみた感想としては&lt;b&gt;本当に大変だった&lt;/b&gt;ので、自分でやるのは (特にPlatinum電源を使用している場合は) オススメできないです… もしカスタムケーブルが欲しいのであれば、&lt;a href=&quot;https://www.pslatecustoms.com/collections/louqe-ghost-s1-cables&quot; target=&quot;_blank&quot;&gt;このページ&lt;/a&gt;のようなGhost S1向けのカスタムケーブルを作成しているサイトから購入したほうが良いかもしれません… ※その際には&lt;b&gt;sense wireが必要かどうか&lt;/b&gt;のオプションを正しく選択してください&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;パフォーマンスと冷却性能&lt;/h2&gt;&lt;div&gt;メモリをXMPで3200MHzにオーバークロックした以外はデフォルトで、NVIDIA TITAN RTX (TDP 280W)を取り付けた状態で計測を行いました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4dppqdOo31ysM_Z7EyGy-p4NXZBdyW2BEM6VLmyMefQTUzf6egUSqknlTLgnZ4io5AWN3cunc5NwgRulPejLxDM30lb2CQqViz9Cu4cJ5jc9qQJKRDGpCJhoQRidK-4PAcHWVXnsgcEc/s640/spec.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;577&quot; data-original-width=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4dppqdOo31ysM_Z7EyGy-p4NXZBdyW2BEM6VLmyMefQTUzf6egUSqknlTLgnZ4io5AWN3cunc5NwgRulPejLxDM30lb2CQqViz9Cu4cJ5jc9qQJKRDGpCJhoQRidK-4PAcHWVXnsgcEc/s0/spec.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CrystalDiskMarkで計測したSSDのベンチマークでは、PCIe Gen3の3.5GB/sの限界を超えており、PCIe Gen4が活かされているような気がします。※ベンチマーク以外ではほとんど違いを体感することはできませんが…&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwH3bPb47bZ-4HtA8UYT7SaEmmAXusFpnB5O2FurQMG-lbUArAkArBlLAKOOf9jujGXTNoBqEPpolgJKZCwDOI2ANBtA_pM04IPFpmhrgoPKW46cFP5YtFMs4IsUSDE9bIta9YsaoI2w0/s1002/ssd.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;547&quot; data-original-width=&quot;1002&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwH3bPb47bZ-4HtA8UYT7SaEmmAXusFpnB5O2FurQMG-lbUArAkArBlLAKOOf9jujGXTNoBqEPpolgJKZCwDOI2ANBtA_pM04IPFpmhrgoPKW46cFP5YtFMs4IsUSDE9bIta9YsaoI2w0/w640-h350/ssd.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3DMark TimeSpyで計測したCPU/GPUのベンチマークスコアはそれぞれ、10139/14660でした。また、この時にHWiNFOで計測した最大消費電力は、CPUのパッケージが84.1W、GPUが284W、ワットモニターで計測したシステム全体の消費電力が390Wでした。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLFyIN8Gwpbul0XaMCRnrnIMxjF31XVJTw88g9efE33V0UFGVbR_mHoly13EE8Tjs9B2HuRjebIBEUKGVuwEeh_nbV0tPEC8CD0e4kj-bBmBuJ_wjsOADiILu3-DpAWX7hjmvjlkjB-30/s1362/3dmark.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;594&quot; data-original-width=&quot;1362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLFyIN8Gwpbul0XaMCRnrnIMxjF31XVJTw88g9efE33V0UFGVbR_mHoly13EE8Tjs9B2HuRjebIBEUKGVuwEeh_nbV0tPEC8CD0e4kj-bBmBuJ_wjsOADiILu3-DpAWX7hjmvjlkjB-30/s640/3dmark.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CPUのTDPは65Wなのにどうしてパッケージ消費電力が84.1Wになっているのか気になる方もいらっしゃるかと思いますが、これはRyzenの自動オーバークロック機能によるもので、Ryzenはデフォルトの設定で、冷却能力に余裕がある場合には消費電力を設定値 (PPT; 3700Xのデフォルト値は88W) までコアの動作周波数を上げようとします。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;また、NVIDIAのGPUもブーストクロックという設定を持っており、設定したサーマルスロットリング (デフォルトでは84度)に到達していない場合は定格クロックから自動でブーストクロックまで動作周波数を上げようとします。ただ、Founder’s Editionのデフォルトの設定ではファンの騒音を抑えるためか、サーマルスロットリングに到達してもファンの回転数は100%にならない設定になっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3DMark TimeSpyのストレステストをかけてCPU/GPUの温度上昇を見てみると、デフォルトの設定ではGPU温度が87度まで上がっていますが、この状態でもGPUのファンは100%になっていません (上のグラフ)。そこで、MSI Afterburnerを使ってファンの回転数カーブを調整し、温度が80度を超えた時点で100%になるように設定したのが下のグラフになっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6FTwIMJciiZx5NrRaifOnVLLV6OQbJT0wrwbmq_gl9k6_rbK47hp8fEc5NhnlQmaxIIRq-iXUgVmp1Kln-ndQqM92bSC0GJLkmQiIgacDYSpM7JWmv5-PgI50fE344iyLo7pc8a6-SSQ/s680/thermal.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;680&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6FTwIMJciiZx5NrRaifOnVLLV6OQbJT0wrwbmq_gl9k6_rbK47hp8fEc5NhnlQmaxIIRq-iXUgVmp1Kln-ndQqM92bSC0GJLkmQiIgacDYSpM7JWmv5-PgI50fE344iyLo7pc8a6-SSQ/s640/thermal.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;下のグラフでは2つのケースファン、GPUファンは100%で回転していますが、GPU温度は82度に到達しています。また、この時点では設定された最大ブーストクロック (1770MHz)には到達しておらず、1750MHzを超えたあたりでサーマルスロットリングされていました。現状の空冷構成では、TITAN RTXでブーストクロックを維持するのは難しいようです。&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;おまけ：taobao店舗からのLOUQE Ghost S1 Mk3購入&lt;/h2&gt;&lt;p&gt;今回、LOUQE Ghost S1 Mk3はTwitter公式アカウントが&lt;a href=&quot;https://twitter.com/LouqeSweden/status/1275776245775716359?s=20&quot; target=&quot;_blank&quot;&gt;ツイート&lt;/a&gt;していたtaobao公式店舗のうち、&lt;a href=&quot;https://item.taobao.com/item.htm?id=611755324238&quot; target=&quot;_blank&quot;&gt;NOEDIY&lt;/a&gt;&amp;nbsp;から直接購入して、&lt;a href=&quot;https://tneko.com/774.html&quot; target=&quot;_blank&quot;&gt;転送ネコ&lt;/a&gt;を使って国内に転送してもらいました。&lt;/p&gt;&lt;p&gt;昔はtaobaoの利用には中国国内の銀行口座が必要だったようですが、現在は支付宝&lt;span face=&quot;&quot; style=&quot;background-color: white; color: #202122; font-family: sans-serif; font-size: 15.104px;&quot;&gt;&amp;nbsp;(&lt;/span&gt;Alipay) のアカウントとクレジットカードがあれば購入可能なようです。注意点としては、Alipayには観光客用のTourPassという機能があってお金をチャージして支払いに利用できるものがあるのですが、&lt;b&gt;それは利用せずに&lt;/b&gt;、taobao支払い時に直接クレジットカードで支払います。&lt;/p&gt;&lt;p&gt;購入はすべてアプリ内から行う必要があり、SMS認証でtaobaoアプリのアカウントを作成したら、ストアに在庫や納期を問い合わせ、問題なさそうなら購入します。当然、アプリはすべて中国なので自分は全く読めないのですが、&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi_RFBwsqIDg7ei5Vx6u4HUsG2NZ1kQcKly-3TdxRzXuXRtzTX9yOGAsbilHg5vmn72_vhP6uDjqqwCphdlR9BumaAiLqsGhDP9GIMXE8Me_V5oqWXT4ujjjBvyDfXJPsOdBoy4vvgZLw/s2160/Screenshot_20200713-112142.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;1080&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi_RFBwsqIDg7ei5Vx6u4HUsG2NZ1kQcKly-3TdxRzXuXRtzTX9yOGAsbilHg5vmn72_vhP6uDjqqwCphdlR9BumaAiLqsGhDP9GIMXE8Me_V5oqWXT4ujjjBvyDfXJPsOdBoy4vvgZLw/s640/Screenshot_20200713-112142.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;アプリのスクリーンショットを撮影して、Google翻訳アプリからカメラ入力 &amp;gt; スクリーンショットを読み込みでなぞったところを翻訳してるので、一応表示されている内容を理解することは可能です。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiadTSgy4uVDqHRlcduvcmn88tESjXcsZzLel4WQDY7DJZgt92yGFJBPAhBgtNLDlIh5sKOjdBg5dLUR9ojZd47MVElfgCjyG1OKkna8cnBORpqY7ccYRr6mqI6LTZ2Ftyq6Cf4_20wgfA/s2160/Screenshot_20200817-212713.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;1080&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiadTSgy4uVDqHRlcduvcmn88tESjXcsZzLel4WQDY7DJZgt92yGFJBPAhBgtNLDlIh5sKOjdBg5dLUR9ojZd47MVElfgCjyG1OKkna8cnBORpqY7ccYRr6mqI6LTZ2Ftyq6Cf4_20wgfA/s640/Screenshot_20200817-212713.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;taobaoで商品を購入するにあたって最も重要なのが、&lt;b&gt;taobao店舗ページに書いてあることの&lt;/b&gt;&lt;b&gt;半分は嘘で、もう半分は誇張である&lt;/b&gt;&amp;nbsp;(特にクラウン未満の店舗場合)&amp;nbsp;ということを理解することです。自分もこれを全く理解しておらずにひどい目にあったのですが、&lt;b&gt;商品ページに書いてある在庫数は全て嘘 (10,000を超えていても在庫なしの可能性あり) で、記載してある納期も信用してはいけません。&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;これまで中国の Banggood や AliExpress といったECサイトや米国の eBay 等のオークションサイトでも買い物をしてきましたが、taobaoはそれらとは比較にならないほど&lt;b&gt;圧倒的に無法地帯&lt;/b&gt;で、支払いをしてから急に連絡が取れなくなることもあります (※ありました)。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;クラウン以上の信頼できる店舗をちゃんと選んで、購入しようとしている商品の出荷実績があるかを確認して、購入前にチャットで店舗に在庫と納期を問い合わせて、問い合わせのレスポンスが早くて信頼できそうだったらやっと購入に踏み切るぐらいがちょうどよいのかもしれません。幸いNOEDIYは英語にも問い合わせにも対応しているので、英語でチャットが可能です。また応答も非常に早く、注文した当日に発送してくれて、翌日には転送倉庫に到着しました。&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTpgLB3l9g91TdIeB3HIppk1c9rLH-B_d91IRroT_eVXIhqJNLMVgy5YgIIgk0_mIIO3VMgZY3QzMmbjTGrqE1macK_iIghsIE7pbw4Epd58Fr31DghjQff0byfgC9SamcE5R4vidrb_s/s2160/Screenshot_20200817-215602.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;1080&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTpgLB3l9g91TdIeB3HIppk1c9rLH-B_d91IRroT_eVXIhqJNLMVgy5YgIIgk0_mIIO3VMgZY3QzMmbjTGrqE1macK_iIghsIE7pbw4Epd58Fr31DghjQff0byfgC9SamcE5R4vidrb_s/s640/Screenshot_20200817-215602.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;taobaoにはGhost S1のクローンも多数出品されており、Redditで観測していると実際に届くものもあるようですが、コピー品は受注生産の場合も多く納期もあてにならないことが多いのでやめたほうが良いです。また、正規品を購入するにしても、他に手段があるならtaobaoから購入するべきではないと思います。&lt;/p&gt;&lt;p&gt;自分ははじめ、Ghost S1のクローン品を別の店舗から、taobao代行サービス (&lt;a href=&quot;https://taobaoshinkansen.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;タオバオ新幹線&lt;/a&gt;) を使って購入しようとしたのですが、&lt;b&gt;この代行サービスもまた曲者&lt;/b&gt;でした… てっきり代行サービスに任せておけば店舗との交渉をやってくれると思っていたのですが、その考えは甘かったようです… というのも、代行サービス業者自体が中国の商習慣 :thinking_face: で働いており、3日おきに確認しないと何もしませんし、問い合わせは50%の確率で無視され、約束した期限までに何かをしてくれたことは一度もありませんでした。結局、6/13 に買い付け依頼をしてから 8/3 の全額返金までを通して、得られたのは大きなストレスだけでした。&lt;/p&gt;&lt;p&gt;なので、もしどうしても必要になってtaobaoから何かを購入される場合には、信頼できる店舗を見つけて、直接交渉してみることをお勧めします…&lt;/p&gt;</description><link>http://mohammedari.blogspot.com/2020/08/louqe-ghost-s1-mk3ryzen.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73eAXqQ8T2w2zH75T4ERZXK1DddmgzYeqBwcyCWRZfGhI4v7b98n0hyphenhyphenyvORhtZWrd-B3NlSVGTOh7RFFougRqr2BalE7gEK0nlKpVaRNoIsVmWO203U4O0A7FH1j2kToE4fPcs4RW2-M/s72-c/IMG_20200812_001505.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-1043957207359877875</guid><pubDate>Wed, 02 Oct 2019 07:56:00 +0000</pubDate><atom:updated>2019-10-02T17:00:47.196+09:00</atom:updated><title>uFactoryの格安ロボットアームxArm 5 Liteが届いたので動かしてみた</title><description>2018年10月にKickStarterでバックしていた &lt;a href=&quot;https://www.kickstarter.com/projects/ufactory/xarm-most-cost-effective-intuitive-industrial-robo?lang=ja&quot;&gt;xArm - Most Cost-Effective Intuitive Industrial Robotic Arm&lt;/a&gt;&amp;nbsp;を先日ついに受け取ることができました！&lt;br /&gt;
バックしていたのは一番安い5軸のxArm 5 Liteで、Suer Early Bird価格でなんと&lt;b&gt;$2,399&lt;/b&gt;、他社の同スペックのロボットアームと比較すると破格のお値段です！&lt;br /&gt;
※エンドエフェクタは別売りなので、自作するか別途購入する必要があります&lt;br /&gt;
※写真のものはアクリルで自作した、電磁石つきのプレートです&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTEQjEhZ8p03cCPvO-rPBvQWFla4z9NX0ABUBPf-9jCJx6peu2p2qY9YOJCyZlGOzNq_tYhs2kNDveQW_cbWb9ChngKCnSr9yMSahMOqk5dd7Dw7l6weMLWmZSIu82vmc7bW9_-rofUJs/s1600/IMG_20190921_132751.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTEQjEhZ8p03cCPvO-rPBvQWFla4z9NX0ABUBPf-9jCJx6peu2p2qY9YOJCyZlGOzNq_tYhs2kNDveQW_cbWb9ChngKCnSr9yMSahMOqk5dd7Dw7l6weMLWmZSIu82vmc7bW9_-rofUJs/s320/IMG_20190921_132751.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ただ、当初の出荷予定は2019年4月だったのですが、順調に遅れて、最終的に受け取れたのは2019年8月末になってからでした… まだ発送されていない人も多いみたいなのでマシな方ではあるのですが、やはりKickStarterは当初から遅れることを計算に入れて気長に待つほうが良さそうですね…&lt;br /&gt;
&lt;br /&gt;
この記事では、届いたxArmをセットアップして、とりあえず動かして遊んでみるところまでをまとめたいと思います。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
固定するためのフレームを作る&lt;/h3&gt;
&lt;br /&gt;
xArmはこのような形でダンボールに梱包されて届きました。各関節は電磁ブレーキでロックされており、電源が投入されていない状態では動かないようになっています。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaP6mRBuTOLwbjodTNK5T-Q5y8hP6QYkOgzhE6JwmGnTCKdTiGRM5Mt_-F7vHUfMd4Z_TTcH5tyXdvKaxk67Oi7aHs8_nWfcOvf2l3yQd_O9_uxs_ZIqBT9CHyczkLeT5inwGOG198ksM/s1600/DSC05563.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaP6mRBuTOLwbjodTNK5T-Q5y8hP6QYkOgzhE6JwmGnTCKdTiGRM5Mt_-F7vHUfMd4Z_TTcH5tyXdvKaxk67Oi7aHs8_nWfcOvf2l3yQd_O9_uxs_ZIqBT9CHyczkLeT5inwGOG198ksM/s400/DSC05563.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
他のロボットアームでもそうだと思うのですが、xArmは何かに固定した状態で使用することを想定されており、単体で自立することができません。まずは、アームを動かしても倒れないように、何かにしっかり固定してあげる必要があります。&lt;br /&gt;
&lt;br /&gt;
今回は、&lt;a href=&quot;https://meviy.misumi-ec.com/&quot;&gt;ミスミのmeviy (メヴィー) &lt;/a&gt;というサービスを使って固定用のプレートを作り、&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVcsz3yHa22mKax-1CgG-E4eexPAmxc1fiVIR6Gw-T3L1u9j3pentuEIyoVVne6iYy_dNWqOnHOw8k-hmaouwAlgFic9a1NptThEZj0eR5xOg5_oggL1Cr2tWYZOYdssRa1GKAeZeFeGU/s1600/DSC05587.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVcsz3yHa22mKax-1CgG-E4eexPAmxc1fiVIR6Gw-T3L1u9j3pentuEIyoVVne6iYy_dNWqOnHOw8k-hmaouwAlgFic9a1NptThEZj0eR5xOg5_oggL1Cr2tWYZOYdssRa1GKAeZeFeGU/s400/DSC05587.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
同じくミスミで販売している30mm角のフレームで床に置くための足を組みました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhdd4uJX3ea89HVsPmZdkEXogQvXi2mlshRWEzF4DhKnoo4YxesFA5KE-pRNc6lFk_TUeB9AHTW8kjF2rd97eQi89f7BeUHeE3taSqkpTNPxqXXJ-VplWBx7skBOJokZtuKdHN-b61Zo/s1600/DSC05588.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhdd4uJX3ea89HVsPmZdkEXogQvXi2mlshRWEzF4DhKnoo4YxesFA5KE-pRNc6lFk_TUeB9AHTW8kjF2rd97eQi89f7BeUHeE3taSqkpTNPxqXXJ-VplWBx7skBOJokZtuKdHN-b61Zo/s400/DSC05588.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
meviyは今回初めて利用したのですが、200mm角でt5のSS400プレートにφ5.5とφ6.6の穴を12個ずつ開けて、4,712円でした。stepファイルをアップロードしてオンライン注文してから6日で製造して発送、1週間程度で受け取ることが可能ですし、材料費も考えればお得で手軽だと思います。&lt;br /&gt;
&lt;br /&gt;
フレームの方は30mm角のHFS6-3030で、300mmずつ脚が4方向に伸びるようにしてみました。倒れないか少し不安があったのですが、フレーム自体の重さもあるため、重りを載せなくても特に倒れる心配はなさそうです。&lt;br /&gt;
&lt;br /&gt;
組み立てる際に問題になるのが、(おそらく初期ロットのxArmはすべて同じだと思うのですが、)電源コネクタが干渉してM5のネジを1本締めることができない点です…&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdN4rAdC1cEQSVFaFhc0q_jgRq_BELAP-aH-WnpDPaBay_LBjUtsuWDh1M-ouyfBFngfaamt2RRXf9Vu5amJ7ArckAG53sHJW2DMW5bulq1yP2QUrlZkL9bfhnsJPDCW5f6ySOIqJc6n0/s1600/Screenshot+from+2019-10-02+15-03-47.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;318&quot; data-original-width=&quot;363&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdN4rAdC1cEQSVFaFhc0q_jgRq_BELAP-aH-WnpDPaBay_LBjUtsuWDh1M-ouyfBFngfaamt2RRXf9Vu5amJ7ArckAG53sHJW2DMW5bulq1yP2QUrlZkL9bfhnsJPDCW5f6ySOIqJc6n0/s320/Screenshot+from+2019-10-02+15-03-47.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_190911063&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_190911064&quot;&gt;&lt;/span&gt;&lt;br /&gt;
※写真は電源プラグがついたままですが、電源プラグを外しても、コネクタが干渉してネジをフランジに開いている穴に入れることができません…&lt;br /&gt;
&lt;br /&gt;
完全にuFactoryの設計ミスなのですが、電源コネクタのネジを外して少し浮かせた状態でネジを入れて、ボールポイントの六角で抑えながら、裏側のナットを回すことでなんとか固定することができました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgutH90XqWBTZ2UilQigHRW_jRtB4ySU6H5NlfOfKVf9VdNiEFI0xnGHsn5eqEIkk-rBW7Npnt4Q7HTTES98tQtmWb-WzEdWkdf4a_yJbETBwg75MHPR1Dh7q-ObYIsdbv_BRzia-s9rIk/s1600/DSC_1611.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;900&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgutH90XqWBTZ2UilQigHRW_jRtB4ySU6H5NlfOfKVf9VdNiEFI0xnGHsn5eqEIkk-rBW7Npnt4Q7HTTES98tQtmWb-WzEdWkdf4a_yJbETBwg75MHPR1Dh7q-ObYIsdbv_BRzia-s9rIk/s320/DSC_1611.JPG&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
裏側には&lt;a href=&quot;https://jp.misumi-ec.com/vona2/detail/110302695460/?HissuCode=HSCGF6-B-300&quot;&gt;溝にはめるゴム足&lt;/a&gt;を付けているのと、フレームの端には断線と怪我防止のために&lt;a href=&quot;https://jp.misumi-ec.com/vona2/detail/110300446540/?HissuCode=HFCL6-3030-B&quot;&gt;キャップ&lt;/a&gt;をはめています。取り外しを考慮して、プレート裏には&lt;a href=&quot;https://jp.misumi-ec.com/vona2/detail/110302252810/?HissuCode=HNTRP6-6&quot;&gt;位置決めできるナット&lt;/a&gt;を使ったりしたので部品代が高くついてしまい、合計12,000円程度になってしまいました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
ファームウェアのアップデート&lt;/h3&gt;
&lt;br /&gt;
とりあえず動かすために必要なソフトウェアとマニュアルは、&lt;a href=&quot;https://www.ufactory.cc/#/en/support/download/xarm&quot;&gt;公式ページのxArm向けDownload&lt;/a&gt;からダウンロードすることができます。このページはモバイル版ページが存在しないようで、モバイル端末で見ようとするとトップページが表示されてしまいます。携帯端末から見る場合にはPCブラウザモードで見るようにすると見られると思います。&lt;br /&gt;
&lt;br /&gt;
とりあえず xArm Studio を使うと簡単にロボットアームを動かすことができるので、ダウンロードしてインストールしておきます。初回起動時に自動でアップデートが走るので、インストールが終わったら起動して、待っている間にxArm 5 User Manual と xArm Studio User Manual を読んで置くのが良い感じでした。xArm Studioのアップデートが終わったら、マニュアルに従ってロボットアーム、コントローラ、PC接続すれば良いと思います。&lt;br /&gt;
※コントローラ本体には2つのRJ45コネクタがあるのですが、RS485で接続する場合とEthernetで接続する場合で、刺す場所を間違えないように注意する必要があります&lt;br /&gt;
&lt;br /&gt;
初期ロットの場合、ただ電源を投入してつなげただけではxArm Studioの画面に何も表示されず白い画面のままになってしまうので、フォーラムの記事&lt;a href=&quot;https://forum.ufactory.cc/t/official-white-screen-in-xarm-studio/2242&quot;&gt;【Official】White screen in xArm Studio&lt;/a&gt;に従って、コントローラのファームウェアを更新する必要があります。&lt;br /&gt;
&lt;br /&gt;
フォーラムでは「xArm Controller自体がインターネットに接続できる必要がある」と書いているのですが、「xarm-tool(アップデートプログラム)」を実行するPCがインターネットに接続できれば問題なくアップデート可能でした。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIXePre9f_B5sQfyYcJ8f9qJJt37nh6wC7HfV0AFBbnhhfpnAJlmC8_i10COiRpPYJi9YAsqaSHAIHOyzvuB6EhLePUf9eSVMhwPy5cHFzmnlv3l9Yppur4mT2qaa4zgLMvQfqpcGCvc/s1600/xarm-tool_progress.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;343&quot; data-original-width=&quot;509&quot; height=&quot;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIXePre9f_B5sQfyYcJ8f9qJJt37nh6wC7HfV0AFBbnhhfpnAJlmC8_i10COiRpPYJi9YAsqaSHAIHOyzvuB6EhLePUf9eSVMhwPy5cHFzmnlv3l9Yppur4mT2qaa4zgLMvQfqpcGCvc/s320/xarm-tool_progress.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
アップデートにはかなり時間がかかる(15分程度)ようなのですが、このようにコマンドプロンプトで何かをダウンロードしているログが出れば正常に進んでいると思います。&lt;br /&gt;
&lt;br /&gt;
他にもトラブルがある場合には、公式フォーラムの&lt;a href=&quot;https://forum.ufactory.cc/t/official-xarm-faq/2205&quot;&gt;FAQ&lt;/a&gt;、&lt;a href=&quot;https://forum.ufactory.cc/t/official-xarm-faq-2/2219&quot;&gt;FAQ2&lt;/a&gt;、を読み、それでも問題が解決しない場合にはフォーラムで質問すると答えが得られると思います。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
動かしてみる&lt;/h3&gt;
&lt;br /&gt;
xArm Studioが無事に起動するとこのような画面が表示されると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wM_TjMoxwNNXNdmBfIK8yAubWOynHw2tGGolC4v6oJHrAiGzI1lIBNeZ4ezC4nAmrEzK6l_N5apxqkV4646AylpuCI6a30LCfIjsPcV1_cITXsaPmceUP4d1Ww1FU-IZBmrLS6-_9zI/s1600/Screenshot+from+2019-10-02+16-06-12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;589&quot; data-original-width=&quot;908&quot; height=&quot;258&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wM_TjMoxwNNXNdmBfIK8yAubWOynHw2tGGolC4v6oJHrAiGzI1lIBNeZ4ezC4nAmrEzK6l_N5apxqkV4646AylpuCI6a30LCfIjsPcV1_cITXsaPmceUP4d1Ww1FU-IZBmrLS6-_9zI/s400/Screenshot+from+2019-10-02+16-06-12.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
左から&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;LiveControl ... とりあえず動かすモード、関節を個別に動かしたり、外力を加えてポーズを設定することも可能&lt;/li&gt;
&lt;li&gt;Blocky / Python ... プログラムで動かすモード、エディタ機能も内蔵&lt;/li&gt;
&lt;li&gt;Recording ... 外力を加えてモーションを記録再生するモード、Blockyから記録したモーションを呼び出すことが可能&lt;/li&gt;
&lt;li&gt;Settings ... 設定&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
となっていますが、実際に動かしてみる前にまずSettingsを開き、&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi98EuhSDBgXCgZGXKJHCgFLxZK6BlS6-wktPcf0u804Hjf7b9o_9ExW92HbGhrdOch6D0OkBcb-KmvwHUepE_IhhGXBgLwxmREuo3faLNv9hKOJsjw1T8oOkR2kHPFsLlDhTeUzhbABLM/s1600/Screenshot+from+2019-10-02+16-06-49.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;517&quot; data-original-width=&quot;858&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi98EuhSDBgXCgZGXKJHCgFLxZK6BlS6-wktPcf0u804Hjf7b9o_9ExW92HbGhrdOch6D0OkBcb-KmvwHUepE_IhhGXBgLwxmREuo3faLNv9hKOJsjw1T8oOkR2kHPFsLlDhTeUzhbABLM/s400/Screenshot+from+2019-10-02+16-06-49.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Sensitivity SettingsのCollision Sensitivityが0より大きな値になっていることを確認します。この値はアームが何かに衝突した際に緊急停止する機能の設定で、どの程度の外力が加わった場合に停止するかを設定します。この値が0になっていると緊急停止機能が無効になり、何かに衝突してもアームが止まらずに自分自身や周りの物を破壊してしまう恐れがあるため、特別な事情がない場合は0より大きな値に設定しておくことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
LiveControlではとりあえずアームを動かしてみることが可能です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL6MaQclmogOhz2jcwAW9TOI3lhabY8Eu3y1knLbEfRmcdwR1UqKq_lGgJMBhh4iRpI4NgSx4SSZxE-c8347r6iO1WD52GDvDQkcMvQq2DhXZey4_16U30fM151pubo3VNiQhg4Mq17I8/s1600/Screenshot+from+2019-10-02+16-22-20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;626&quot; data-original-width=&quot;907&quot; height=&quot;275&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL6MaQclmogOhz2jcwAW9TOI3lhabY8Eu3y1knLbEfRmcdwR1UqKq_lGgJMBhh4iRpI4NgSx4SSZxE-c8347r6iO1WD52GDvDQkcMvQq2DhXZey4_16U30fM151pubo3VNiQhg4Mq17I8/s400/Screenshot+from+2019-10-02+16-22-20.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
緊急停止スイッチが入った状態でロボットを接続、電源を入れてxArm Studioを起動していると思うので、最初はこの画面のReal Robotではなく、Simulation Robotにチェックが入っている状態だと思います。&lt;br /&gt;
&lt;br /&gt;
まず緊急停止スイッチをオフにして(この状態でアームやエンドエフェクタに電源が供給されますが、電磁ブレーキは効いたままです)、Real Robotのラジオボタンを押すと&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxLA_rlKO-LjiBY905TFA_Oe-N0T0KuIP8pQH9ggP9WBJ3oKbrpvEP5lbhPLkTcRizOjfGLFSUeDmcBd4HlhyMMbrMg_KG5jlkREpq4XyKIgURH1CDVTKGmVD_2XcI3SYFFvkVEDSy4VA/s1600/enable_robot.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;817&quot; data-original-width=&quot;1278&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxLA_rlKO-LjiBY905TFA_Oe-N0T0KuIP8pQH9ggP9WBJ3oKbrpvEP5lbhPLkTcRizOjfGLFSUeDmcBd4HlhyMMbrMg_KG5jlkREpq4XyKIgURH1CDVTKGmVD_2XcI3SYFFvkVEDSy4VA/s400/enable_robot.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
この画面になるので、Enable Robotを押すと関節の制御がオンになり、電磁ブレーキが外れます。また、Manualを押すことでロボットの関節を外力で動かすことが可能になり、手で触って自由にポーズを変えることが可能になります。&lt;br /&gt;
※エンドエフェクタが何もついていない場合には問題ないのですが、何か付けている場合は重さを予め設定しておかないと、重力方向に力がかかったと判定して勝手にうごいてしまうので注意が必要です&lt;br /&gt;
&lt;br /&gt;
Blocky / Pythonでは内臓のエディタを使って、自由にプログラミングしてアームを動かすことが可能になっています。エンドエフェクタのGPIOから入力も取れるので、面白いことができそうな気がします。ビジュアルプログラミングができるってことは実質知育玩具なので、ご家族の目が気になって導入を躊躇している方も、是非ゴリ押ししてみてください。&lt;br /&gt;
※結果は保証しません&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQPXtWkQw05i3QJSgGtHDvBpDrY3elE5r9lL1UHl9OtroXRchru-F5IUb-xn7N4XC_zn06NJUJRoDe4DgBqXnrAwLfjNRdojZEBk4S1EqLF1vBLBX5I_OpBwn4anwqJ_c0Rr7JvkX_ZZE/s1600/blocky.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;826&quot; data-original-width=&quot;1286&quot; height=&quot;256&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQPXtWkQw05i3QJSgGtHDvBpDrY3elE5r9lL1UHl9OtroXRchru-F5IUb-xn7N4XC_zn06NJUJRoDe4DgBqXnrAwLfjNRdojZEBk4S1EqLF1vBLBX5I_OpBwn4anwqJ_c0Rr7JvkX_ZZE/s400/blocky.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordingではアームを自分で動かしてモーションを記録してファイルに保存したり、記録したモーションを再生することが可能になっています。モーションはあくまで決まった動作を行うものなので、Blocky / Pythonほど自由に動かすことはできませんが、自動で動くので見ていて面白いです。&lt;br /&gt;
※エンドエフェクタはアクリルで自作してみました&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/EL844i12Sio/default.jpg?sqp=CICy0ewF&amp;rs=AOn4CLAutw5pVq1B71fa1qA3HWqLFRTSQw&quot; src=&quot;https://www.youtube.com/embed/EL844i12Sio?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
また、&lt;a href=&quot;https://github.com/xArm-Developer/xarm_ros&quot;&gt;xArmはROSにも対応している&lt;/a&gt;ので、MoveItで動かすことも可能になっています。もちろんアーム自体のgazebo用descriptionファイルも公開されているので、軌道計画も簡単に行うことが可能になっています。ただしxArm 5 Liteの場合は自由度が足りず、軌道が生成できないケースが目立ちました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
xArm 5 Liteを買ってみての感想&lt;/h3&gt;
&lt;br /&gt;
実際に動かしてみた感触では、動作はなめらかですし、価格が非常に安いにもかかわらず、しっかり動作していると思います。ただ、今回、一番安かったので5軸のxArm 5 Liteを買ってみたのですが、用途によっては自由度が足りないケースが出てくることがわかりました。&lt;br /&gt;
&lt;br /&gt;
xArmには5 Lite、6、7と3種類の製品があり、それぞれ自由度が5軸、6軸、7軸となっています。上から物を掴んで別の場所に移動させるような用途では5軸で問題ないのですが、壁のスイッチを押したり、斜めになっているタッチパネルを操作する場合などでは、5軸では自由度が足りず、アームの先端をそこまで動かせないと思います。&lt;br /&gt;
&lt;br /&gt;
エンドエフェクタで工夫することも可能かもしれませんが、xArm 6であればxArm 5 Liteの3番めと4番目の関節の間に、軸方向に回転する軸が1つ追加されており、アーム先端が取れる姿勢が多くなると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2019/10/ufactoryxarm-5-lite.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTEQjEhZ8p03cCPvO-rPBvQWFla4z9NX0ABUBPf-9jCJx6peu2p2qY9YOJCyZlGOzNq_tYhs2kNDveQW_cbWb9ChngKCnSr9yMSahMOqk5dd7Dw7l6weMLWmZSIu82vmc7bW9_-rofUJs/s72-c/IMG_20190921_132751.jpg" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-1447609854274607139</guid><pubDate>Thu, 22 Aug 2019 16:48:00 +0000</pubDate><atom:updated>2019-08-23T01:48:39.775+09:00</atom:updated><title>GLSLでGPUを活用するROSノードを作ってみました</title><description>&lt;h3&gt;
&lt;br /&gt;TL;DR&lt;/h3&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;OpenGL + GLSLでsensor_msg::Imageの画像をGPUで処理できるROSノードを作りました (&lt;a href=&quot;https://github.com/mohammedari/opengl_ros&quot;&gt;GitHubレポジトリ&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;EGL + OpenGLで実装しているため、X serverが起動していない環境でも(多分)動作します&lt;/li&gt;
&lt;li&gt;OpenGLは勉強してて色々限界を感じたので、Vulkanが使える環境ならVulkanを使ったほうが良いかもしれません&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyg4hrRr52XtjPA83eDslOpPL4K9qyyeUhyphenhyphenBCGg1jH-GNXlWCYyjkK2L0bg7b41z2KeoQgxxkCy4u_bOgLx1cFtOUGVRj1n7oYqkMZ6_tUknCVRiQ5X-mluotrDwp9YyKPkIxUIKz7ZWw/s1600/color_extract_result.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;341&quot; data-original-width=&quot;819&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyg4hrRr52XtjPA83eDslOpPL4K9qyyeUhyphenhyphenBCGg1jH-GNXlWCYyjkK2L0bg7b41z2KeoQgxxkCy4u_bOgLx1cFtOUGVRj1n7oYqkMZ6_tUknCVRiQ5X-mluotrDwp9YyKPkIxUIKz7ZWw/s640/color_extract_result.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
はじめに&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
最近、NVIDIAのJetsonシリーズを始めとしたGPUが強い組み込みデバイスが登場してきました。Project C.G.S.ではJetson TX2をドローンに搭載して自律飛行にチャレンジしているのですが、Jetson TX2にはせっかく強いGPUが載っているのにもかかわらず、全く使いこなせていませんでした。&lt;br /&gt;
&lt;br /&gt;
GPUを活用しようとした場合、CUDAやOpenCL、OpenCVのGPU実装を使う手もありますが、なるべく移植性の高い方法で手軽に書けた方が幸せになれそうです。GLSLなら移植性が高いですし、画像を扱う分には手軽で、CG分野の知見を活かせそうだったので、ROS環境でOpenGL + GLSLを使ってGPUによる処理をしてみることにしました。&lt;br /&gt;
&lt;br /&gt;
※本当はVulkanが使いたかったのですが、手持ちのノートPCのCPUが古く(Broadwell; Core i5-5300U)、搭載しているIntel HD Graphics 5500は&lt;a href=&quot;https://www.intel.co.jp/content/www/jp/ja/support/articles/000005524/graphics-drivers.html&quot;&gt;Vulkanに対応してなかった&lt;/a&gt;ので、ノートPCでも開発するために仕方なくOpenGLにしました&lt;br /&gt;
※この直後の世代のSkylakeから、Intel HD GraphicsがVulkan対応になってます、惜しい！&lt;br /&gt;
&lt;br /&gt;
Direct Xのほうは9と11を触ったことがあったのですが、OpenGLはほとんど素人で、全く知らないところから手探りで進めてます。そのあたりも含めて、OpenGLについて全然知らないところから学んだ軌跡についても、ここに残しておきたいと思います。なるべく正確な記述を心がけていますが、情報が間違っている箇所があるかもしれません。もし何かありましたら、コメントで指摘していただけると幸いです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
オフスクリーンレンダリングについて&lt;/h3&gt;
&lt;br /&gt;
まず、今回ROSでOpenGLを使う上で、一般的なCG分野でのOpenGLの使用とは大きく違う点が一つあります。普通、OpenGLを使う際には何かしらレンダリングした結果を画面に表示すると思うのですが、今回ROSでOpenGLを使うにあたって、入出力ともROSのメッセージを使用するため、画面へのレンダリングは行いません。これをオフスクリーンレンダリングと呼ぶようです。&lt;br /&gt;
&lt;br /&gt;
※Windows環境でオフスクリーンレンダリングされている方の記事 :&amp;nbsp;&lt;a href=&quot;https://corgi-lab.com/programming/opengl-without-window/&quot;&gt;ウインドウを作らずにOpenGLでレンダリングする方法&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu上でどのようにレンダリングが行われているか理解するのに、&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Linux_Graphics_Stack_2013.svg&quot;&gt;WikipediaのLinux Graphics Stackの図&lt;/a&gt;が非常にわかりやすくまとまっていました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Linux_Graphics_Stack_2013.svg/2000px-Linux_Graphics_Stack_2013.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;450&quot; data-original-width=&quot;800&quot; height=&quot;360&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Linux_Graphics_Stack_2013.svg/2000px-Linux_Graphics_Stack_2013.svg.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
※Attribution: Shmuel Csaba Otto Traian;&amp;nbsp;This file is licensed under the &lt;a href=&quot;https://en.wikipedia.org/wiki/en:Creative_Commons&quot;&gt;Creative Commons&lt;/a&gt; &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/3.0/deed.en&quot;&gt;Attribution-Share Alike 3.0 Unported&lt;/a&gt; license.&lt;br /&gt;
&lt;br /&gt;
図中の色分けにはちゃんと意味があって、重要な登場人物は&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;緑 : libGL &lt;/b&gt;... OpenGL系APIの実装、GPUベンダやMesaが提供するライブラリ、プロプライエタリなものは直接カーネルを叩くものもあるが、Mesaが提供するものは命令をハードウェア固有のAPI呼び出しに変換してlibDRMに渡す&lt;/li&gt;
&lt;li&gt;&lt;b&gt;紫 : Display Server / Window Manager &lt;/b&gt;... OSのウィンドウを管理する仕組み、X Window Systemが最も普及している仕様で、Xorg / libX がそれぞれ、サーバー / クライアントのリファレンス実装&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
の2人です。Ubuntu上で画面にOpenGLでレンダリングをしようとした場合、ウィンドウ(=ディスプレイの領域)を管理している紫の人たちにお伺いを立ててから、そのウィンドウに紐付いたコンテキストを使って緑の人たちを初期化する必要がありました。&lt;br /&gt;
※それによって、GPUはレンダリングしようとしているウィンドウの上に別のウィンドウが重なっている場合に、そこ部分のレンダリングを行わないということが可能になります(Pixel Ownership Test)&lt;br /&gt;
&lt;br /&gt;
上の図を見ながら&lt;a href=&quot;https://blog.mecheye.net/2012/06/the-linux-graphics-stack/&quot;&gt;The Linux Graphics Stack&lt;/a&gt; (&lt;a href=&quot;https://www.wagavulin.jp/entry/2016/07/19/195955&quot;&gt;翻訳してくれた方のブログ&lt;/a&gt;) のブログ記事を読むと歴史の流れがよくわかります。当初、ウィンドウに紐付いたOpenGLの初期化を行う方法は、プラットフォーム固有のAPIでウィンドウを作成した後にWGL/GLX APIというAPIを使う必要がありました。WGLがWindows向けのAPIで、GLXがLinux向けのAPIです。このあたりをラップして簡単にクロスプラットフォームでOpenGLの初期化ができるようにしたのがGLUTやGLFWです。&lt;br /&gt;
&lt;br /&gt;
名前から想像できる通り、GLX APIはX Window Systemに依存したAPIなのですが、モバイルデバイスがGPUを搭載するようになって問題が出てきました。当然モバイルデバイスではX Window Systemは動作していないで、OpenGLの初期化をする上でGLX APIは使用できません。そこで、OpenGL ESの登場とともに生まれたのがEGLというAPIです。EGLが作られたことで、紫の部分とは全く関係なく、独立して緑の部分の初期化を行うことができるようになりました。&lt;br /&gt;
&lt;br /&gt;
EGLは当初OpenGL ESしかサポートしていなかったのですが、EGL 1.4からOpenGL (デスクトップ用のフル機能)をサポートするようになりました。よく勘違いされがちなのですが、EGLとはOpenGL ESに紐付いたものではなく、OpenGLコンテキストを作成するための独立したAPIセットです。現在EGLは、WGL/GLXを置き換えるクロスプラットフォームのAPIとなっています。&lt;br /&gt;
&lt;br /&gt;
普通にOpenGLアプリケーションを作ろうとすると、GLUTやGLFWを使用するのが簡単だと思います。GLUTやGLFWは、ウィンドウの作成(紫の部分)とOpenGL Contextの作成(緑の部分)をセットで行い、簡単にクロスプラットフォームのデスクトップアプリケーションを作る思想で作られています。GLUTのglutCreateWindowやGLFWのglfwCreateWindowでは、Display Serverでウィンドウが作成された後、それに紐付いたOpenGL Contextがセットで作られます。そのため、OpenGLを使用するためにはDisplay Server(Xorg等)が動作している必要がありますし、アプリケーションはlibX等をリンクしなくてはいけませんし、アプリケーションはOpenGLの機能を使う前にWindowを作成しないといけません。&lt;br /&gt;
&lt;br /&gt;
一方、EGLを直接使用することで、Display Serverとは独立してOpenGL Contextを作る事が可能です。今回作成するROSノードは組み込みデバイス上で動作することを想定していますので、ディスプレイは繋がっていないかもしれませんし、X Window Serverも動作していないかもしれません。そのため、EGLを使用したOpenGLの初期化を行う必要があります。&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
EGLを使ったコンテキストの作成&lt;/h3&gt;
&lt;br /&gt;
EGLに関することは公式ドキュメントに詳細が書かれていますが、ここでも簡単にまとめておきたいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;EGL Introduction&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglIntro.xhtml&quot;&gt;https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglIntro.xhtml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EGLが提供しているのは、従来GLXなどのプラットフォーム依存APIで提供されていた、OpenGLの初期化部分の処理になります。オフスクリーンレンダリングに必要なのは、EGLを使ってディスプレイハンドルの取得(GPUの指定)をした後に、パラメータを指定して&lt;br /&gt;
OpenGLコンテキストを作成するところのみです。GLXのAPIと手順が近いですが、ウィンドウを作成しなくてよいのでシンプルですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;//Get default display handle
auto display = eglGetDisplay(EGL_DEFAULT_DISPLAY);

//Bind OpenGL API to use full desktop function other than OpenGLES
eglBindAPI(EGL_OPENGL_API),

//Create default configuration
constexpr std::array&amp;lt;EGLint, 1&amp;gt; configAttributes = {
&amp;nbsp; &amp;nbsp; EGL_NONE,
};

EGLConfig config;
EGLint numConfig;
eglChooseConfig(display, configAttributes.data(), &amp;amp;config, 1, &amp;amp;numConfig);

//Specifying OpenGL Core 4.5; this should be match glad loader profile.
const std::array&amp;lt;EGLint, 7&amp;gt; contextAttributes = {
&amp;nbsp; &amp;nbsp; EGL_CONTEXT_MAJOR_VERSION, 4,
&amp;nbsp; &amp;nbsp; EGL_CONTEXT_MINOR_VERSION, 5,
&amp;nbsp; &amp;nbsp; EGL_CONTEXT_OPENGL_PROFILE_MASK, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT,
&amp;nbsp; &amp;nbsp; EGL_NONE,
};

auto context = eglCreateContext(display_.get(), config, EGL_NO_CONTEXT, contextAttributes.data());
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
ここではデフォルトディスプレイを使用していますが、GPUが複数搭載されている環境では、明示的にディスプレイIDを指定する必要があるかもしれません。このあたりはDirectXでも同様の仕組みがあるので、比較的とっつきやすいかもしれません。&lt;br /&gt;
&lt;br /&gt;
次に、作成したEGLコンテキストを使ってOpenGLコンテキストの作成(OpenGLの初期化)を行います。OpenGLコンテキストはOpenGLの全ての内部状態を保持するインスタンスです。&lt;br /&gt;
プロセス内に複数作ることも可能ですが、スレッドに対して1つしか持つことができません。スレッドローカルにCurrentなContextを設定できて、すべてのOpenGL APIはCurrentContextに作用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;OpenGL Context&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.khronos.org/opengl/wiki/OpenGL_Context&quot;&gt;https://www.khronos.org/opengl/wiki/OpenGL_Context&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
今回はOpenGLESではなくデスクトップ版のフル機能のOpenGLを使うので、eglBindAPIでOpenGLを指定してからコンテキストを作成する必要があります。また、コンテキスト作成時のAttributesには、使用するOpenGLのバージョンを指定しておきます。ここで指定するバージョンは、後述するOpenGLローダーで指定するバージョンと一致している必要があります。&lt;br /&gt;
&lt;br /&gt;
OpenGLのコンテキストには、Core Profile / Compatibility Profileという2つのContextが存在します。Compatibilityはすべての機能を実装しますが、CoreはObsoleteな機能を実装しません。自分で一から実装を行う範囲ではCore Profileで十分だと思うので、これもAttributesに設定しておきます。&lt;br /&gt;
&lt;br /&gt;
実装にあたっては、&lt;a href=&quot;https://www.kabuku.co.jp/developers/rendering-on-gce-with-gpu&quot;&gt;こちらのブログ記事(Kabuku; GCPのGPUインスタンスでレンダリングを高速化)&lt;/a&gt;も参考にさせていただきました。また、この方の&lt;a href=&quot;https://www.kabuku.co.jp/developers/linking_egl_opengl&quot;&gt;別の記事&lt;/a&gt;にあったのですが、NVIDIAの最新ドライバをEGL使用する場合には、libGLではなく、libOpenGLをリンクする必要があるようです。NVIDIAのGPUをお使いの方でうまく行かない場合には、試してみてください。&lt;br /&gt;
&lt;br /&gt;
NVIDIA公式も、&lt;a href=&quot;https://devblogs.nvidia.com/egl-eye-opengl-visualization-without-x-server/&quot;&gt;EGL + OpenGL without an X serverという記事&lt;/a&gt;を公開しています。libOpenGLをリンクする必要がある話についても、&lt;a href=&quot;https://devblogs.nvidia.com/linking-opengl-server-side-rendering/&quot;&gt;ここ&lt;/a&gt;に記載されていました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
OpenGL APIのエントリポイントをロード&lt;/h3&gt;
&lt;br /&gt;
Contextさえ作ってしまえば、普通にgl〜の関数を利用してレンダリングすることが可能になります。ところが、残念ながらOpenGL 1.1以降のCore APIと拡張は、エントリポイントがデフォルトで定義されていないので、Contextからポインタを取得しないと使用することができません。EGLでContextを作ったならeglGetProcAddress関数でひとつずつ必要なAPIのエントリポイントを取得することもできるのですが、サードパーティのOpenGL Loading Libraryを使うと便利である、とKhronosがアナウンスしています&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;OpenGL Loading Library&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.khronos.org/opengl/wiki/OpenGL_Loading_Library&quot;&gt;https://www.khronos.org/opengl/wiki/OpenGL_Loading_Library&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
正直この辺はサードパーティに頼るのではなくてちゃんと手順を整えて欲しいとは思うのですが、どうなんでしょう…&lt;br /&gt;
※現状、紹介されている多くのライブラリがメンテナンスの手が足りず、更新されなくなってしまっています&lt;br /&gt;
&lt;br /&gt;
最も広く使われているのはGLEWだと思うのですが、Ubuntu 16.04にaptで入るバージョンだとEGLに対応していないのと、直近2年ほど更新が止まっているので、代わりにGladを使用することにしました。Gladは継続的に更新されており、GitHubのスターも多く、GLFWのチュートリアルでも使われています。&lt;br /&gt;
&lt;br /&gt;
Gladでは、&lt;a href=&quot;https://glad.dav1d.de/&quot;&gt;このページ&lt;/a&gt;のWeb UIを使ってOpenGL APIのバージョンとプロファイル、使用する拡張機能を指定して、ヘッダファイルとコードを自動生成することができるようになっています。&lt;br /&gt;
&lt;br /&gt;
今回は、Ubuntu16.04 にaptで入る最新のlibglx1-mesa-glxが対応するOpenGL Core 4.5を選択しました。指定するバージョンはコンテキストを作成した際のAttributeのバージョンと合わせておきます。また、他にも必要な拡張機能があれば追加します。&lt;br /&gt;
※ハードウェアがサポートする拡張機能はglxinfoで調べることが可能です&lt;br /&gt;
&lt;br /&gt;
生成されたGladのOpenGLローダーコードが提供しているgladLoadGLLoaderは、プラットフォーム依存のOpenGLエントリポイント取得関数を外部から渡すことが可能になっています。EGLでコンテキストを作成した場合には、eglGetProcAddress関数のポインタをgladLoadGLLoaderに渡せば後はよろしくやってくれます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;gladLoadGLLoader(reinterpret_cast&amp;lt;GLADloadproc&amp;gt;(eglGetProcAddress))

&lt;/pre&gt;
&lt;br /&gt;
OpenGLの拡張機能を使用する場合には一つ注意点があって、OpenGLでは同一の機能がVendor/EXT/ARB/Coreで提供されているので、まず機能がCoreに無いか探す -&amp;gt; 次にARB、EXT、Vendorの順で提供されている機能を探す必要があります。これは、OpenGLに新しい機能が実装される場合、まずVendorが独自拡張で機能を実験的に実装し、それがARBに認められてから、最終的にCoreに統合されるといったステップを踏んでいるためです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
今回のROSノードの処理の流れ&lt;/h3&gt;
&lt;br /&gt;
ここまでで、OpenGLの初期化処理まで実装することができました。ここからは、OpenGLのAPIを使ってシェーダ、頂点バッファ、テクスチャ、サンプラ、フレームバッファとレンダリングに必要なパイプラインのセットアップを行います。&lt;br /&gt;
&lt;br /&gt;
処理の基本的な流れは、&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;頂点バッファ、シェーダ、FBOをセットアップ&lt;/li&gt;
&lt;li&gt;ROSノードに届いたsensor_msgs::Imageをcv_bridgeでOpenCV画像に変換&lt;/li&gt;
&lt;li&gt;画像データを入力テクスチャとしてGPUに転送&lt;/li&gt;
&lt;li&gt;シェーダを実行、FBO経由でテクスチャにレンダリング結果を書き込み&lt;/li&gt;
&lt;li&gt;レンダリング結果が書き込まれたテクスチャをCPUに転送&lt;/li&gt;
&lt;li&gt;画像データをsensor_msgs::Imageとして出力&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
と言った流れになります。&lt;br /&gt;
&lt;br /&gt;
以降の記事では、この図のOpenGL APIが絡むそれぞれの要素について、コード例を交えながら説明したいと思います。詳細な実装については、GitHubレポジトリの&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/simple_renderer.cpp&quot;&gt;SimpleRenderer.cpp&lt;/a&gt;と、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/tree/master/opengl_ros_lib/src/egl&quot;&gt;cgs::egl名前空間&lt;/a&gt;、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/tree/master/opengl_ros_lib/src/gl&quot;&gt;cgs::gl名前空間&lt;/a&gt;のそれぞれの機能のラッパーの実装を参照してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;h3&gt;
頂点バッファ&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
頂点バッファとインデックスバッファはそれぞれ、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/vertex_buffer.h&quot;&gt;cgs::gl::VertexBuffer&lt;/a&gt;、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/element_buffer.h&quot;&gt;cgs::gl::ElementBuffer&lt;/a&gt;のかたちにまとめてみました。基本的にはglCreateBuffersしてからglNamedBufferDataでデータを転送しているだけです。この2つを&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/vertex_array.h&quot;&gt;cgs::gl::VertexArray&lt;/a&gt;でシェーダと紐付けて使用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;//Prepare simple vertex type
struct Vertex
{
    float x, y, z;
};

//Prepare verticies and indicies for a quad that covers the whole screen
static constexpr std::array&lt;vertex 4=&quot;&quot;&gt; VERTICIES = { 
    -1.f, -1.f, 0.0f,
     1.f, -1.f, 0.0f,
     1.f,  1.f, 0.0f,
    -1.f,  1.f, 0.0f,
};
static constexpr std::array&lt;uint 6=&quot;&quot;&gt; INDICIES = { 
    0, 1, 2,  
    2, 3, 0,
};

cgs::gl::VertexBuffer&lt;vertex&gt; vbo(ERTICIES, GL_STATIC_DRAW); 
cgs::gl::ElementBuffer&lt;uint&gt;  ebo(INDICIES, GL_STATIC_DRAW); 
cgs::gl::FrameBuffer          fbo;

vao.mapVariable(vbo, glGetAttribLocation(program.get(), &quot;position&quot;), 3, GL_FLOAT, 0);
vao.mapVariable(ebo);
&lt;/uint&gt;&lt;/vertex&gt;&lt;/uint&gt;&lt;/vertex&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
OpenGLの頂点バッファの扱いについては、&lt;a href=&quot;http://mklearning.blogspot.com/2014/08/opengl.html&quot;&gt;こちらの記事(算譜記録帳;&amp;nbsp;OpenGLでの頂点データの扱いの変化)&lt;/a&gt;が非常に参考になりました。ただ、ブログ中のコードではDSAではない古いAPIが使われているので、実装の際にはglCreateBuffers/glNamedBufferDataを使用するようにしたほうが良いと思います。より詳細な情報に関しては、公式ドキュメントを参照してください。&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Vertex Specification&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://www.khronos.org/opengl/wiki/Vertex_Specification&quot;&gt;https://www.khronos.org/opengl/wiki/Vertex_Specification&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
シェーダ&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
シェーダのコードも同様に&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/shader.h&quot;&gt;cgs::gl::Shader&lt;/a&gt;と&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/program.h&quot;&gt;cgs::gl::Program&lt;/a&gt;にまとめています。cgs::gl::Shaderで個々のシェーダをファイルから読み込みコンパイルし、cgs::gl::Programに指定してリンクします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;std::array&lt;cgs::gl::shader 2=&quot;&quot;&gt; shaders({
    cgs::gl::Shader(GL_VERTEX_SHADER,   &quot;vertex_shader.glsl&quot;),
    cgs::gl::Shader(GL_FRAGMENT_SHADER, &quot;fragment_shader.glsl&quot;),
}); 
std::gl::program program(shaders); 

//Uniform parameters  setup
program.use();
glUniform2f(glGetUniformLocation(program_.get(), &quot;resolution&quot;), width_, height_);
glUniform1i(glGetUniformLocation(program_.get(), &quot;texture&quot;), 0);
&lt;/cgs::gl::shader&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
より詳細な情報に関しては、公式ドキュメントを参照してください。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Shader Compilation&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.khronos.org/opengl/wiki/Shader_Compilation&quot;&gt;https://www.khronos.org/opengl/wiki/Shader_Compilation&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
テクスチャ&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
テクスチャは2Dのみを&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/texture2d.h&quot;&gt;cgs::gl::Texture2D&lt;/a&gt;としてまとめています。これもglCreateTexturesして、glTextureStorage2Dしているだけですね… レンダリングパイプラインの初期化では、シェーダに対して設定する入力テクスチャと、レンダリング結果を保存する出力テクスチャの2つを同じサイズで作成しています。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;cgs::gl::Texture2D textureIn(GL_SRGB8, width_, height_);  //
cgs::gl::Texture2D textureOut(GL_SRGB8, width_, height_); //Assuming sRGB input and output
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
ここでポイントになるのは、テクスチャのinternalFormatにSRGBを指定している点になります。カメラ画像などを含む一般的な画像のRGB画素値には、輝度に対して線形の値ではなく、一般に1/2.2乗のガンマ補正を適用した値(SRGB値)が格納されています。ところが、GLSLを始めとするシェーダー内の処理ではRGB画素値が線形である前提で書かれることが多いため、どこかでSRGB値から線形RGB値に変換する必要があります。OpenGLはこれを簡単に行う仕組みが用意されており、テクスチャのフォーマットにSRGBを指定することで、テクスチャから読み出す際にSRGB -&amp;gt; 線形RGB、テクスチャに書き込む際に線形RGB -&amp;gt; SRGBへの変換を自動で行ってくれます。&lt;br /&gt;
&lt;br /&gt;
現在のROSノードでは画像の入出力はSRGB色空間で行われることを前提にしていますが、Bayerパターンのカメラを扱う場合等では線形RGBを直接扱うこともあると思いますし、2.2以外のガンマ補正が書けられた画像を扱う場合もあると思います。そういった場合にはテクスチャのフォーマットはRGBとして、GLSL内で適切な補正を行う必要があります。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
入力テクスチャは毎フレームレンダリング開始前にCPUからデータを転送し、出力テクスチャは&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros_lib/src/gl/frame_buffer.h&quot;&gt;cgs::gl::FrameBuffer&lt;/a&gt;にセットして、レンダーターゲットに設定、レンダリング結果をCPUに転送します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;//Write input image to the texture
textureIn_.write(GL_BGR, GL_UNSIGNED_BYTE, src.data);

//Perform rendering here...

//Read result
textureOut_.read(GL_BGR, GL_UNSIGNED_BYTE, dest.data, dest.rows * dest.cols * dest.channels());
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
CPU/GPU間のテクスチャの受け渡しにはPixel Transferを使うと速いという回答をよく見かけますが、Pixel TransferはCPU/GPU間のデータ転送を非同期で行い、レンダリングパイプラインを待機させずにテクスチャデータを書き換える用途に使われます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Pixel Transfer&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.khronos.org/opengl/wiki/Pixel_Transfer&quot;&gt;https://www.khronos.org/opengl/wiki/Pixel_Transfer&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
今回のオフラインレンダリングでは毎フレームGPUを動かす前にテクスチャの転送を完了させ、描画結果をCPUに戻してPublishする必要があるので、Pixel Transferによる非同期転送の恩恵を受けることができません。そのため、今回の実装ではPixel Transferは使用せず、glTextureSubImage2DとglGetTextureImageで転送を行いました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
GPU/CPUの実行速度の比較&lt;/h3&gt;
&lt;br /&gt;
ここまでで、OpenGLを使ったレンダリングパイプラインの初期化があらかたできました。あとは頂点バッファ、シェーダ、フレームバッファをバインドして、レンダリング関数を呼びだせばレンダリングができます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;//Bind OpenGL Objects
textureIn_.bindToUnit(0);
sampler_.bindToUnit(0);
fbo_.bind();
vao_.bind();

//Perform rendering
glViewport(0, 0, width_, height_);
glDrawElements(GL_TRIANGLES, INDICIES.size(), GL_UNSIGNED_INT, nullptr);
glFinish();
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
次に、実際に実行して速度を比較してみたいと思います。比較はUSBカメラから取得した画像をimage_transportで転送し、CIELab色空間に変換してから線形SVMで特定の色を分離する、という処理で行ってみました。CIELab色空間を線形カーネルで分離するのが適切かは置いておいて(一応、赤色であればそれっぽく分離は可能です)、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros/shader/fs_color_extraction.glsl&quot;&gt;GPU版はGLSL(Fragment Shader)で&lt;/a&gt;、&lt;a href=&quot;https://github.com/mohammedari/opengl_ros/blob/master/opengl_ros/src/color_extraction_cpu_nodecore.cpp#L43&quot;&gt;CPU版はOpenCVで&lt;/a&gt;実装を行いました。&lt;br /&gt;
&lt;br /&gt;
該当処理にかかった時間をnsで出力しながら計測し、記録されたログの中間50フレームの平均をとったものがこちらです。計測はIntel Core i5 5300U 2.3GHz (Intel HD Graphics 5500)で行いました。&lt;br /&gt;
※GPU版の方はGPUへのテクスチャ転送と、CPUへの書き戻し時間も含めた時間で計測しています&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: Arial; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;解像度&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;解像度&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;CPU&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;CPU&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GPU&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;GPU&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;320x240&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;320x240&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5.85 ms&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;5.85 ms&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1.25 ms&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;1.25 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;640x480&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;640x480&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;21.8 ms&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;21.8 ms&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4.30 ms&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;4.30 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1280x720&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;1280x720&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;60.0 ms&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;60.0 ms&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12.3 ms&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;12.3 ms&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
低い解像度ではGPU/CPU間の転送でGPUが不利になるかと思ったのですが、CPU/GPUとも解像度に応じてリニアに処理時間が増えているようです。全体としてGPUの方が5倍程度早い結果となりましたが、CPUの方のコードは残念な感じの実装なので、この程度の処理の場合は工夫すればCPUでも十分なパフォーマンスが出せるかもしれないです。&lt;br /&gt;
&lt;br /&gt;
以降の記事では、OpenGLの実装に関する雑多な情報を(恨み混じりで)補足します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
OpenGLについて&lt;/h3&gt;
&lt;br /&gt;
DirectXと違って、OpenGLのAPIは同じ名前空間に新しいAPIと互換性のための古いAPIが混在している上に、拡張APIも多くの種類があるので、ぱっと見どうすればよいのか非常に分かりにくいです。新しいAPIを使えば非常に簡単にできる場合でも、互換性のために残されている古いAPIを使って面倒な実装をしてしまうこともありますし、特に警告が出るわけでも無いのでそれに気づくことも難しいです。また、インターネット上にある情報は古いものが多く、参考にしているページが古いAPIを使っている場合も多いです。&lt;br /&gt;
&lt;br /&gt;
Khronosが公開している CommonMistakes のWikiページには、インターネット上にはびこる古いコードの問題と、新しいAPIでそれを代替する情報が含まれているので、OpenGLを使った開発を始める前には是非読んでおいた方が良いと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Common Mistakes&lt;/b&gt;&lt;br /&gt;
https://www.khronos.org/opengl/wiki/Common_Mistakes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ハマりがちな落とし穴として個人的に気になったのが&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;テクスチャに適切なパラメータを一括で設定するために、glTextureImage2Dではなくて、glTextureStore2Dでテクスチャを作成してからglTextureSubImage2Dでデータを転送する&lt;/li&gt;
&lt;li&gt;API呼び出し毎にglGetErrorを呼び出すのをやめて、glDebugMessageCallbackを設定して全てのエラーを補足する&lt;/li&gt;
&lt;li&gt;internalFormatはテクスチャのフォーマットを決めるだけで実際にGPUがどんなメモリ配置でデータを格納するかは実装依存で、internalFormatが合っていても転送時に変換が起きる可能性がある&lt;/li&gt;
&lt;li&gt;パラメータを変更する際にglBind系APIを使うとグローバルな状態(何がBindされているか)が変化してしまうので、Direct State Access(DSA)を使う&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
でした。特にDirect State Accessは非常に重要で、パラメータ設定時に毎回glBind〜系のAPIを呼び出す苦悩から開放されます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Direct State Access&lt;/b&gt;&lt;br /&gt;
https://www.khronos.org/opengl/wiki/Direct_State_Access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenGL 4.5でDirect State Accessの導入に伴って、OpenGL Objectに対するDSA版のAPIが新たに一式追加されたのですが、DSAではない元のAPIとの名前の対応が本当に意味不明で辛いです…また、glGen〜系呼び出すOpenGL Objectの場合、DSAを使用するためにはglCreate〜系のAPIを呼び出す必要がある点にも注意が必要です。&lt;br /&gt;
&lt;br /&gt;
Texture、Framebuffer、Bufferオブジェクトに対するDSAのやり方は、&lt;a href=&quot;https://github.com/Fendroidus/Guide-to-Modern-OpenGL-Functions/blob/master/README.md&quot;&gt;こちらのページ(A Guide to Modern OpenGL Functions)&lt;/a&gt;が本当に参考になりました。また、同ページには他にも新しいOpenGL APIを使った実装についての記述がたくさん含まれているので、是非読んでいただくと良いと思います。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
OpenGLとOpenCVとの相互運用について&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
もちろんOpenCVにもCUDAやOpenCLのモジュールがあって、GPUを活用した実装が可能になっています。必要な機能が既にそこに実装されているのであれば、まずはそれを使うのが良いと思います。しかし、いくつかの処理を組み合わせたり、一部CPUで処理を行おうとすると、GPGPUではどうしてもCPU/GPU間のコピーがボトルネックになりがちです。一方、OpenGL + GLSLを使ってシェーダーで処理を書けば、レンダリングパイプラインをつかった処理を比較的簡単に柔軟に記述することができます。&lt;br /&gt;
&lt;br /&gt;
また、OpenCVのcv::ogl名前空間には、&lt;a href=&quot;https://docs.opencv.org/3.4.1/d2/d3c/group__core__opengl.html&quot;&gt;OpenGLとの相互利用のためのクラスが提供されています&lt;/a&gt;が、ROSのOpenCVではオプションが有効になっていなかったのと、ドキュメントにGTKとQtバックエンドのみ対応と書かれていたので、今回の用途には使えなさそうでした。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h3&gt;
OpenCVのCIELab色空間変換とガンマ補正について&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;
今回、GLSL内でRGBからCIELab色空間への変換を実装する際に、&lt;a href=&quot;https://docs.opencv.org/3.3.1/de/d25/imgproc_color_conversions.html&quot;&gt;OpenCVのドキュメント&lt;/a&gt;を参考にして実装しました。ドキュメントには線形RGB -&amp;gt; XYZ -&amp;gt; CIELabと変換する際の式が書いてあり、GLSL内にこれを実装することで、GPUを使ったCIELab色空間への変換が可能になります。入力テクスチャをSRGBフォーマットに指定しておけば、シェーダー実行前に自動的にSRGB -&amp;gt; RGBの変換は自動的に行われるので、GLSLで実装する場合にはドキュメントの式をそのまま実装して問題ありません。&lt;br /&gt;
&lt;br /&gt;
ところが、1点注意しなくてはいけない落とし穴があります… 実はOpenCVのcvtColorにcv::COLOR_BGR2Labを設定して変換した場合、このドキュメント通りの変換は行われません。cv::COLOR_BGR2Labは入力をSRGBとして解釈し、ガンマ補正を戻して線形RGBに変換してからドキュメントの式を適用するためです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/opencv/opencv/wiki/ChangeLog#22&quot;&gt;リリースノート&lt;/a&gt;によるとどうやらこのあたりの挙動はOpenCV 2.2のリリース時に変化したらしく、以前はcv::COLOR_BGR2Labはちゃんとドキュメント通りの変換を行っていたのですが、現在は入力をSRGBとして解釈しているようです。従来通りの線形RGBに対する変換は、cv::COLOR_&lt;b&gt;L&lt;/b&gt;BGR2Labを使えと書いてあります。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
用語まとめメモ&lt;/h3&gt;
&lt;br /&gt;
X Window System ... ウィンドウ管理システムの仕様&lt;br /&gt;
X11 ... X Window Systemで使われるプロトコル&lt;br /&gt;
libX ... X Window Systemのクライアントのリファレンス実装&lt;br /&gt;
libXCB ... libXの低レイヤーが分離されたもの&lt;br /&gt;
Xorg ... X Window Systemのサーバーのリファレンス実装&lt;br /&gt;
DIX ... Driver Independent X、Xorgのグラフィクスサブシステム&lt;br /&gt;
DDX ... Driver Dependent X、Xorgのグラフィクスサブシステム&lt;br /&gt;
fglrx ... FireGL and Radeon for X、AMDのプロプライエタリなlibGL実装&lt;br /&gt;
OpenGLES ... OpenGL Embedded System、OpenGLの組み込み向けプロファイル&lt;br /&gt;
GLX/WGL ... X Window System / Windows向けのOpenGL拡張API、libGL.soに含まれる、プラットフォーム固有のウィンドウシステムで作成したフレームバッファを使用するために作られたAPI&lt;br /&gt;
AIGLX ... Accelerated Indirect GLX、X11を通してOpenGLを使うAPI？&lt;br /&gt;
EGL ... GLX/WGLを置き換えるプラットフォーム非依存のOpenGL Context構築用API、間違えられやすいがGLX/WGLのような特定プラットフォームに依存した拡張ではないし、GLUT/GLFWのようなそれらの上にあるライブラリでもない&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2019/08/glslgpuros.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyg4hrRr52XtjPA83eDslOpPL4K9qyyeUhyphenhyphenBCGg1jH-GNXlWCYyjkK2L0bg7b41z2KeoQgxxkCy4u_bOgLx1cFtOUGVRj1n7oYqkMZ6_tUknCVRiQ5X-mluotrDwp9YyKPkIxUIKz7ZWw/s72-c/color_extract_result.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-1230766212409256965</guid><pubDate>Fri, 15 Feb 2019 16:48:00 +0000</pubDate><atom:updated>2019-02-16T01:50:47.945+09:00</atom:updated><title>遅ればせながら自作キーボードデビューしました</title><description>最近自作キーボードが熱いですね！技術書典でキーボード島の熱気を横目に見ながら、面白そうなことやってるなぁと、つい最近まで傍観に徹していました。&lt;br /&gt;
&lt;br /&gt;
というのも、自分は10年以上Thinkpadのキーボードを使い続けていているせいでTrackpointがないと生きていけないと思っていましたし、何よりJIS配列が手に染み付いているので英字配列のキーボードにはどうにも抵抗があってなかなか手が出せずに居ました。&lt;br /&gt;
&lt;br /&gt;
そんな中、先日キーボード沼に一足先に浸かっていた&amp;nbsp;&lt;a href=&quot;https://twitter.com/hecomi/media&quot; target=&quot;_blank&quot;&gt;@hecomi&lt;/a&gt;&amp;nbsp;さんから自作キーボードについて熱く語られた上、断る理由を全て論破されてしまったので、ここはひとつデビューしてみることにしました。&lt;br /&gt;
&lt;br /&gt;
※&lt;a href=&quot;https://tech.buty4649.net/entry/2018/03/27/124755&quot;&gt;Trackpointは後付可能&lt;/a&gt;だし、基板を起こせばトラックボールやタッチパットだってつけられる！&lt;br /&gt;
※キーマップはQMKで自由自在にいじれるし、基板を起こせばキー配置だって自由自在、キートップだって既成品の108キートップにバリエーションがないなら作ってしまえば良いじゃない！&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
で、先日ついに初めての自作キーボードを完成させました！&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU4AWfMgDyAyzWAXos0Eo233Bcvz9SreL0XO8WSLiXw9GSIxdf-lO83SzKNbAsooXr8bMV7T-0d9wWvxkFK-UC3SXYYewtg5HUhSBYhpFDPDllvxsRf0g99vQRRXkMKQ2jJn-1HRnZaN4/s1600/DSC03871.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU4AWfMgDyAyzWAXos0Eo233Bcvz9SreL0XO8WSLiXw9GSIxdf-lO83SzKNbAsooXr8bMV7T-0d9wWvxkFK-UC3SXYYewtg5HUhSBYhpFDPDllvxsRf0g99vQRRXkMKQ2jJn-1HRnZaN4/s400/DSC03871.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
初めての自作キーボードに選んだのは、&lt;a href=&quot;https://twitter.com/omkbd&quot; target=&quot;_blank&quot;&gt;@omkbd &lt;/a&gt;さんの、&lt;a href=&quot;https://booth.pm/ja/items/1011978&quot; target=&quot;_blank&quot;&gt;ErgoDash(親指あり)&lt;/a&gt;です！　&lt;br /&gt;
&lt;br /&gt;
もともと左右分割キーボードに興味があり、親指シフトなどの親指に仕事を割り振るようなキーボードも触ってみたいと思っていたのでセパレート型のキーボードで良いのがないかを探していました。また、Ortholinear配列は親指周りが窮屈そうな見た目だったので、親指部が独立しているColumn Staggered配列なキーボードに狙いを絞りました。&lt;br /&gt;
&lt;br /&gt;
探し始めた当初は慣れ親しんだThinkpadのパンタグラフ式キーボードに近いLow Profileのスイッチが使えるキーボードを物色していたのですが、&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://qiita.com/natten/items/95a57ee77e1e66ba88e6&quot; target=&quot;_blank&quot;&gt;Iris Keyboard (v2.5 Low Profile対応)&lt;/a&gt; ... 在庫切れ ※&lt;a href=&quot;https://trello.com/c/nl39IjOA/10-iris-30-pcb&quot;&gt;keeb.ioのTrello&lt;/a&gt;&amp;nbsp;によるともうすぐ3.0が出るらしい&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://booth.pm/ja/items/1175324&quot; target=&quot;_blank&quot;&gt;Lily58 Pro&lt;/a&gt; ... 在庫切れ ※春節の影響で基板の発送が遅れているとか…&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/foostan/crkbd&quot; target=&quot;_blank&quot;&gt;Corne Chocolate&lt;/a&gt; ... 2019年2月14日発売&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
と、Low Profileのセパレートキーボードは手に入るものがありませんでした。&lt;br /&gt;
また、Corne Chocolateはキー配置が同じCorne Cherryを&lt;a href=&quot;https://yushakobo.jp/&quot; target=&quot;_blank&quot;&gt;遊舎工房さん&lt;/a&gt;の店頭で試し打ちしたところ、存在しない数字キー行の文字をタイプしようとして指が空を切ることに衝撃を受け(特に&#39;-&#39;キー)、いきなり40%キーボードはハードルが高すぎるのではないかと考えなおしてしまいました。&lt;br /&gt;
&lt;br /&gt;
また、&lt;a href=&quot;https://yushakobo.jp/shop/pg1350/&quot; target=&quot;_blank&quot;&gt;Kailhロープロファイルスイッチ&lt;/a&gt;は全高こそ低いのですがストロークは3.0mmと通常スイッチと比較して0.5mmしか変わっておらず、また動作点は1.5mmとなっており&lt;a href=&quot;https://yushakobo.jp/shop/kailh-speed/&quot; target=&quot;_blank&quot;&gt;Kailh Speedスイッチ&lt;/a&gt;のほうが動作点は短くなっています。&lt;br /&gt;
&lt;br /&gt;
実際に&lt;a href=&quot;https://yushakobo.jp/&quot; target=&quot;_blank&quot;&gt;遊舎工房さん&lt;/a&gt;の店舗で触ってみた感じでも、そこまでロープロファイルスイッチにこだわらなくても良いかな？と思ったので、結局その場で在庫のあった&lt;a href=&quot;https://booth.pm/ja/items/1011978&quot; target=&quot;_blank&quot;&gt;ErgoDash&lt;/a&gt;を購入しました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
組み立て&lt;/h3&gt;
&lt;br /&gt;
組み立てにあたって購入した部品のリストは以下のような感じになります。ErgoDashのキットにはPro Microは同梱されているのですが、Type Cのコネクタが良かったので最近出た&lt;a href=&quot;https://keeb.io/products/elite-c-usb-c-pro-micro-replacement-arduino-compatible-atmega32u4&quot; target=&quot;_blank&quot;&gt;Pro Micro互換のElite-C&lt;/a&gt;を店舗で同時に購入し、それを使って組み立てを行いました。&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;75&quot;&gt;&lt;/col&gt;&lt;col width=&quot;209&quot;&gt;&lt;/col&gt;&lt;col width=&quot;76&quot;&gt;&lt;/col&gt;&lt;col width=&quot;402&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;購入場所&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;購入場所&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;品名&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;品名&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;値段&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;値段&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;備考&amp;quot;}&quot; style=&quot;background-color: #c9daf8; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;備考&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;遊舎工房&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;遊舎工房&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ErgoDash 親指あり&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ErgoDash 親指あり&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;14,040円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;14,040円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;初めての自作キーボード&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;初めての自作キーボード&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;遊舎工房&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;遊舎工房&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Kailh Speed Copperスイッチ 70個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Kailh Speed Copperスイッチ 70個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3,010円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;3,010円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;パンタグラフっぽい打ち心地を目指してこれにしてみました&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;パンタグラフっぽい打ち心地を目指してこれにしてみました&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;遊舎工房&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;遊舎工房&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Elite-C 2個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Elite-C 2個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5,184円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;5,184円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ちょっとお高いですが、USB Type-Cのためです…&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ちょっとお高いですが、USB Type-Cのためです…&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;遊舎工房&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;遊舎工房&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;BigBang キーキャップ&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;BigBang キーキャップ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7,020円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;7,020円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;見た目が気に入っているのでこれにしました&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;見た目が気に入っているのでこれにしました&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;千石電商&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;千石電商&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3mm LED 電球色 80個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;3mm LED 電球色 80個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3,200円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;3,200円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;キーキャップの色味に合わせるならこの色かなぁと&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;キーキャップの色味に合わせるならこの色かなぁと&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;千石電商&amp;quot;}&quot; style=&quot;background-color: white; border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;千石電商&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;200Ω チップ抵抗(3216) 100個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;200Ω チップ抵抗(3216) 100個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;400円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;400円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ビルドガイドでは470Ωですが、明るくしたかったので…&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ビルドガイドでは470Ωですが、明るくしたかったので…&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;千石電商&amp;quot;}&quot; style=&quot;background-color: white; border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;千石電商&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1kΩ チップ抵抗(3216) 10個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;1kΩ チップ抵抗(3216) 10個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;50円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;50円&lt;/td&gt;&lt;td style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;千石電商&amp;quot;}&quot; style=&quot;background-color: white; border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;千石電商&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;TRRSプラグ 2個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;TRRSプラグ 2個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;600円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;600円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;見た目で選びました&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;見た目で選びました&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;秋月電子&amp;quot;}&quot; style=&quot;border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;秋月電子&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Nch チップMOSFET 10個&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Nch チップMOSFET 10個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;240円&amp;quot;}&quot; style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;240円&lt;/td&gt;&lt;td style=&quot;border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;秋月電子&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;秋月電子&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;WS2812B 30個&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;WS2812B 30個&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1,080円&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;1,080円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;※注&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;※注&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td colspan=&quot;2&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;合計&amp;quot;}&quot; rowspan=&quot;1&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-weight: bold; overflow: hidden; padding: 2px 3px; text-align: center; vertical-align: bottom;&quot;&gt;合計&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;34,824円&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; text-align: right; vertical-align: bottom;&quot;&gt;34,824円&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Elite-Cがちょっと高かったですね… それを除けば30,000円に収まります&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Elite-Cがちょっと高かったですね… それを除けば30,000円に収まります　&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: &amp;quot;arial&amp;quot;; font-size: 13px; white-space: pre-wrap;&quot;&gt;※似た名前のWS2812Sという製品を千石で取り扱っていますが、互換性がないので注意してください！！&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
バックライト用LEDの抵抗は&lt;a href=&quot;https://github.com/omkbd/ErgoDash/blob/master/Doc/ergodash_jp.md&quot;&gt;公式のパーツ表&lt;/a&gt;では470Ωとなっていますが、これだと購入したLEDには4mAしか電流が流れず暗い気がしたので、抵抗を200Ωにして流れる電流を10mAまで増やしました。&lt;br /&gt;
※消費電力的には全てのLEDを点灯した状態で両手で1A程度なのでまぁ良いかという程度なんですが、バックライトLEDのドライブ用FETが非常に小型なのでちょっと心配です。常時運用するのであれば少しバックライトLEDの輝度を下げた状態にしておいたほうがよいかもしれません。&lt;br /&gt;
&lt;br /&gt;
組み立てにあたっては、まずElite-C取り付け時にType-Cコネクタが干渉する部分の基板を削ります。組み立てた時の厚みが増えても大丈夫な場合はスペーサーを延長しても良いですし、Elite-Cを本来付ける位置と逆側に表向きに取り付けて、アクリル板側を削ることもできると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UztLGVHtv4ZnL2ZvSPK9QUx9bTn45rSvT40shhM4WrEBx7KFcWJIsMVTJ2rMfJH1OnMKMIK5q2h1id75Ib6yX-fjHnIQBasA87K1A_v7AmnJh6V0HkR64utYgyO38ro-PAzhWQm06-I/s1600/DSC03858.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UztLGVHtv4ZnL2ZvSPK9QUx9bTn45rSvT40shhM4WrEBx7KFcWJIsMVTJ2rMfJH1OnMKMIK5q2h1id75Ib6yX-fjHnIQBasA87K1A_v7AmnJh6V0HkR64utYgyO38ro-PAzhWQm06-I/s400/DSC03858.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
PCBを削った場合には、この部分に右手のRGB LEDのシリアルが通っていますので、そこの部分の配線もなくなってしまいます。ただ、左手マスターで組む場合には右手のRGB LEDはTRRSジャックから来たシリアルで光るので、左手マスターで組む場合には特に何もする必要はないと思います。右手マスターで組む時だけ、以下のようにD3ピンをジャンパで繋ぐ必要があります。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio71qp97xPdE6F6FO1OFRQYUkdHqO4CDtyurhVPJ9eLCVWt7EtbTrrex23iDnZy4ty7bbAeGlLqdmmsxjeGoFoDWdvs9dUQZMLoDWcZA3Xk-A1_hZ8gZekqYsfRdM20R0EXiA1IbG5iBc/s1600/DSC03867.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio71qp97xPdE6F6FO1OFRQYUkdHqO4CDtyurhVPJ9eLCVWt7EtbTrrex23iDnZy4ty7bbAeGlLqdmmsxjeGoFoDWdvs9dUQZMLoDWcZA3Xk-A1_hZ8gZekqYsfRdM20R0EXiA1IbG5iBc/s400/DSC03867.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
また、Elite-Cにもともと付いているリセットスイッチは組み立てた時に裏側に取り付けるキースイッチと干渉してしまうので、予め剥がしておきます。剥がしたスイッチを再利用する必要はないと思いますので、パターンを剥がさないように注意しながら、鋭いニッパーでスイッチを破壊して、最後にはんだごてでランドを外せば簡単に剥がすことができます。&lt;br /&gt;
&lt;br /&gt;
　&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTqww5mAbOvoqI6-fOtkw0Y-8NwuSCnwNbxyAmPE-CMuIH6oMf2GzaDqTswBndlHArDo1pLBk9jV7rSHSJF7xdvzqmgV51oGdh3R3ow2lccJkMFL7V5ISKxmtT4FSm6Axsp4ehdvrVarA/s1600/DSC03859.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTqww5mAbOvoqI6-fOtkw0Y-8NwuSCnwNbxyAmPE-CMuIH6oMf2GzaDqTswBndlHArDo1pLBk9jV7rSHSJF7xdvzqmgV51oGdh3R3ow2lccJkMFL7V5ISKxmtT4FSm6Axsp4ehdvrVarA/s400/DSC03859.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
その他の点については、&lt;a href=&quot;https://github.com/omkbd/ErgoDash/blob/master/Doc/build.md&quot; target=&quot;_blank&quot;&gt;公式のビルドガイド&lt;/a&gt;に沿って組み立てればOKです！&lt;br /&gt;
&lt;br /&gt;
組み立てが終わったらqmkのファームウェアを書き込みます。&lt;br /&gt;
Elite-Cへの書き込みの際には、`rules.mk`のBOOTLOADERのところを&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;BOOTLOADER = atmel-dfu
&lt;/pre&gt;
&lt;br /&gt;
に変更して、基板をUSBでPCに接続した状態で、基板に付いているリセットボタンを押したら&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;make ergodash/rev2:default:dfu
&lt;/pre&gt;
&lt;br /&gt;
で書込みできます。&lt;br /&gt;
&lt;br /&gt;
※個人的にハマったこととしては、せっかくLEDを頑張ってつけたのでバックライトLEDのほうも明るさを自動で変更したりしたかったのですが、残念ながら`BACKLIGHT_BREATHING`はマスター側のバックライトの明るさしか変更することができないようです…　&lt;br /&gt;
※仕方ないので、今はRGBライトの方のモードをBREATHINGにして我慢しています&lt;br /&gt;
&lt;br /&gt;
少しだけ残念だったのは、保護紙を剥がした際に両手ともここの部分のアクリルにヒビが入っていたところでしょうか…&lt;br /&gt;
※どの段階で入ったものなのかは分かりません…&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEionG50O7HbW-FJpMWd2WZoo7nWny418OU2SpmZScuT6nJGuGDVD_qX8oFECUKZUpvYa5wWSvmCDEF4DsN9fL60ne5fX3WW6eahoN4BVQzacymNFG6XB7fHQaZxYHMtet1BIAAyVCQiWOo/s1600/DSC03870.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEionG50O7HbW-FJpMWd2WZoo7nWny418OU2SpmZScuT6nJGuGDVD_qX8oFECUKZUpvYa5wWSvmCDEF4DsN9fL60ne5fX3WW6eahoN4BVQzacymNFG6XB7fHQaZxYHMtet1BIAAyVCQiWOo/s400/DSC03870.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
まぁ力がかかる部分ではないのでアクリサンデーで接着した上で組み立て、もし見た目が気になるようであればレーザーカッターで切り直すことにしました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
キーマップの設定&lt;/h3&gt;
&lt;br /&gt;
キーマップは日本語JIS配列に合わせて、以下のように作成しました。&lt;br /&gt;
※&lt;a href=&quot;https://skyhigh-works.hatenablog.com/entry/2018/11/14/033242&quot;&gt;keymap_jp.hをインクルードして&lt;/a&gt;わかりやすい識別子で日本語キーを定義しています&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  /* Qwerty
   * ,--------------------------------------------------------------------------------------------------------------------------------------------------.
   * | ZHTG(GUI) |   1  |   2  |   3   |   4  |   5       |   ^   |                      |   \   |   6       |   7  |   8   |   9  |   0  |  -          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Tab       |   Q  |   W  |   E   |   R  |   T       |   [   |                      |   ]   |   Y       |   U  |   I   |   O  |   P  |  @          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Esc(Ctrl) |   A  |   S  |   D   |   F  |   G       | PrtSc |                      |       |   H       |   J  |   K   |   L  |   ;  |  :          |
   * |-----------+------+------+-------+------+-----------+-------+----------------------+-------+-----------+------+-------+------+------+-------------|
   * | Shift     |   Z  |   X  |   C   |   V  |   B       | Raise |                      | Lower |   N       |   M  |   ,   |   .  |   /  |  \(Shift)   |
   * |-----------+------+------+-------+------+-----------+-------+-------+------+-------+-------+-----------+------+-------+------+------+-------------|
   * |           |      |      | LOWER |||||||| Bksp(Alt) | Space |  LClk ||||||||  RClk | Enter | Del(Ctrl) |||||||| RAISE |      |      |             |
   * ,-------------------------------------------------------------------------------------------------------------------------------------------------.
   */
  [_QWERTY] = LAYOUT( \
    GUI_T(JP_ZHTG) , KC_1   , KC_2   , KC_3   , KC_4   , KC_5           , JP_CIRC,                         JP_YEN , KC_6           , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS        , \
    KC_TAB         , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T           , JP_LBRC,                         JP_RBRC, KC_Y           , KC_U   , KC_I   , KC_O   , KC_P   , JP_AT          , \
    LCTL_T(KC_ESC) , KC_A   , KC_S   , KC_D   , KC_F   , KC_G           , KC_PSCR,                         XXXXXXX, KC_H           , KC_J   , KC_K   , KC_L   , KC_SCLN, JP_COLN        , \
    KC_LSFT        , KC_Z   , KC_X   , KC_C   , KC_V   , KC_B           , RAISE  ,                         LOWER  , KC_N           , KC_M   , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(JP_BSLS), \
    XXXXXXX        , XXXXXXX, XXXXXXX, LOWER  ,          LALT_T(KC_BSPC), KC_SPC , KC_BTN1,       KC_BTN2, KC_ENT , RCTL_T(KC_DEL) ,          RAISE  , XXXXXXX, XXXXXXX, XXXXXXX          \
  ),  
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
自分がハマった注意点としては、MT_マクロ(キーの長押しと短押しでキーアサインを変える設定)は、Modifierキー(Ctrl, Shift, Alt, GUI)にしか使えないというところでしょうか…&lt;br /&gt;
特にエラーは出ずにビルドが通ってしまうので、勘違いしたまま`俺が考えたさいきょうのキーマップ`を作成してしまうと、後で動かないことに気づいて考えなおすことになります。※なりました&lt;br /&gt;
&lt;br /&gt;
なるべく親指に仕事を割り振りつつ、MT機能を使ってなるべく多くのキーをJIS配列から崩さずにデフォルトレイヤーに入れたつもりです。他のレイヤーについてはマウスキーを入れたぐらいで、ほとんど変えておらず、あまりLower/Raiseキーは使いこなせていません…&lt;br /&gt;
&lt;br /&gt;
正直、組み立てにかけた時間よりもキーマップをいじくり回している時間のほうが長かったかもしれないです。まだ自分の中でしっくりきてない部分もあるので、試行錯誤中ですね… これは&lt;b&gt;沼&lt;/b&gt;の予感がします…&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
EndGameに向けて&lt;/h3&gt;
&lt;br /&gt;
今使っているのはMDAプロファイルのBigBangですけど、やっぱりもう少し高さが低いキーキャップが欲しいと思っています。&lt;a href=&quot;https://www.google.com/amp/s/amp.reddit.com/r/MechanicalKeyboards/comments/92ygwh/lowest_profile_cherry_keycaps/&quot;&gt;いくつかMDAより薄いプロファイルのものもあるようなので&lt;/a&gt;、いくつか買って試してみますかね…(&lt;b&gt;沼&lt;/b&gt;)&lt;br /&gt;
※もしくはやっぱりLow Profileで組んで、射出成形で好みのキーキャップを作るとかでしょうか…&lt;br /&gt;
&lt;br /&gt;
Thinkpadのキーボードと併用しているとどうにも、キーのStaggerd方向が違うので指が混乱しがちで、キーの間をタイプしてしまうことが結構あることがわかってきました…&lt;br /&gt;
ただし、親指キーは実際に使ってみて非常に便利なので、もしかするとRow Staggeredな親指キーボードが次のEndGame候補になるかもしれないですね…(&lt;b&gt;沼&lt;/b&gt;)&lt;br /&gt;
&lt;br /&gt;
後はやっぱりThinkpadトラックポイント愛用者としてはキーボードから指を離さずにマウス操作ができるようになりたいです… 今はマウスキーを使ってHJKLでマウスカーソルを動かしているのですが、どうにもしっくりこないので、ダメそうだったら小さいトラックボールかタッチパッドを付けたいですね… ただ良いデバイスが見つかっていないので、継続的に探していく必要がありそうです(&lt;b&gt;沼&lt;/b&gt;)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
この記事はErgoDash (親指あり; Kailh Speed Copper)で書かれました。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2019/02/blog-post.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU4AWfMgDyAyzWAXos0Eo233Bcvz9SreL0XO8WSLiXw9GSIxdf-lO83SzKNbAsooXr8bMV7T-0d9wWvxkFK-UC3SXYYewtg5HUhSBYhpFDPDllvxsRf0g99vQRRXkMKQ2jJn-1HRnZaN4/s72-c/DSC03871.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-8023730417268946702</guid><pubDate>Sat, 29 Dec 2018 06:37:00 +0000</pubDate><atom:updated>2018-12-30T22:09:36.406+09:00</atom:updated><title>ドローンにJetson TX2を載せて自律制御する (ハードウェア準備編)</title><description>&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S.&lt;/a&gt;では、現在次期大会に向けてドローンの機体制作を行っています。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDCvjvq35AHP1QqGVjIT4VtbkaX-D5RMVoJXRBOvcbPVKVPvSMf9zifd6rhiIKBfFmFJtMLE_maSySS_jxGUOsEai7dflhw7ztB88J30o54NJx6AeJycMYcLOn1Wrvv5rh2E3U5EA2L5U/s1600/IMG_3392.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDCvjvq35AHP1QqGVjIT4VtbkaX-D5RMVoJXRBOvcbPVKVPvSMf9zifd6rhiIKBfFmFJtMLE_maSySS_jxGUOsEai7dflhw7ztB88J30o54NJx6AeJycMYcLOn1Wrvv5rh2E3U5EA2L5U/s400/IMG_3392.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
※残念ながらドローンの開発とUnityは特に関係ありません&lt;br /&gt;
&lt;br /&gt;
MBZIRC 2017に参加した機体ではコンパニオンコンピュータに&lt;a href=&quot;https://www.hardkernel.com/shop/odroid-xu4/&quot; target=&quot;_blank&quot;&gt;HardkernelのOdroid XU4&lt;/a&gt;を使用していたのですが、計算資源に余裕がなく、あまり複雑な認識処理を行うことができなかったので、MBZIRC 2020に向けて制作している機体では&lt;a href=&quot;https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems-dev-kits-modules/&quot; target=&quot;_blank&quot;&gt;NVIDIAのJetson TX2&lt;/a&gt;を使用することにしました。&lt;br /&gt;
&lt;br /&gt;
※最近、NVIDIAからはJetson TX2iやAGX Xavierなどの新しいボードが出ていますが、(キャンペーンで開発キットが定価の半額で購入できる)Jetson TX2もコスパという意味では負けていません。&lt;br /&gt;
&lt;br /&gt;
Jetson TX2をドローンに搭載しようと思った際に問題になるのが、どのキャリアボードを使用するかだと思います。AGX Xavierなどは純正のキャリアボード十分小さいのでそのまま乗せれば良いのですが、Jetson TX2の純正キャリアボードは拡張性が高い代わりに非常に大きく(Mini-ITXサイズ)、そのままでは到底ドローンに搭載することはできません。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF_P8U0omuBNIjcRmZuLxzz6sFj6f1AZ0cpOjZ0tn7nh6IyxozjjDZjxPLuLZYpWQNOB570Ap-5Gu9d_T6GjCXhjP-zk8PopFOGpGoKjUpKyfD4fS9o5N1EMJQCzqhn0Foe2DVI3o-dCM/s1600/DSC03710.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF_P8U0omuBNIjcRmZuLxzz6sFj6f1AZ0cpOjZ0tn7nh6IyxozjjDZjxPLuLZYpWQNOB570Ap-5Gu9d_T6GjCXhjP-zk8PopFOGpGoKjUpKyfD4fS9o5N1EMJQCzqhn0Foe2DVI3o-dCM/s400/DSC03710.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
そこで、各社から発売されているキャリアボードにJetson TX2を載せ替える必要があるのですが、&lt;a href=&quot;https://elinux.org/Jetson_TX2#Ecosystem_Products&quot; target=&quot;_blank&quot;&gt;様々な会社が多種多様なキャリアボードを出しており、&lt;/a&gt;用途に合わせて選定するのがけっこう大変です…&lt;br /&gt;
&lt;br /&gt;
Project C.G.S.では、今回の用途に合わせて、&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ドローンに載せられるサイズである&lt;/li&gt;
&lt;li&gt;MIPI CSIインターフェースでカメラを接続することができる&lt;/li&gt;
&lt;li&gt;mSATAかm2でSSDを接続することができる&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
という3つの条件でボードを選定しました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Jetson TX2は組み込みビジョン用途を非常に強く意識しているのか、なんとMIPI CSIを6本まで入れることができるようになっています。USB経由でカメラを接続するよりも、MIPI CSIの内蔵ハードウェアブロックを使ったほうがオーバーヘッドが少ないですし、JetsonにはもともとUSBポートが少ないので、カメラを多数積むのであればMIPI CSIインターフェースは必須です。また、自律制御アルゴリズムの開発時には実際に飛ばしながらカメラ画像をロギングする必要があるのですが、&lt;a href=&quot;https://devtalk.nvidia.com/default/topic/1017109/jetson-tx2/tx2-sd-card-slot/&quot; target=&quot;_blank&quot;&gt;Jetson TX2のmicroSDインターフェースはUHS-Iにしか対応しておらず&lt;/a&gt;、カメラ画を記録するのは書き込み速度的に非常に難しいです。なので、ログを書き込むためのSSDを接続する必要があります。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
※ただし、&lt;a href=&quot;https://devtalk.nvidia.com/default/topic/1023523/jetson-tx2/tx2-sata-speed/&quot; target=&quot;_blank&quot;&gt;Jetson TX2はSATA2にしか対応していない&lt;/a&gt;ので、SSDを接続した場合でも書き込み速度には上限があります。もし、更に高速にログを書き込む必要であれば、&lt;a href=&quot;https://devtalk.nvidia.com/default/topic/1011889/can-jetson-tx2-connect-a-storage-device-such-as-an-nvme-ssd-through-pcie-interface-/&quot; target=&quot;_blank&quot;&gt;PCIeにNVMeのSSDを接続する&lt;/a&gt;必要があるかもしれません。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
前提を踏まえてボードを列挙すると、現時点では&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;134&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;147&quot;&gt;&lt;/col&gt;&lt;col width=&quot;155&quot;&gt;&lt;/col&gt;&lt;col width=&quot;150&quot;&gt;&lt;/col&gt;&lt;col width=&quot;140&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;メーカー&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;メーカー&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;型番&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;型番&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ボードのサイズ[mm]&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;ボードのサイズ[mm]&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;MIPI CSI&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;MIPI CSI&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;mSATA/PCIe&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;mSATA/PCIe&lt;/b&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;値段&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;b&gt;値段&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Connect Tech&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Connect Tech&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Spacely&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://connecttech.com/product/spacely-carrier-nvidia-jetson-tx2-jetson-tx1/&quot; target=&quot;_blank&quot;&gt;Spacely Carrier&lt;/a&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;125x95&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;125x95&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;x6(IPEX 30pin)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;x6(IPEX 30pin)&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;mSATA x1、miniPCIe x1&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;mSATA x1、miniPCIe x1&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;¥156,750(日本代理店)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;¥156,750(日本代理店)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Colorado Engineering&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Colorado Engineering&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;X-Carrier&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;https://coloradoengineering.com/standard-products/x-carrier/&quot; target=&quot;_blank&quot;&gt;X-Carrier&lt;/a&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;87x71&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;87x71&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;x6(純正カメラコネクタ*1)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;x6(純正カメラコネクタ*1)&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;mSATA x1、x4 PCIe x1&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;mSATA x1、x4 PCIe x1&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;$399&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;$399&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Aetina&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Aetina&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ACE-N310-A&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;https://www.aetina.com/products-detail.php?i=252&quot; target=&quot;_blank&quot;&gt;ACE-N310-A&lt;/a&gt;&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;87x70&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;87x70&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;x6(純正カメラコネクタ*2)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;x6(純正カメラコネクタ*2)&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;mSATA x1&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;mSATA x1&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;$240&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;$240&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
*1 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されています。&lt;/div&gt;
&lt;div&gt;
*2 Jetson純正の開発ボードと同じカメラ用のコネクタが搭載されていますが、サイズが小さいボードしか接続できず、固定用の穴位置も異なります。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
あたりが候補に登ります。Spacelyは流石に高すぎて(Jetson TX2開発キットの定価の2倍)腹が立ったので候補から外しました。次にX-CarrierとACE-N310-Aで検討していたのですが、X-Carrierが在庫切れで納期が遅かったので、結局Aetina ACE-N310-Aを購入しました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Aetina ACE-N310-Aを購入したのは良いのですが、すでに購入していたLeopard ImagingのMIPI CSIカメラボード(&lt;a href=&quot;https://leopardimaging.com/product/li-jtx1-mipi-adpt-6cam/&quot; target=&quot;_blank&quot;&gt;LI-JTX1-MIPI-ADPT-6CAM&lt;/a&gt;)を取り付けようとしたところ、実は&lt;b&gt;ACE-N310-Aのカメラコネクタに接続できるボードのサイズに制約がある&lt;/b&gt;ことがわかりました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC8fBO1V9X5H5LEMA5GCU6QJPJC_prsNy0YHI3nFEXyJEUMX-ZNGW0r7WVsrnC_Z-Iz6aQNSYo2gOtQTqtDjtEofu88tOEbxdQ4PRcC9Hijq2ByWcza6PtbqIh0er1JbmTTHMjpsS4X-k/s1600/DSC03719.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC8fBO1V9X5H5LEMA5GCU6QJPJC_prsNy0YHI3nFEXyJEUMX-ZNGW0r7WVsrnC_Z-Iz6aQNSYo2gOtQTqtDjtEofu88tOEbxdQ4PRcC9Hijq2ByWcza6PtbqIh0er1JbmTTHMjpsS4X-k/s400/DSC03719.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
これ、カメラボードを接続しようとするとヒートシンクと基板が干渉してしまって取り付けられません… そもそも穴位置も合わないですし、このコネクタは基本的にAetinaがオプション別売りで出している&quot;6 x MIPI CSI-II Camera Board&quot;を取り付ける前提で設計されているようです。&lt;/div&gt;
&lt;div&gt;
※ただしこのCamera BoardのコネクタはFPCなので、これに手持ちのLeopard Imagingのカメラ(IPEX 30pin)を接続することはできません。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
購入前にAetinaのサポートにJetson TX2開発キットのカメラコネクタと互換があることは確認していたのですが、こんな罠があるとは…&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
そこで、なんとかカメラコネクタにボードを取り付けるべく、下駄基板を自作しました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEtdxgrPl_kcnbViEl0rT8b_orC0YE4UnQA5UkNRcVU-Yjl1OII9wdRpaH52VfCQA3vS2oW53XfCb1U2TSimUPgfXxEMRc8qZ7Ihuq4O-PRBuwFc_cNhYgIribdCDyz4kxC_zslESnSOM/s1600/DSC03721.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEtdxgrPl_kcnbViEl0rT8b_orC0YE4UnQA5UkNRcVU-Yjl1OII9wdRpaH52VfCQA3vS2oW53XfCb1U2TSimUPgfXxEMRc8qZ7Ihuq4O-PRBuwFc_cNhYgIribdCDyz4kxC_zslESnSOM/s400/DSC03721.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
この基板を使うことで、Leopard Imagingのカメラボードをオフセットして取り付けることができ、無事に接続することができました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl3oR6bjREXK8pHNcEnB3wAJ5NxYEfWaIzzYx50upG3lSvHYQZIFy5zrp2McL2eFmNlP3sLyRwAJ3Au-oz8VJi6CWwo7aJKhlXxjWfIz4GpKLUSa6BPlY3KPECCL6arFRTQ0v8DA7CCEk/s1600/DSC03724.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl3oR6bjREXK8pHNcEnB3wAJ5NxYEfWaIzzYx50upG3lSvHYQZIFy5zrp2McL2eFmNlP3sLyRwAJ3Au-oz8VJi6CWwo7aJKhlXxjWfIz4GpKLUSa6BPlY3KPECCL6arFRTQ0v8DA7CCEk/s320/DSC03724.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
以上、ドローンにJetson TX2を載せて自動制御する (ハードウェア準備編)でした。&lt;/div&gt;
&lt;div&gt;
後日、Jetson TX2にROSをセットアップする、ソフトウェア準備編を公開予定です。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
備考1: rosbag書き込み速度の実測値&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
Jetson TX2を純正のキャリアボードに接続して、rosbagに画像を記録した実測値は以下のようになりました。テスト用にRealSense D435のcolor、infra1、infra2、depthのVGA画像4つをrosbagに保存し、rosbagに記録できたサイズを時間で割ったものです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;268&quot;&gt;&lt;/col&gt;&lt;col width=&quot;123&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ストレージ&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ストレージ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;インターフェース&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;インターフェース&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;書き込み速度&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;書き込み速度&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;microSD Samsung PRO Plus 64GB&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Meiryo; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;microSD Samsung PRO Plus 64GB&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;UHS-I&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Meiryo; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;UHS-I&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;18.1 MB/s&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;18.1 MB/s&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;SATA SSD TOSHIBA 256GB&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Meiryo; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;SATA SSD CSSD-S6T128NHG5Q 128GB&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;SATA2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: Meiryo; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;SATA2&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;36.9 MB/s&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;36.9 MB/s&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
※どちらの場合も全データを保存できておらず、ストレージ書き込み速度で頭打ちになっています。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
RGBのVGAで30FPSだと約27MB/sなので、rawで保存した場合microSDでは書き込みが間に合わないです。2カメラ以上保存する場合にはSSDでも間に合わないので、圧縮して保存する必要がありそうです。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
備考2: MIPI CSIカメラについて&lt;/h4&gt;
&lt;div&gt;
MIPI CSIは通信の規格を定めているだけで、コネクタについては規定がありません。そのため、各社が独自にいろんなコネクタのモジュールを作っており、互換性が全くありません。Jetson用のキャリアボードも当然各社が独自に様々なコネクタのボードを作っているので、一般的に他社の別のボードのカメラを流用することは難しいです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
流石にこれはまずいと思ったのか、比較的新しいキャリアボードはJetson純正の開発ボードが採用しているカメラコネクタをキャリアボードに搭載し、Jetson純正開発ボード向けのMIPIカメラを流用できるような設計になっています。また、AGX Xavierも同じコネクタを搭載しているので、このコネクタが搭載されているMIPIカメラを使用しておけば、TX2からXavierに乗り換えてもカメラを使い回すことができます。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2018/12/jetson-tx2.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDCvjvq35AHP1QqGVjIT4VtbkaX-D5RMVoJXRBOvcbPVKVPvSMf9zifd6rhiIKBfFmFJtMLE_maSySS_jxGUOsEai7dflhw7ztB88J30o54NJx6AeJycMYcLOn1Wrvv5rh2E3U5EA2L5U/s72-c/IMG_3392.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-4988775035285946684</guid><pubDate>Sat, 01 Sep 2018 01:54:00 +0000</pubDate><atom:updated>2018-09-01T10:54:49.028+09:00</atom:updated><title>Ali ExpressのBest Carbonにカーボン加工を外注してみた</title><description>&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S.&lt;/a&gt;では、現在次期大会に向けてドローンの機体制作を行っています。&lt;br /&gt;
&lt;br /&gt;
ベースには市販のフレームを使用しているのですが、限られたスペースになるべく多くのセンサを搭載するため、汎用品で対応できない部分は独自に設計した自作パーツを使用します。&lt;br /&gt;
&lt;br /&gt;
負荷がかからない部分は3Dプリンタなどで成型したパーツで十分なのですが、力がかかるところ、壊れると致命的な部分は、軽くて丈夫なカーボンでパーツを作るのが理想的です。&lt;br /&gt;
&lt;br /&gt;
前年までは、カーボンの切り出しはメイカースペースのCNCを使って自分たちの手で行っていたのですが、&lt;br /&gt;
&lt;br /&gt;
- カーボンの材料費が高い&lt;br /&gt;
- エンドミルがすぐ摩耗して切れなくなるので、エンドミルの費用も馬鹿にならない&lt;br /&gt;
- 切子が飛ばないように切削油に沈めて加工するので、加工に手間と時間がかかる&lt;br /&gt;
&lt;br /&gt;
という問題があったので、今回はカーボンの加工を外注することにしました。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPVVrLkBWO-S82tszHYTUkDaTYeEhFwHDTgnMLyN8CVPoe3-ahLpjbFfHAL107By0122sbeunOm6Wk7Ym-PRp-_X1EjHDc6CU_aBaeksFopUA5oVn8cFElBcQ4SFAL4oFXmsHavMyiGUA/s1600/DSC03247.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPVVrLkBWO-S82tszHYTUkDaTYeEhFwHDTgnMLyN8CVPoe3-ahLpjbFfHAL107By0122sbeunOm6Wk7Ym-PRp-_X1EjHDc6CU_aBaeksFopUA5oVn8cFElBcQ4SFAL4oFXmsHavMyiGUA/s320/DSC03247.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;作成したパーツ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;外注先は(国内よりは中国の会社のほうが安いイメージがあったので)、Ali ExpressのBest Carbonに&lt;a href=&quot;https://www.aliexpress.com/store/product/Carbon-Fiber-Plate-CNC-Cutting-service/401202_32826820227.html&quot; target=&quot;_blank&quot;&gt;Carbon Fiber Plate CNC Cutting Service&lt;/a&gt;をお願いすることにしました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW_s8rPMVnaoNQmnxYnksY4ZXK8twsDs1h0zfCA6Psr4szjJqg3X1u5vl_aPpIRGRyq2OXHyp_Peh_fFdYYtF8npxAfSPXuyrnS-cMpwGhrUv5Of3QsHsZwwG0VMHvqoyk8xOOfzxpzKs/s1600/best_carbon.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;779&quot; data-original-width=&quot;1215&quot; height=&quot;409&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW_s8rPMVnaoNQmnxYnksY4ZXK8twsDs1h0zfCA6Psr4szjJqg3X1u5vl_aPpIRGRyq2OXHyp_Peh_fFdYYtF8npxAfSPXuyrnS-cMpwGhrUv5Of3QsHsZwwG0VMHvqoyk8xOOfzxpzKs/s640/best_carbon.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
ページの冒頭にも書いてあるのですが、&lt;b&gt;注文方法がちょっと特殊&lt;/b&gt;になっています。&lt;br /&gt;
&lt;br /&gt;
注文するにはAli Expressで商品をカートに入れる前に、&lt;br /&gt;
&lt;br /&gt;
carbonfiber (AT) foxmail.com&lt;br /&gt;
&lt;br /&gt;
にメールします。&lt;br /&gt;
&lt;br /&gt;
本文には材料のカーボンの厚み、織り方、表面処理方法、発送方法を記入して、作りたいパーツの図面をdxfで添付します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;Hello BEST CARBON team,

I have looked at your &quot;Carbon Fiber Plate CNC Cutting service&quot; page on AliExpress.
I would like to order cutting 4 pieces of plate of attached DXF file,
using plain mat carbon plate of 2mm thickness.
I also would like to use 7 days arrival shipping method to Japan.

Could you give me an estimate of the total cost for this?

Best regards,
xxx
&lt;/pre&gt;
&lt;br /&gt;
すると、こんな感じで返信が返ってきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;Hi xxx ,

USD 12/pcs
4 pcs
EMS shiping - USD 20

Total USD 68

&lt;/pre&gt;
この時点で、Ali Expressのページに行くと、単価がUS $1.00 / pieceになっているので&lt;br /&gt;
指定された金額なるようにQuantityを入力して(この場合は68個)、Ali Expressから購入します。&lt;br /&gt;
※注文時に選択するShipping MethodはFree Shippingで大丈夫です&lt;br /&gt;
&lt;br /&gt;
購入が済んだらメールで連絡&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;Hello xxx,

OK, I would like to place an order with that price.
I have purchased on AliExpress page.

Thank you.
&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;
&lt;/pre&gt;
すれば、注文から1週間ぐらいで発送してくれます。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
EMSで発送された荷物はAli ExpressのMy OrdersからTrack Orderで追跡することができるのですが、更新が遅くてイマイチ使いにくいので、&lt;a href=&quot;https://www.post.japanpost.jp/int/ems/delivery/&quot; target=&quot;_blank&quot;&gt;日本郵便のページ&lt;/a&gt;にトラッキング番号を入力して調べたほうが確実です。&lt;br /&gt;
※中国側のトラッキング番号(EVBxxxxxxxxxCN)を入力してもちゃんと結果が出てきます。&lt;br /&gt;
&lt;br /&gt;
商品はこんな感じで梱包されて届きました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ3AIsEX5jo_gNMcPmC_onRwILgKtgmFEsBz4japQfkND9-FTLhq0MMYd9NehD4GP2jk5bzPt8CNdnKaMGj4dFduK6H-BaSOeOfZi4YkgY5UGFh0nj6n1xebkuKo_iezKTkj1BDGzwvg0/s1600/DSC03244.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ3AIsEX5jo_gNMcPmC_onRwILgKtgmFEsBz4japQfkND9-FTLhq0MMYd9NehD4GP2jk5bzPt8CNdnKaMGj4dFduK6H-BaSOeOfZi4YkgY5UGFh0nj6n1xebkuKo_iezKTkj1BDGzwvg0/s320/DSC03244.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
端面はちょっとバリが出ていますが、2mmの細溝も綺麗に切削できていますし、品質には満足です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yJ8eUs3MHThggrRbOzZcNXDMcdC6efkVwh7EFswFY-OwAVeEtDyCJubwe39DhVpu_Uc2wW0zX_A3CC8H0zk6g0sQkk0KEO-mFlykXG7Ysg_EPXOpkyt5w1MLqPHvzXqW_5pcC2ivnGA/s1600/DSC03248.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yJ8eUs3MHThggrRbOzZcNXDMcdC6efkVwh7EFswFY-OwAVeEtDyCJubwe39DhVpu_Uc2wW0zX_A3CC8H0zk6g0sQkk0KEO-mFlykXG7Ysg_EPXOpkyt5w1MLqPHvzXqW_5pcC2ivnGA/s320/DSC03248.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
注文から到着まで2週間かかるので、自分で加工するのと比較すると少し時間はかかりますが、このような形で簡単にカーボン加工を簡単に依頼することができるので、ぜひ利用してみてはいかがでしょうか。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2018/09/ali-expressbest-carbon.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPVVrLkBWO-S82tszHYTUkDaTYeEhFwHDTgnMLyN8CVPoe3-ahLpjbFfHAL107By0122sbeunOm6Wk7Ym-PRp-_X1EjHDc6CU_aBaeksFopUA5oVn8cFElBcQ4SFAL4oFXmsHavMyiGUA/s72-c/DSC03247.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-4087319633043930416</guid><pubDate>Mon, 06 Aug 2018 14:48:00 +0000</pubDate><atom:updated>2018-08-07T00:52:48.346+09:00</atom:updated><title>海外プロポ Taranis Q X7Sを日本で合法に使用する</title><description>ドローンを飛ばし始めたときからずっとプロポにはTurnigyの9XR PRO(これも海外プロポです)を使ってきたのですが、定期的に電源スイッチが固着したりして電源が入らなくなるのに悩まされていました。&lt;br /&gt;
&lt;br /&gt;
先日、また9XR PROの電源が入らなくなったので、良い機会だと思い、Taranis Q X7Sを購入しました！&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJa_oAw9kpkaxcPOI9xwJbXI2DAySDqOuYY6Y9mzL2f3FwP4xsFY9u_nC54dWXafUS4XHyhUys0hHA3xOO-muQc076ZdgjK0o0IKN7RCvtEEQ8DnGWzY2ztbYszkx7vJRMAatrO4vwnyk/s1600/DSC02728.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJa_oAw9kpkaxcPOI9xwJbXI2DAySDqOuYY6Y9mzL2f3FwP4xsFY9u_nC54dWXafUS4XHyhUys0hHA3xOO-muQc076ZdgjK0o0IKN7RCvtEEQ8DnGWzY2ztbYszkx7vJRMAatrO4vwnyk/s320/DSC02728.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
9XR PROの頃からファームウェアにはOpen TXを使っていてとても便利なので、それに対応したプロポの中で候補を探していました。といっても、&lt;a href=&quot;https://www.open-tx.org/radios.html&quot; target=&quot;_blank&quot;&gt;OpenTXが対応している&lt;/a&gt;新しいプロポはFrskyのTaranisかHorusしかなく、その中でお手頃価格で買えるものとなると結構数が絞られてきます。その中で、磁気式のジンバルが面白そうだったのでこの機種にしました。&lt;br /&gt;
※ジンバル単体でも購入できるので、X7などのプロポを購入してジンバルを交換しても良かったのですが、見た目が気に入ったのでX7Sにしました&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ところが、このプロポは技適を通っておらず、そのまま日本で使った場合には電波法違反になってしまいます。&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
※電波法違反のプロポを使用した場合、事故が発生したときにラジコン保険が下りない可能性があります&lt;br /&gt;
&lt;br /&gt;
そこで、Taranis Q X7Sを日本で合法で使用するために、以下の作業を行いました。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;アンテナの取り外し&lt;/li&gt;
&lt;li&gt;技適取得済みの外部送信モジュールを装着&lt;/li&gt;
&lt;li&gt;外部送信モジュールを使用するように設定&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
アンテナの取り外し&lt;/h3&gt;
&lt;br /&gt;
まず、バッテリと外部送信モジュール用の蓋を外したら、ネジを4つ外して裏蓋を開けます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZrdZwgrX3ECHNhQlLHxSjKhGqUeiZoy16MJkLzCwmGX9B-4NmKRiXZ5ro048Vcmk4zyaOldzIefEwVIfBFYy8CvN4yS4rDA8I8oSpa5P1kfiwdGGaLYzObdMSW6xCpsYbrRW1S77ZcOM/s1600/DSC02729.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZrdZwgrX3ECHNhQlLHxSjKhGqUeiZoy16MJkLzCwmGX9B-4NmKRiXZ5ro048Vcmk4zyaOldzIefEwVIfBFYy8CvN4yS4rDA8I8oSpa5P1kfiwdGGaLYzObdMSW6xCpsYbrRW1S77ZcOM/s320/DSC02729.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
※詳細な分解方法は&lt;a href=&quot;https://www.youtube.com/watch?time_continue=1&amp;amp;v=l__Agjf6pBQ&quot; target=&quot;_blank&quot;&gt;この動画&lt;/a&gt;などが参考になると思います&lt;br /&gt;
&lt;br /&gt;
裏蓋を開けたらアンテナの配線を外し、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3xka4CvxOOOPlCTRX6koeoCMkQBlyynA8y6ewuSwuM_jZXujcMTLoAoQSeWV4WKkLLw5E4eH4ArtOvRD8UFii-6bE1HAa1-yFoVebQ5kmd0It8-hl66Y3TjIh6hk3Myq1w6qHOIju21o/s1600/DSC02730_antenna.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3xka4CvxOOOPlCTRX6koeoCMkQBlyynA8y6ewuSwuM_jZXujcMTLoAoQSeWV4WKkLLw5E4eH4ArtOvRD8UFii-6bE1HAa1-yFoVebQ5kmd0It8-hl66Y3TjIh6hk3Myq1w6qHOIju21o/s320/DSC02730_antenna.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
アンテナを筐体から外します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IrJwo1PRw0pot30i0LkhqywPrL2lWm_7fsVBkq0QPHe4DBZa2Z6wun0koLBVmy_b_R_N3a8zjNVVjqnx2canZehYEaB8wxVTpJ40LFWZSAsfF64DbQN5ENJFRGBhSUv8_q2Anyb2b8E/s1600/DSC02731.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IrJwo1PRw0pot30i0LkhqywPrL2lWm_7fsVBkq0QPHe4DBZa2Z6wun0koLBVmy_b_R_N3a8zjNVVjqnx2canZehYEaB8wxVTpJ40LFWZSAsfF64DbQN5ENJFRGBhSUv8_q2Anyb2b8E/s320/DSC02731.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;設定からInternal RFを無効にすることもできる&lt;/b&gt;ので、アンテナを無理に外さなくても良いと思います。&lt;br /&gt;
※かなり固いので、もし外す場合は筐体を割らないように注意してください&lt;br /&gt;
&lt;br /&gt;
ラジオペンチを2本使って、筐体ごと挟んでアンテナの根本押し込むようにすると外れやすいかもしれません。&lt;br /&gt;
&lt;br /&gt;
ついでに、必要であればジンバルのフィーリングの調整も行います。Taranis Q X7Sはデフォルトではスロットルスティックを動かすとカチカチとクリック感があるので、それが不要な場合はこのネジを少し緩めます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivH1fRyfez0_WVbidgHIb9McMruQje2isNJb7DuDFq5BneXwl8sF7otjenMh7x6pgqrnw3zt-l6zRw68o7HBOIhYAUztI4sRTcUTXnCAe5_f6C14Ha8N6iILlbKqQNcaQe_AacoAElZu0/s1600/DSC02730_screw.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivH1fRyfez0_WVbidgHIb9McMruQje2isNJb7DuDFq5BneXwl8sF7otjenMh7x6pgqrnw3zt-l6zRw68o7HBOIhYAUztI4sRTcUTXnCAe5_f6C14Ha8N6iILlbKqQNcaQe_AacoAElZu0/s320/DSC02730_screw.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
隣のネジで摩擦も調整できるので、好みの硬さに合わせます。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
技適取得済みの外部送信モジュールを装着&lt;/h3&gt;
&lt;br /&gt;
配線を挟まないように裏蓋を戻したら、技適マークがついた送信機モジュールをはめ込みます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhitDNwFSjnqhr2DyTM3gREUOQtC3xtLCagRwQMmuYpC8m4ITKVm1xfyEsfk-AiwOHyqI29fu-6Va8y1jaFN8pXvmaZru234f7i-A4hm8ltzBIfzRuNxOtYOYI_ceubhybHuRwQc7QntzY/s1600/DSC02734.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhitDNwFSjnqhr2DyTM3gREUOQtC3xtLCagRwQMmuYpC8m4ITKVm1xfyEsfk-AiwOHyqI29fu-6Va8y1jaFN8pXvmaZru234f7i-A4hm8ltzBIfzRuNxOtYOYI_ceubhybHuRwQc7QntzY/s320/DSC02734.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
この外部送信モジュールは&lt;a href=&quot;http://www.worldrc.com/FrSky-D8T-2011-1-28.html&quot; target=&quot;_blank&quot;&gt;World RCから購入したFrsky D8T&lt;/a&gt;です。&lt;br /&gt;
&lt;br /&gt;
JR PROPOに対応したものであれば使えると思いますが、もうあまり取り扱っている店舗はないかもしれませんね...&lt;br /&gt;
合法で使用する上で一番難易度が高いのが、この外部通信モジュールの入手かもしれません…&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
外部送信モジュールを使用するように設定&lt;/h3&gt;
&lt;br /&gt;
次に、メインスイッチを&lt;b&gt;長押し&lt;/b&gt;して起動します。&lt;br /&gt;
&lt;br /&gt;
これ、短く押すと一瞬だけ電源が入って落ちるように見えるので、買った直後は何が起きているのかわからず困りました。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;長押しで起動、長押しでシャットダウン&lt;/li&gt;
&lt;li&gt;ヨーとロールのトリム内側にして短押しでファームウェア書き込みモードで起動&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
のようです。&lt;br /&gt;
&lt;br /&gt;
プロポが起動したら、オプションボタンを&lt;b&gt;短押し&lt;/b&gt;して、Page 2の設定から&lt;br /&gt;
&lt;center&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;External RF&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Internal RF&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;OFF&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;OFF&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Internal RF&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;External RF&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PPM&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;PPM&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
にします。使用する外部送信モジュールによって、PPM以外のモードを選択しても良いと思います。&lt;br /&gt;
※External RFを有効にした時点でモジュールへの電源供給が行われるようです&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh0J_vKqqw-XyC5p5TosgrbSpTvY2hzZ1W2SFfQuBnWYh2A40qb-Ew6gkLK-fMwtGJ2qNGxDQGOvZ-RmQXpBw465edgaTTgttzjBUU7c-gH0Z7AjAfml2lzsQKR-JVXoMgJW9RfcyRDeY/s1600/DSC02735.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh0J_vKqqw-XyC5p5TosgrbSpTvY2hzZ1W2SFfQuBnWYh2A40qb-Ew6gkLK-fMwtGJ2qNGxDQGOvZ-RmQXpBw465edgaTTgttzjBUU7c-gH0Z7AjAfml2lzsQKR-JVXoMgJW9RfcyRDeY/s320/DSC02735.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWtNIZfVVJoTbT-3bdm9-o2SQgOV_Sg69LxQMTLXLUySRKMNxw-qrLc-DeS_6oe2Ra5FQnXHpFMKCTbjpkOK8W1rjeZEnK-Nk6nWoOcY3BJ0WLPCA3-1dqXd6izXSLVwcNtyUue9mbWd4/s1600/DSC02737.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWtNIZfVVJoTbT-3bdm9-o2SQgOV_Sg69LxQMTLXLUySRKMNxw-qrLc-DeS_6oe2Ra5FQnXHpFMKCTbjpkOK8W1rjeZEnK-Nk6nWoOcY3BJ0WLPCA3-1dqXd6izXSLVwcNtyUue9mbWd4/s320/DSC02737.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
この設定はモデルごとにする必要があるので、新規にモデルを作った際には忘れずに変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
ここまでで、Taranis Q X7Sを合法で使用するために必要な作業は終わりです。&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
おまけ1 - ファームウェアの更新とmicro SDのセットアップ&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
とりあえずファームウェアは最新のものに更新しておきます。また、micro SDカードを用意して必要なデータを書き込むと、プロポがしゃべるようになるので、そちらの設定も行います。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ファームウェアの更新はOpenTX Companionから行うので、まずは自分のOSで動作するOpenTX Companionをインストールします。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ubuntuなら&lt;a href=&quot;https://launchpad.net/~opentx-test/+archive/ubuntu/rel/+packages&quot; target=&quot;_blank&quot;&gt;Launchpad&lt;/a&gt;からamd64のパッケージをダウンロードしてインストール して、&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;companion22&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
で起動します。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
※Write Firmwareの前に必ずRead Firmwareして、今のファームウェアのバックアップを取っておきましょう&lt;br /&gt;
&lt;br /&gt;
microSDカードに書き込んで、Taranis Q X7Sの下面についているスロットに入れればOKです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
おまけ2 - FPVシミュレータでTaranis Q X7Sを使用する&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Taranis Q X7Sの大きなメリットとして、USBでPCに接続するとジョイスティックとして使うことができるというものがあります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip1738BNa7g8ZiUpTxRjY_717RxPKUMfhu1QdYrUY8HlKvdG37OQcsYobMtJ-i9Gkx6NdQ44-Br-Ixr4j856PcGqdfbIFD9z1y62brI-srh6IHkOhrorkH8_2-TZjSgcjydR7Slh_filc/s1600/DSC02917.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip1738BNa7g8ZiUpTxRjY_717RxPKUMfhu1QdYrUY8HlKvdG37OQcsYobMtJ-i9Gkx6NdQ44-Br-Ixr4j856PcGqdfbIFD9z1y62brI-srh6IHkOhrorkH8_2-TZjSgcjydR7Slh_filc/s320/DSC02917.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
9XR PROではこの機能がなく、今までシミュレータでプロポを使うときにはTrainer信号を変換するUSBアダプタ経由でPCに接続していたのですが、Taranis Q X7Sではその煩わしさから開放されます！&lt;br /&gt;
&lt;br /&gt;
USBコントローラーでプレイできるクアドコプターのシミュレータの中で、安価で楽しめるものの筆頭に&lt;a href=&quot;https://fpv-freerider.itch.io/fpv-freerider&quot; target=&quot;_blank&quot;&gt;FPV Freerider&lt;/a&gt;があると思います。&lt;br /&gt;
FPV FreeriderでTaranis Q X7Sを使用する際には、プロポ側で設定を変更しないとController Calibrationがうまくいかないので注意が必要です。&lt;br /&gt;
&lt;br /&gt;
まず、プロポ側に適当なモデルを作ったらRFをOFFにして、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGhom1FulGku8o62t6lPQXcaQEOz08uWHByvhN411zHHYfnf8JxnGRQYI-5TUlFM5vRR0Z5BVdNb9470tjWxbTl8ycKeqKSMPlXkUcBD0Xb5Dw5ngbpbS8YJn8TuD_HBSzChNggeAxuc/s1600/DSC02745.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGhom1FulGku8o62t6lPQXcaQEOz08uWHByvhN411zHHYfnf8JxnGRQYI-5TUlFM5vRR0Z5BVdNb9470tjWxbTl8ycKeqKSMPlXkUcBD0Xb5Dw5ngbpbS8YJn8TuD_HBSzChNggeAxuc/s320/DSC02745.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
カーブの設定で値が50 - 100にマップされるようなものを作ったら、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKMGbw57NGp-dKx1f-jNzdBh-EOent7WPmGq_ldAg7GHW53WCw3sLCB_myU-KghGVfankXIrdWgo8kw9cN0t0amsO84sQUBldLaH1Ntu5fJNRKaDrvwPDYAexB0tpnGkWgJfBBl6WDV4/s1600/DSC02746.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKMGbw57NGp-dKx1f-jNzdBh-EOent7WPmGq_ldAg7GHW53WCw3sLCB_myU-KghGVfankXIrdWgo8kw9cN0t0amsO84sQUBldLaH1Ntu5fJNRKaDrvwPDYAexB0tpnGkWgJfBBl6WDV4/s320/DSC02746.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
それをすべてのミキサーの出力に割り当てます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0L4t4c86_GcAYIm54Fwj3Bn-8i_RXYDaZmNOUxDRuXJLBDqFjuDHvQ4juv7xoCBVeuPj0yi-8veJYgFMQT6QnBfWof4-WlGafd-iAlmF8xzAuN0SfiuS34FkHlV58C3HeNrft7pzT_Rk/s1600/DSC02749.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0L4t4c86_GcAYIm54Fwj3Bn-8i_RXYDaZmNOUxDRuXJLBDqFjuDHvQ4juv7xoCBVeuPj0yi-8veJYgFMQT6QnBfWof4-WlGafd-iAlmF8xzAuN0SfiuS34FkHlV58C3HeNrft7pzT_Rk/s320/DSC02749.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
これで、すべてのスティックの値が、50から100にマップされます。&lt;br /&gt;
※ミキサーをひとつずつ開いて、オフセットとウェイトを50に変更しても大丈夫です。&lt;/div&gt;
&lt;div&gt;
※詳細な設定については、&lt;a href=&quot;https://youtu.be/XlR5eqm1aKE&quot; target=&quot;_blank&quot;&gt;この動画&lt;/a&gt;が詳しいです&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEL6BX5LBi_Z7y55qUn9lelRCDdcb0ypqvOlq8IGSGOVl2ZK0mAFUGSO55uM5m5iiLP8bE8Btnrg2RRQooOBqwYw9lWK85insbBgO80l9cSNzdiX79vGhGUVl7PUU4xjQ3TU1vg7ozItU/s1600/DSC02751.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEL6BX5LBi_Z7y55qUn9lelRCDdcb0ypqvOlq8IGSGOVl2ZK0mAFUGSO55uM5m5iiLP8bE8Btnrg2RRQooOBqwYw9lWK85insbBgO80l9cSNzdiX79vGhGUVl7PUU4xjQ3TU1vg7ozItU/s320/DSC02751.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
このモデルを使用してFPV Freeriderをプレイすれば、きちんとUSB Calibrationができるようになります。FPV Freeriderで実際にFPVでプレイすると、こんな感じになります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/Wp5zuTJC_ec/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/Wp5zuTJC_ec?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
※残念ながら、まだ全然うまくないです…&lt;br /&gt;
&lt;br /&gt;
とてもリアルでおすすめですし、カメラ画角等も自分の(実際の)機体に合わせて変更することができるので練習に役立ちます！&lt;/div&gt;
&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2018/08/taranis-q-x7s.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJa_oAw9kpkaxcPOI9xwJbXI2DAySDqOuYY6Y9mzL2f3FwP4xsFY9u_nC54dWXafUS4XHyhUys0hHA3xOO-muQc076ZdgjK0o0IKN7RCvtEEQ8DnGWzY2ztbYszkx7vJRMAatrO4vwnyk/s72-c/DSC02728.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-8419366472031158039</guid><pubDate>Wed, 25 Jul 2018 15:14:00 +0000</pubDate><atom:updated>2018-07-26T00:14:10.547+09:00</atom:updated><title>MavESP8266をESP-WROOM-02に焼いてPixhawkとWifiで通信する</title><description>Project C.G.S.は、&lt;a href=&quot;https://www.mbzirc.com/qualified-teams/2020&quot; target=&quot;_blank&quot;&gt;MBZIRC 2020年度大会も無事に書類選考を追加しました！&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2017年度大会に参加した機体ではペイロードが小さく、今より処理能力の高いボードを載せたり、重い物体を運搬したりするのは難しいので、現在Project C.G.S.では、2020年度大会用の機体を作成しています。&lt;br /&gt;
&lt;br /&gt;
一般的にドローンを自作する場合には、機体を組み立てた後に、機体がうまく飛行できるようにパラメータを調整する作業が待っています。これには機体を手で持ってぐるぐる回したり、少しずつパラメータを変えながら実際に飛ばしたりする作業が必要なのですが、大きいドローンになると指示に従って機体をぐるぐる回すのも一苦労ですし、パラメータ調整のたびにいちいちUSBケーブルを接続するのは非常に面倒です。&lt;br /&gt;
&lt;br /&gt;
なので、やはりパラメータの設定などは無線で通信したいものです。少し前にPX4ファミリーに加わったPixracerはなんとESP8266を使ったWifiモジュールがバンドルされており、これを使えばそのままWifiでQGCと接続することができちゃいます。また、このモジュールを接続すれば、Pixracerに限らずPixhawkなどでもWifi経由で接続することができるようになっています。&lt;br /&gt;
&lt;br /&gt;
ところがここで問題がひとつ... &lt;b&gt;付属のモジュールは技適認証を受けておらず、日本国内で自由に使うことはできないのです！&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
そこで、この記事ではESP8266用のファームを技適認証を受けているESP-WROOM-02に書き込み、合法にWifi接続する方法を紹介します(と言っても普通に書き込むだけなのですが...)。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
ファームウェアの書き込み&lt;/h3&gt;
&lt;div&gt;
まずは、ESP-WROOM-02(&lt;a href=&quot;https://www.switch-science.com/catalog/2341/&quot; target=&quot;_blank&quot;&gt;スイッチサイエンスで扱っているピッチ変換基板に実装したもの&lt;/a&gt;)を書き込みモードにしてPCと接続します。接続には秋月電子の&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gK-01977/&quot; target=&quot;_blank&quot;&gt;FT232RL USBシリアル変換モジュール&lt;/a&gt;を使いました。&lt;/div&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWbheGAEwmdhUO297XmGXeGOoxQ2T2W7omdstylOhhLPNerOljIB6rADEgV7kHvgwFj3DT5RdCLXXTOdis189odZkgpBUEGdZ3W9j-XCPafZyEAMabaYKkEkJIGk0Ge7XpQ3HrVIl8Fk/s1600/DSC02599.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWbheGAEwmdhUO297XmGXeGOoxQ2T2W7omdstylOhhLPNerOljIB6rADEgV7kHvgwFj3DT5RdCLXXTOdis189odZkgpBUEGdZ3W9j-XCPafZyEAMabaYKkEkJIGk0Ge7XpQ3HrVIl8Fk/s320/DSC02599.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.8px;&quot;&gt;ESP-WROOM-02への書き込み&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
ESP-WROOM-02は3.3Vで動作しますので、変換モジュールの出力が3.3Vになるようにジャンパピンを設定するのを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;50&quot;&gt;&lt;/col&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;J1&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;J1&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1-2間ショート&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;1-2間ショート&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;J2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;J2&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ショート&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ショート&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
※念の為、ESP-WROOM-02に接続する前にVIOの電圧が3.3Vになっていることを確認してください&lt;br /&gt;
&lt;br /&gt;
ESP-WROOM-02のピンと、変換モジュールとの結線は&lt;a href=&quot;https://www.slideshare.net/quitsq/esp8266-60164967/17&quot; target=&quot;_blank&quot;&gt;こちらのスライド&lt;/a&gt;の情報を参考に行い、ESP-WROOM-02がUART Download Modeになるように行います。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdTMQExJxJdfCAG1AZ65Sc0mFeY7EShTv0YqVyP_7nUZihWbpCBswwR9cv9o3-we-F-jNdfRoFLQFmI6hhuPMOn4mxaWDZV57gpRtE1a4F8rMDtgZKelX0EgWqK02Wdm5BOwSp_PACBw0/s1600/DSC02601.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdTMQExJxJdfCAG1AZ65Sc0mFeY7EShTv0YqVyP_7nUZihWbpCBswwR9cv9o3-we-F-jNdfRoFLQFmI6hhuPMOn4mxaWDZV57gpRtE1a4F8rMDtgZKelX0EgWqK02Wdm5BOwSp_PACBw0/s320/DSC02601.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;IO0をGNDにショートしています&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;119&quot;&gt;&lt;/col&gt;&lt;col width=&quot;110&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ESP-WROOM-02&amp;quot;}&quot; style=&quot;background-color: #d9d9d9; border-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;ESP-WROOM-02&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;AE-UE232R&amp;quot;}&quot; style=&quot;background-color: #d9d9d9; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;AE-UE232R&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3V3&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;3V3&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;VIO&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;VIO&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;IO2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;IO15&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;VIO&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;GND&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;IO2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;IO2&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;VIO&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;VIO&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;IO0&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;IO0&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GND&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;GND&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;TX&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;TX&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;RX&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;RX&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;RX&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;RX&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;TX&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;TX&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GND&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;GND&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GND&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;GND&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
この状態で、&lt;a href=&quot;https://github.com/dogmaphobic/mavesp8266&quot; target=&quot;_blank&quot;&gt;Githubレポジトリ&lt;/a&gt;の手順に従ってファームウェアのビルドと書き込みを行います。&lt;br /&gt;
※ビルド済みバイナリをesptoolで書き込んでみたのですが、残念ながら動作しませんでした… esp12e向けにビルドしたものでないと動作しないのかもしれません&lt;br /&gt;
&lt;br /&gt;
まずは&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo pip2 install platformio&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
でplatformioをインストールしたら、mavesp8266のレポジトリで&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;platformio run -e esp12e -t upload&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
でファームウェアのビルドと書き込みをします。&lt;br /&gt;
書き込みが終わったらIO0をプルアップに変えて、&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii7KCBkbRVVXubEIZBxDIaDG8_ZUBCFn_Fxmj6OHQSsgoPBPFFcTLw9HC7-C8fqUVdVi7z234DXqu_fz6ObQUiEWqI-zNsVNVEPL_8Ayg0yrVZu-SttpZ-CnnWLjaEudL37BIGD0xNML8/s1600/DSC02598.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii7KCBkbRVVXubEIZBxDIaDG8_ZUBCFn_Fxmj6OHQSsgoPBPFFcTLw9HC7-C8fqUVdVi7z234DXqu_fz6ObQUiEWqI-zNsVNVEPL_8Ayg0yrVZu-SttpZ-CnnWLjaEudL37BIGD0xNML8/s320/DSC02598.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;IO0をVCCにショートしています&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
※MavESP8266はGPIO2がGNDに落ちていると設定されているコンフィグをリセットしますので、IO2はGNDに落とさないように注意してください。&lt;br /&gt;
&lt;br /&gt;
PixhawkのTELEM2に繋ぎます。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuC1rDYvXW6FTFJMisFZWZePmpvGiIj-8jm-6OlzBhSfyV0GkSUtBcnYN85pwV8Qoa58ybF69jetTj1MALoDozsFq5iqdgYjeFiOx4Jj3aIcR0edhLJRcZ_aetTfQCJmESvIU9Hsy55QQ/s1600/DSC02604.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuC1rDYvXW6FTFJMisFZWZePmpvGiIj-8jm-6OlzBhSfyV0GkSUtBcnYN85pwV8Qoa58ybF69jetTj1MALoDozsFq5iqdgYjeFiOx4Jj3aIcR0edhLJRcZ_aetTfQCJmESvIU9Hsy55QQ/s320/DSC02604.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Pixhawkとの接続&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
このとき、PixhawkのTELEM2の電源は5Vになっているので、間にレギュレータを挟んでESP-WROOM-02に供給される電圧が3.3Vになるようにしてください。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
ボーレートの設定&lt;/h3&gt;
&lt;br /&gt;
Pixracerの場合はESP8266用のWifi Serialは921600ボーに設定されているのでこのままで通信できますが、Pixhawkの場合は使うTELEMのボーレートを921600に変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PixhawkをUSBでQGroundControlと接続し、&lt;a href=&quot;https://docs.px4.io/en/peripherals/mavlink_peripherals.html&quot; target=&quot;_blank&quot;&gt;この公式ページ&lt;/a&gt;を参考にPARAMETERのSYS_COMPANIONの値を`ESP8266 (921600 baud, 8N1)`に変更します。&lt;br /&gt;
※MavESP8266側のWebUIでボーレートをPixhawk側に、合わせる方法もありますが、57600ボーだとQGCでのパラメータのグラフ表示が残念なカクカク具合になるので、こちらの方法をおすすめします。&lt;br /&gt;
&lt;br /&gt;
Pixhawkの電源を入れるとESP-WROOM-02のアクセスポイント(Pixracer)が見えるので、ノートパソコンでアクセスポイントに接続し、QGroundControlを立ち上げると自動で無線で接続されます。😄&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
その他&lt;/h3&gt;
&lt;br /&gt;
今回は、&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 10pt; table-layout: fixed; width: 0px;&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;119&quot;&gt;&lt;/col&gt;&lt;col width=&quot;110&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PX4&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;PX4&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Firmware v1.8.0&amp;quot;}&quot; style=&quot;background-color: white; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); font-family: arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;Firmware v1.8.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;MavESP8266&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;MavESP8266&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;610f4be5&amp;quot;}&quot; style=&quot;background-color: white; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;610f4be5&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;QGroundControl&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;QGroundControl&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;v3.3.2&amp;quot;}&quot; style=&quot;background-color: white; border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); font-family: arial; overflow: hidden; padding: 2px 3px; vertical-align: bottom;&quot;&gt;v3.3.2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
で動作することを確認しました。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2018/07/mavesp8266esp-wroom-02pixhawkwifi.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWbheGAEwmdhUO297XmGXeGOoxQ2T2W7omdstylOhhLPNerOljIB6rADEgV7kHvgwFj3DT5RdCLXXTOdis189odZkgpBUEGdZ3W9j-XCPafZyEAMabaYKkEkJIGk0Ge7XpQ3HrVIl8Fk/s72-c/DSC02599.JPG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-2749211665070031259</guid><pubDate>Tue, 24 Apr 2018 03:50:00 +0000</pubDate><atom:updated>2018-04-24T12:50:48.504+09:00</atom:updated><title>技術書典4で頒布した「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」をBOOTHで再販開始しました</title><description>先日開催された技術書オンリーイベント 技術書典4に、社会人サークル「&lt;a href=&quot;https://techbookfest.org/event/tbf04/circle/20090004&quot; target=&quot;_blank&quot;&gt;Project C.G.S.&lt;/a&gt;」として出展しました！&lt;br /&gt;
&lt;br /&gt;
当日は「&lt;b&gt;Do It Ourselves: 社会人サークルによる自律移動ロボット開発&lt;/b&gt;」という、Project C.G.S. がつくばチャレンジを始めとするロボットコンテストへの参加に向けて行ってきた、地上を走る自律移動ロボット(UGV) とドローン(UAV) の開発に関する様々な記事を集めた内容の本を頒布していました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXPDS6E5c3TWQX72Owyf7GhkIbCMi4mBYBQJN0qa5Ciz-4uQJbEQC1XfX5_jGVzOjcqaRSTZVK9-g7XGo8S1r0p8ZhWPC7ap59Mq5rsUo4QJKCyWyyYUVPlNdrLXO_3drPHx7_9Jbj-OA/s1600/DSC_0136.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXPDS6E5c3TWQX72Owyf7GhkIbCMi4mBYBQJN0qa5Ciz-4uQJbEQC1XfX5_jGVzOjcqaRSTZVK9-g7XGo8S1r0p8ZhWPC7ap59Mq5rsUo4QJKCyWyyYUVPlNdrLXO_3drPHx7_9Jbj-OA/s640/DSC_0136.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ところが、初参加ということもあり印刷部数を絞りすぎてしまって、入場開始早々に完売してしまいました…&amp;nbsp;せっかくブースに来ていただいたのに買えなかった方には、本当に申し訳ありませんでした…&lt;br /&gt;
&lt;br /&gt;
当日もアナウンスしていましたが、この度&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://capygs.booth.pm/items/830475&quot; target=&quot;_blank&quot;&gt;PDF版をBOOTHにて頒布開始致しました！&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ので、買い逃してしまった方は是非、BOOTHから購入をご検討ください。&lt;br /&gt;
Project C.G.S.では今後共、ロボットに関するホットな情報発信を続けてまいりますので、引き続きよろしくお願いいたします。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2018/04/4do-it-ourselves-booth.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXPDS6E5c3TWQX72Owyf7GhkIbCMi4mBYBQJN0qa5Ciz-4uQJbEQC1XfX5_jGVzOjcqaRSTZVK9-g7XGo8S1r0p8ZhWPC7ap59Mq5rsUo4QJKCyWyyYUVPlNdrLXO_3drPHx7_9Jbj-OA/s72-c/DSC_0136.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-1485457022141759270</guid><pubDate>Wed, 18 Apr 2018 15:51:00 +0000</pubDate><atom:updated>2018-04-19T00:51:52.278+09:00</atom:updated><title>技術書オンリーイベント 技術書典4で「Do It Ourselves: 社会人サークルによる自律移動ロボット開発」を頒布します！</title><description>&lt;a href=&quot;https://techbookfest.org/event/tbf04&quot; target=&quot;_blank&quot;&gt;技術書オンリーイベント 技術書典4&lt;/a&gt;に社会人サークル「&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S.&lt;/a&gt;」として出展します！&lt;br /&gt;
&lt;br /&gt;
技術書典4は、4/22の11時から、秋葉原UDX アキバ・スクエアで開催される技術書オンリーの同人誌即売会です。Project C.G.S.は「け23」にブースを構えてます。&lt;br /&gt;
&lt;a href=&quot;https://techbookfest.org/event/tbf04/circle/20090004&quot; target=&quot;_blank&quot;&gt;技術書典4のサークルページはこちら&lt;/a&gt;にありますので、もし良かったら当日ブースに来ていただけると嬉しいです。&lt;br /&gt;
&lt;br /&gt;
頒布物は「&lt;b&gt;Do It Ourselves: 社会人サークルによる自律移動ロボット開発&lt;/b&gt;」という薄い本で、表紙はこんな感じになってます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69mm3aIw3ANIAjgI8jrXiwI1YA7ApKSjx5WBdSTpY5Nw-nvWcpUjNifZ6v6jSR_20Afl22MpCG3FRLAk8y9y1Ro51g1mm5PLQAACtw02lPrfb8ymvHpLUYzTavEW7UIe7oEzujVXBA_o/s1600/sample_%25E8%25A1%25A8%25E7%25B4%2599.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1392&quot; data-original-width=&quot;985&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69mm3aIw3ANIAjgI8jrXiwI1YA7ApKSjx5WBdSTpY5Nw-nvWcpUjNifZ6v6jSR_20Afl22MpCG3FRLAk8y9y1Ro51g1mm5PLQAACtw02lPrfb8ymvHpLUYzTavEW7UIe7oEzujVXBA_o/s400/sample_%25E8%25A1%25A8%25E7%25B4%2599.png&quot; width=&quot;282&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
内容はProject C.G.S. がつくばチャレンジを始めとするロボットコンテストへの参加に向けて行ってきた、地上を走る自律移動ロボット(UGV) とドローン(UAV) の開発に関する様々な記事を集めた内容になっています。章ごとに著者が異なり、コンテストの参加録のようなものから、ハードウェア、ソフトウェアの実装に関する少し込み入った内容まで、雑多に詰め込まれたオムニバス形式になっております。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9BZ8vKpmXGzmqkycogiMz4Yy5fNhEKUtn5bG2zyi_7iRDY2rYPkfgp52jJhq8Tks7K9a973ukfIkDjXSNEXBmIA3NO9emzBu7flw-oIqNMIyecHArGui9uyGnEd5hAOtvqwOR6In_V2o/s1600/sample_%25E7%259B%25AE%25E6%25AC%25A1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1423&quot; data-original-width=&quot;1017&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9BZ8vKpmXGzmqkycogiMz4Yy5fNhEKUtn5bG2zyi_7iRDY2rYPkfgp52jJhq8Tks7K9a973ukfIkDjXSNEXBmIA3NO9emzBu7flw-oIqNMIyecHArGui9uyGnEd5hAOtvqwOR6In_V2o/s400/sample_%25E7%259B%25AE%25E6%25AC%25A1.png&quot; width=&quot;285&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
私は主に最初の導入と、「&lt;b&gt;第3章 実環境で動かすTensorFlow Object Detection API&lt;/b&gt;」を執筆しました。第3章では、市街地を自律走行する移動ロボット(※表紙のロボットです)にTensorFlow Object Detection APIを使った物体検出機能を実装して、つくばチャレンジ 2017というロボットコンテストで実際に走行させるまでの話を紹介しています。&lt;br /&gt;
&lt;br /&gt;
もしよければお手にとっていただけると嬉しいです！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2018/04/4do-it-ourselves.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69mm3aIw3ANIAjgI8jrXiwI1YA7ApKSjx5WBdSTpY5Nw-nvWcpUjNifZ6v6jSR_20Afl22MpCG3FRLAk8y9y1Ro51g1mm5PLQAACtw02lPrfb8ymvHpLUYzTavEW7UIe7oEzujVXBA_o/s72-c/sample_%25E8%25A1%25A8%25E7%25B4%2599.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-2604852108212444101</guid><pubDate>Wed, 27 Sep 2017 15:32:00 +0000</pubDate><atom:updated>2017-09-29T11:47:53.001+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ROS</category><category domain="http://www.blogger.com/atom/ns#">Ubuntu</category><title>Ubuntu 16.04.3 LTSでROBOTIS Dynamixel SDKが通信に失敗する</title><description>3行まとめ&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 16.04.3を再インストールすると、Kernel 4.10が使用されます&lt;/li&gt;
&lt;li&gt;Linux Kernel 4.10からFTDI USBシリアルドライバのデフォルトレイテンシタイマが1msから&lt;b&gt;16ms&lt;/b&gt;に変更されました&lt;/li&gt;
&lt;li&gt;ROBOTIS Dynamixel SDKではシリアルドライバの設定値によらず、タイムアウトが固定値(1.x系では5ms)になっているので、通信に失敗します&lt;/li&gt;
&lt;/ul&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S.&lt;/a&gt;というチーム名で、毎年自律移動ロボットコンテスト&lt;a href=&quot;http://www.tsukubachallenge.jp/&quot; target=&quot;_blank&quot;&gt;つくばチャレンジ&lt;/a&gt;に参加しています。&lt;br /&gt;
&lt;br /&gt;
我々のチームでは環境の3次元マップを取得するためにTopURGというレーザーセンサを前後に振っているのですが、3年ほど前からそこの機構に&lt;a href=&quot;http://support.robotis.com/jp/product/dynamixel/mx_series/mx-28.htm&quot; target=&quot;_blank&quot;&gt;Robotis Dynamixel MX-28&lt;/a&gt;というサーボを利用しています。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQlX-TmTHC0M_D5ihKMwtHb5OqRdLgpgs3MJOHfciNZB7bkwmJqsGA9i69M73uVZHV4yfn137xxlUDVl7TznWFQKhGTUHx7cjQ34DjAHVPe6vgRtvNpIE8fedarA5vhHg_8dBXRA069Rg/s1600/DSC_1139.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;906&quot; data-original-width=&quot;1600&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQlX-TmTHC0M_D5ihKMwtHb5OqRdLgpgs3MJOHfciNZB7bkwmJqsGA9i69M73uVZHV4yfn137xxlUDVl7TznWFQKhGTUHx7cjQ34DjAHVPe6vgRtvNpIE8fedarA5vhHg_8dBXRA069Rg/s320/DSC_1139.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Capybara J.V. (つくばチャレンジ &#39;16)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
ところが先日、機体で使用しているUbuntuを再インストールしたところ、突然このMX-28が動かなくなるという問題が発生しました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Dynamixel SDK からは&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;Dynamixel communication error : There is no status packet!
&lt;/pre&gt;
&lt;br /&gt;
のようなエラーが返ってきており、どうもこれはタイムアウトが発生した際に返るエラーのようです。サーボや電気系統に問題はなく、またWindowsのツールからは正常に通信できていたので、Ubuntu側に何らかの問題があると判断しました。&lt;br /&gt;
&lt;br /&gt;
このタイムアウトの値はDynamixel SDKの&lt;a href=&quot;https://github.com/ROBOTIS-GIT/DynamixelSDK/blob/master/c%2B%2B/src/dynamixel_sdk/port_handler_linux.cpp#L134&quot; target=&quot;_blank&quot;&gt;ここ&lt;/a&gt;で設定されており、3.x系のSDKではLATENCY_TIMER定数値をもとに設定されているようです。&lt;br /&gt;
&lt;br /&gt;
USBシリアルのLatencyTimer設定値を疑い、&lt;a href=&quot;https://linuxjm.osdn.jp/html/setserial/man8/setserial.8.html&quot; target=&quot;_blank&quot;&gt;setserial&lt;/a&gt;コマンドを使って&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;setserial /dev/ttyUSB0 low_latency&lt;/pre&gt;
&lt;br /&gt;
としたところ、通信エラーがなくなり、無事サーボが動くようになりました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
少し調べてみると、どうやらLinux Kernel 4.10で、FTDIのUSBシリアルドライバftdi_sioに、&lt;a href=&quot;https://patchwork.kernel.org/patch/9589627/&quot; target=&quot;_blank&quot;&gt;low latencyフラグを外すパッチ&lt;/a&gt;が取り込まれていることがわかりました。&lt;br /&gt;
&lt;br /&gt;
これにより、デフォルトのUSBシリアルのポーリングレートが1msから&lt;span style=&quot;color: red;&quot;&gt;16ms&lt;/span&gt;に変更されます。&lt;br /&gt;
&lt;br /&gt;
Ubuntu 16.04.3からは&lt;a href=&quot;http://fridge.ubuntu.com/2017/08/05/ubuntu-16-04-3-lts-released/&quot; target=&quot;_blank&quot;&gt;Linux Kernel 4.10が使用される&lt;/a&gt;ので、この変更によりタイムアウトが発生するようになってしまった可能性が高そうです。&lt;br /&gt;
&lt;br /&gt;
ROBOTISのgithubでも&lt;a href=&quot;https://github.com/ROBOTIS-GIT/DynamixelSDK/pull/116&quot; target=&quot;_blank&quot;&gt;この問題について言及&lt;/a&gt;されていて、udevルールに&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;ACTION==&quot;add&quot;, SUBSYSTEM==&quot;usb-serial&quot;, DRIVER==&quot;ftdi_sio&quot;, ATTR{latency_timer}=&quot;1&quot;&lt;/pre&gt;
&lt;br /&gt;
を、追加する対応が提案されています。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
ロボット系ではUSBシリアルを使ってセンサ/アクチュエータと通信することが多いので、特にROSユーザーで心当たりのある方はudevルールへの追記を考えたほうが良いかもしれません…&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;追記 20170929&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
どうも、ROBOTIS Dynamixel SDKにLatency Timer関係で&lt;a href=&quot;https://github.com/ROBOTIS-GIT/DynamixelSDK/commit/5af369aef9c4d74f67bfb2d810c06ba5e7fe2c2c&quot; target=&quot;_blank&quot;&gt;Ubuntu 16.04.2の時も修正が入っている&lt;/a&gt;ようですね…&lt;br /&gt;
我々は1.x系の古いSDKを使っていたので、こちらの方に引っかかっていたのかもしれません。いずれにせよudevルールの修正で解決できると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2017/09/ubuntu-16043-ltsrobotis-dynamixel-sdk.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQlX-TmTHC0M_D5ihKMwtHb5OqRdLgpgs3MJOHfciNZB7bkwmJqsGA9i69M73uVZHV4yfn137xxlUDVl7TznWFQKhGTUHx7cjQ34DjAHVPe6vgRtvNpIE8fedarA5vhHg_8dBXRA069Rg/s72-c/DSC_1139.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-343152803141499758</guid><pubDate>Fri, 19 May 2017 15:42:00 +0000</pubDate><atom:updated>2017-05-27T03:02:29.380+09:00</atom:updated><title>かっこいいU199ドローンを作ってみた</title><description>先日のアブダビでの事故で操縦技術の不足を痛感したので、ドローンの操縦技術を磨かねばと思いました。&lt;br /&gt;
で、どうせ練習するならドローンレース参戦に向けてやってみようとなったわけです。&lt;br /&gt;
&lt;br /&gt;
日本で屋外でドローンを飛ばそうと思ったときには、改正航空法の規制を満たす必要があります。改正航空法では飛行禁止区域などの取り決めに加えて、目視外飛行(ゴーグルを覗いて操縦するなど)にも申請と許可が必要であると定められています（&lt;a href=&quot;http://www.mlit.go.jp/koku/koku_tk10_000003.html&quot; target=&quot;_blank&quot;&gt;参考ページ&lt;/a&gt;）。&lt;br /&gt;
&lt;br /&gt;
ただし、200g未満の機体に関してはこの制約を受けず、事前申請無しで目視外飛行を行うことができます。&lt;br /&gt;
※もちろん法律の規制を受けないからと言って、好き放題飛ばしてよいわけではありません&lt;br /&gt;
※土地の権利者が飛行を禁止していない区域で、周囲の安全に十分に配慮して飛行する必要があります。&lt;br /&gt;
&lt;br /&gt;
この法律をうけて、日本では重量を200g未満に抑えたU199というカテゴリが誕生しました。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
早速ですが、今回組み立てたU199はこんな感じになりました。頭が光ってます。&lt;br /&gt;
実はU199を組み立てるのは2機目で、今回はFPVの画質を頑張る方向で組んでみました。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEtWFy2FoQTdVMPFY8Y_CgEjF_XmKK2tRlq0k-HR38TBl_51CGOziKZeyPB8nK-pFKY-y4kIKbQn5fOHJHhk0vPU9JwEMYxAXwRI9fBxj92xpFOSxDm_UCVA_JicVdBuUdUFaKZ0jdqmY/s1600/DSC08198.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEtWFy2FoQTdVMPFY8Y_CgEjF_XmKK2tRlq0k-HR38TBl_51CGOziKZeyPB8nK-pFKY-y4kIKbQn5fOHJHhk0vPU9JwEMYxAXwRI9fBxj92xpFOSxDm_UCVA_JicVdBuUdUFaKZ0jdqmY/s400/DSC08198.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;組み立てたU199の写真&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
構成は以下の通りです。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;4&quot; cellspacing=&quot;4&quot; style=&quot;border-collapse: collapse; width: 620px;&quot;&gt;
 &lt;colgroup&gt;&lt;col style=&quot;mso-width-alt: 2656; mso-width-source: userset; width: 62pt;&quot; width=&quot;120&quot;&gt;&lt;/col&gt;
 &lt;col style=&quot;mso-width-alt: 8352; mso-width-source: userset; width: 196pt;&quot; width=&quot;400&quot;&gt;&lt;/col&gt;
 &lt;col style=&quot;mso-width-alt: 2688; mso-width-source: userset; width: 63pt;&quot; width=&quot;82&quot;&gt;&lt;/col&gt;
 &lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td class=&quot;xl65&quot; height=&quot;18&quot; style=&quot;height: 13.5pt; width: 62pt;&quot; width=&quot;83&quot;&gt;Frame&lt;/td&gt;
  &lt;td class=&quot;xl65&quot; style=&quot;width: 196pt;&quot; width=&quot;261&quot;&gt;Realacc Belix-3 130MM&lt;/td&gt;
  &lt;td class=&quot;xl67&quot; style=&quot;width: 63pt;&quot; width=&quot;84&quot;&gt;&lt;a href=&quot;https://m.banggood.com/Realacc-Belix-3-5-Inch-130MM-200MM-Carbon-Fiber-Frame-Kit-with-PDB-for-Multirotor-p-1122779.html&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;FC&lt;/td&gt;
  &lt;td&gt;HGLRC F4 FLAME&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://m.banggood.com/F4-FLAME-Race-Spec-STM32F405-Flight-Control-Built-in-BETAFLIGHT-OSD-5V-BEC-PDB-Current-Sensor-p-1136917.html&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;ESC&lt;/td&gt;
  &lt;td&gt;Favourite FVT LittleBee-Spring 6A&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://m.banggood.com/Favourite-FVT-LittleBee-Spring-6A-Blheli_S-BB2-2-3S-ESC-Support-Oneshot125-Oneshot42-Multshot-Dshot-p-1133471.html&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;Motor&lt;/td&gt;
  &lt;td&gt;DYS BX1306 3100kv&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://m.banggood.com/DYS-1306-3100KV-BX-Series-Brushless-Motor-For-Multicopter-CW-CCW-p-962149.html&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;Prop&lt;/td&gt;
  &lt;td&gt;Gemfan Bull Nose 3030&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://hobbyking.com/en_us/gemfan-bull-nose-3030-abs-propellers-cw-ccw-set-black-2-pairs.html?___store=en_us&quot; target=&quot;_blank&quot;&gt;Hobbyking&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;RX&lt;/td&gt;
  &lt;td&gt;FD800 Tiny FrSky receiver&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://m.banggood.com/FD800-Tiny-Frsky-8CH-PPMSBUS-Receiver-Compatible-FRSKY-ACCST-X9DPlusDJTDFTDHT-For-QX95-QX90-p-1108071.html&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;Camera&lt;/td&gt;
  &lt;td&gt;RunCam Owl Plus&lt;/td&gt;
  &lt;td class=&quot;xl68&quot;&gt;&lt;a href=&quot;https://m.banggood.com/RunCam-OWL-PLUS-700TVL-0_0001-LUX-FPV-Camera-FOV-150-Wide-Angle-F2_0-lens-IR-Blocked-5-22V-p-1057924.html%20VTX&quot; target=&quot;_blank&quot;&gt;Banggood&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;
  &lt;td class=&quot;xl66&quot; height=&quot;18&quot; style=&quot;height: 13.5pt;&quot;&gt;Battery&lt;/td&gt;
  &lt;td class=&quot;xl66&quot;&gt;Turnigy BOLT V2 500mAh 3S&lt;/td&gt;
  &lt;td class=&quot;xl69&quot;&gt;&lt;a href=&quot;https://www.blogger.com/Turnigy%20BOLT%20V2%20500mAh%203S%20https://hobbyking.com/jp_jp/graphene-lihv-500mah-3s-65c.html&quot; target=&quot;_blank&quot;&gt;Hobbyking&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
この構成でeCalcでシミュレーションするとこんな感じです。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Ak3YnJDDfAB406nCCP3nC_usEvMbvlL15x448MPqTakYnn2EdzTBKI1XhzVrXBYYBjR9vWKtGi9jLAm2EOmL1a9Ng4fKsXKkzPlvFc8O402-imUjCoArtsAw0qV49bIqHBGPTdccSBc/s1600/ecalc-u199-4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;894&quot; data-original-width=&quot;1236&quot; height=&quot;462&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Ak3YnJDDfAB406nCCP3nC_usEvMbvlL15x448MPqTakYnn2EdzTBKI1XhzVrXBYYBjR9vWKtGi9jLAm2EOmL1a9Ng4fKsXKkzPlvFc8O402-imUjCoArtsAw0qV49bIqHBGPTdccSBc/s640/ecalc-u199-4.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;eCalc シミュレーション結果&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
フルスロットルのThrust-Weightは2:1なんでレース用って感じではないですけど、飛ばしやすいパラメータだと思います。カメラとVTXを軽くすればESCを変えて4sにできそうなので、慣れてきたら変えてみるかもしれません。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
フレームは130クラスではかなり軽い方だと思います。&lt;br /&gt;
組み立てには付属のネジは全く使わず、超低頭のM3ネジと樹脂スペーサを使っています。&lt;br /&gt;
&lt;br /&gt;
FCが面白くて、30mm規格のボードにPDB、BEC、OSDが一緒に載ってます。四隅にESC用の電源と信号が出ていて、使い勝手がいいですね。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqnNNnau3nGfe312xfPN_JOE3DpJu17_94G2JZ6e4yr3FwyebzbbgHifQJQ9iqDHZXMwuA7DSkgXhf4YoO-FZxV5kEX0iI8UxD9Ooh5W1VBcLFur28TBvURqJk8-9SCQZZkTjfi43OAa8/s1600/DSC08179.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqnNNnau3nGfe312xfPN_JOE3DpJu17_94G2JZ6e4yr3FwyebzbbgHifQJQ9iqDHZXMwuA7DSkgXhf4YoO-FZxV5kEX0iI8UxD9Ooh5W1VBcLFur28TBvURqJk8-9SCQZZkTjfi43OAa8/s400/DSC08179.JPG&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;FCと配線&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
このFCにXT30コネクタとブザーを直付けして、四隅からESCの配線、RXとカメラとVTXとLEDはコネクタを生やしてます。&lt;br /&gt;
※この線はもっと細くても良いかもしれないですね...&lt;br /&gt;
&lt;br /&gt;
ESCにはDSHOT600に対応したBLHeli_Sが焼かれたものを使っています。Betaflightと組み合わせて使うと、FC経由でESCの設定が変更できるので非常にありがたいです。組み立て時にはひと通りESCとモーターを配線した後に回してみて、逆に回ったやつのESCを&lt;a href=&quot;https://chrome.google.com/webstore/detail/blheli-configurator/mejfjggmbnocnfibbibmoogocnjbcjnk&quot; target=&quot;_blank&quot;&gt;BLHeli Configurator&lt;/a&gt;を使って逆転しています。&lt;br /&gt;
&lt;br /&gt;
で、この上に、RX、カメラ、VTX、LEDを取り付けたものがくっつきます。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBHCD6teh49Apa_fMq5KrCKGsLUpFxODR8YgvxudqpbvfXH2-EumFJQqUfkFysge-GSUnkzyu7Sv5ciwRP04bU6n9IvLPGIGwjoqO6EOs82vu0qCBGTCLm9ZpMmLlTc6eAuIq9AEedHeQ/s1600/DSC08190.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBHCD6teh49Apa_fMq5KrCKGsLUpFxODR8YgvxudqpbvfXH2-EumFJQqUfkFysge-GSUnkzyu7Sv5ciwRP04bU6n9IvLPGIGwjoqO6EOs82vu0qCBGTCLm9ZpMmLlTc6eAuIq9AEedHeQ/s400/DSC08190.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;完成したU199&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
LEDについてなのですが、CleanFlightやBetaFlightはWS2812BというシリアルLEDに対応しています。なるべく小さいものを探していたところ、秋月電子にちょうどいいボード（&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gM-08414/&quot; target=&quot;_blank&quot;&gt;マイコン内蔵RGBLEDモジュール&lt;/a&gt;）があったので購入してみたのですが、&lt;b&gt;そのまま繋いだだけでは全く点灯しませんでした...&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieXrrnn0xcQtPv9rnrJhiwf6Ym_8AgTLi5miHS58BCnrPvNRDCunltfaSuLKG-bqBnm2r0XUTpw9H8gNiU0dCCblWtz7VknsgroyIKkcmWunON3mCnuhkfqIiwCE5nx3owurMOadclX40/s1600/DSC08178.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieXrrnn0xcQtPv9rnrJhiwf6Ym_8AgTLi5miHS58BCnrPvNRDCunltfaSuLKG-bqBnm2r0XUTpw9H8gNiU0dCCblWtz7VknsgroyIKkcmWunON3mCnuhkfqIiwCE5nx3owurMOadclX40/s400/DSC08178.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;抵抗を外した秋月電子のWS2812B基板&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
どうもLEDのDINの前に入っている100Ω抵抗が悪さをしているようなので、ハンダごてで剥がしてジャンパを繋いだところ無事に点灯するようになりました。&lt;br /&gt;
やっぱりLEDがあるとエラーやARM/DISARMの状態が視覚的にわかるので良いですね。&lt;br /&gt;
&lt;br /&gt;
上面と背面のところのパーツは、3Dプリンタを使ってABSで作りました。（&lt;a href=&quot;https://drive.google.com/open?id=0BxAJ9jXVKgBpT3hWYk4wLWQzSGs&quot; target=&quot;_blank&quot;&gt;STLファイル&lt;/a&gt;）&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_ZxqG75It7lMDr-w0IK6ELU8IKWpveOjTMcJit01ooXtFSwvze8VdQ2QOTu-CaFbzzNN887eigvOjgjt-LPA_pXzLzpj5b6CrbrROtzTGZ0x4mRzB9T5f0VmVuZ73mjWV0YVk3NeGnww/s1600/DSC08181.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_ZxqG75It7lMDr-w0IK6ELU8IKWpveOjTMcJit01ooXtFSwvze8VdQ2QOTu-CaFbzzNN887eigvOjgjt-LPA_pXzLzpj5b6CrbrROtzTGZ0x4mRzB9T5f0VmVuZ73mjWV0YVk3NeGnww/s400/DSC08181.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.8px;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;3Dプリンタでつくったマウンタ&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnzugirNt5DcAdolHp70lSF9uCtb2sfLVBQsKZybS_cz6GwxUvpjtsGnxeElR_AIsGvX2EAw-qDkgmTzc3gAMNRZi_aSBpjG1mwGxXaX4hez1asNwlKCorztoHNxNGVmOidFHU__kRK4g/s1600/DSC08184.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnzugirNt5DcAdolHp70lSF9uCtb2sfLVBQsKZybS_cz6GwxUvpjtsGnxeElR_AIsGvX2EAw-qDkgmTzc3gAMNRZi_aSBpjG1mwGxXaX4hez1asNwlKCorztoHNxNGVmOidFHU__kRK4g/s400/DSC08184.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.8px;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;LED、RX、VTXを載せた状態&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
ネジ穴のところにはM3インサート（&lt;a href=&quot;http://wilco.jp/products/B/HSB.html&quot; target=&quot;_blank&quot;&gt;HSB-304530&lt;/a&gt;）をハンダごてで押し込んでいます。3Dプリンタで作ったものにネジどめするときはだいたいこんな感じにしてるんですが、まぁまぁしっかり固定出来るのでおすすめです。&lt;br /&gt;
&lt;br /&gt;
また、線材をはんだ付けした部分やコネクタの根本はBONDICで固めています。エポみたいに練らなくて良いし、4秒でカチカチに硬化するので、めっちゃ便利でおすすめです。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFhG5XNS6pqe2Ciat1uVekefPoLWf9FDx6pd1QboxPyzvTPj08xjvF7CZDRUlGOpYdleHOfbKGJPC484YQyBz4WOxtrnZUSdLMFjtqlvJjE4ofZySyNuab0ZEmBY5L9OmRV_XZjyIgVk8/s1600/DSC08197.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1062&quot; data-original-width=&quot;1600&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFhG5XNS6pqe2Ciat1uVekefPoLWf9FDx6pd1QboxPyzvTPj08xjvF7CZDRUlGOpYdleHOfbKGJPC484YQyBz4WOxtrnZUSdLMFjtqlvJjE4ofZySyNuab0ZEmBY5L9OmRV_XZjyIgVk8/s400/DSC08197.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;めっちゃ便利なBONDIC&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
最後にDVRで撮った初飛行動画を貼っておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/5pTyZTMA5_E/default.jpg?sqp=CJT6oMkF&amp;amp;rs=AOn4CLAoTCGQT07SueDQUWU5YHExLRMPhg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/5pTyZTMA5_E?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
特に障害物もないところをぐるぐる回ってるだけなので、あんまり面白みもないですが...&lt;br /&gt;
今度はどこかのコースにお邪魔して、ゲートくぐりとかしたいですね。&lt;br /&gt;
&lt;br /&gt;
P.S. 一緒に飛ばしてくれる人募集中です！&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2017/05/u199.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEtWFy2FoQTdVMPFY8Y_CgEjF_XmKK2tRlq0k-HR38TBl_51CGOziKZeyPB8nK-pFKY-y4kIKbQn5fOHJHhk0vPU9JwEMYxAXwRI9fBxj92xpFOSxDm_UCVA_JicVdBuUdUFaKZ0jdqmY/s72-c/DSC08198.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-8307545831509574270</guid><pubDate>Sat, 01 Apr 2017 15:57:00 +0000</pubDate><atom:updated>2017-04-02T02:44:57.542+09:00</atom:updated><title>ロボットの世界大会、MBZIRC2017のドローン自律制御部門に出場してきました</title><description>ロボットの世界大会、MBZIRC2017のドローン自律制御部門に、社会人サークル&lt;b&gt;&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S&lt;/a&gt;&lt;/b&gt;として出場してきました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0y4_AchU1T6Xu_qXq66AsQt-wu1fqCH7zrQuHTpbVCMdTorFdTfRRB7SZd8ByrwnxURQ3YscbKy4Dvuy9kZFb0M6GlwmnFn9ueyF9JJFln_cIZEmrVqEcjI7dFuswNQx_k3TvBxI7Xh0/s1600/DSC07340.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0y4_AchU1T6Xu_qXq66AsQt-wu1fqCH7zrQuHTpbVCMdTorFdTfRRB7SZd8ByrwnxURQ3YscbKy4Dvuy9kZFb0M6GlwmnFn9ueyF9JJFln_cIZEmrVqEcjI7dFuswNQx_k3TvBxI7Xh0/s400/DSC07340.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
思い返せば、かれこれ1年半ほどこの大会に向けて開発を続けてきました。チームとしてもUAVの自動制御は初の試みだったのもあり、並みいる有名大学や企業に混じって何とか出場に漕ぎ着けるので精一杯で、チャレンジの結果は非常に悔いの残る結果になってしまいました。&lt;/div&gt;
&lt;br /&gt;
技術的には突飛なものを使っているわけではなく、特筆するべきアルゴリズムもないので技術ブログしてはコンテンツ不足ではあるのですが、この1年半のけじめをつける意味でもここにまとめを残しておこうと思います。&lt;br /&gt;
&lt;br /&gt;
もしこの記事がこれからドローンの自律飛行を始める方の助けになれば幸いです。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
出場した大会について&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
MBZIRC 2017はMohamed Bin Zayed International Robotics Challengeの名の通り、UAEの首都Abu Dahbi首長国の皇太子が主催したロボット大会です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDxK02LD1_1kUYpOqvCi1Stl3UgJ0OfDolsx7j4tzeA1WACak5SRViujKBW-82pWhTHS9a61tIRhRNXwkGecbIHh0tdKrBj-tvguoehyUCXBQuX95ciL6Bw3Z_0IgiBddXQcuH53eyrM/s1600/logo_new.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDxK02LD1_1kUYpOqvCi1Stl3UgJ0OfDolsx7j4tzeA1WACak5SRViujKBW-82pWhTHS9a61tIRhRNXwkGecbIHh0tdKrBj-tvguoehyUCXBQuX95ciL6Bw3Z_0IgiBddXQcuH53eyrM/s1600/logo_new.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.mbzirc.com/&quot; target=&quot;_blank&quot;&gt;http://www.mbzirc.com/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
大会はAbu DahbiのYas島にあるYas Marina Circuitにて行われました。&lt;br /&gt;
※正確にはサーキットの敷地内のCar Display Areaにネットで囲まれたアリーナが敷設され、そこでコンテストが行われました&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8Nn4ZbgiilogBeX_q3yWlQM7KPe0EAiKSEllVrLcjAA5pjNSqnN3lHVAucwanDfrjfr827QXsqzojD98nyHHox_91WmbXZCTsJwiEaLjJnzhf8bmhwrjba2a2Jbp5RuN77a8VM0_G4rI/s1600/DSC07298.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8Nn4ZbgiilogBeX_q3yWlQM7KPe0EAiKSEllVrLcjAA5pjNSqnN3lHVAucwanDfrjfr827QXsqzojD98nyHHox_91WmbXZCTsJwiEaLjJnzhf8bmhwrjba2a2Jbp5RuN77a8VM0_G4rI/s400/DSC07298.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
各チームには電源、冷房完備のテントが割り当てられました。また、昼食や水の配布、ドラッグカーの余興付きのレセプションなど、参加費が無料なのにも関わらず非常に素晴らしい待遇を受けました。さすが石油王ですね！&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3u0cF3z_528g_gHN-wCz_8KJFNTEVaDjNNmT2YrLZ5zHswsonEQj7YI2Zruwvh97VV1KKELrrgN4HJ_mVlTaodUmDrFjFEEpwOiUyLIZBjzYblHOZNfBqvM8oN5A1ZdMn65SoNb72SGE/s1600/DSC07296.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3u0cF3z_528g_gHN-wCz_8KJFNTEVaDjNNmT2YrLZ5zHswsonEQj7YI2Zruwvh97VV1KKELrrgN4HJ_mVlTaodUmDrFjFEEpwOiUyLIZBjzYblHOZNfBqvM8oN5A1ZdMn65SoNb72SGE/s400/DSC07296.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
大会は3つのチャレンジに分かれており、&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S&lt;/a&gt;はこのうちChallenge 1に出場しました。Challenge 1では、着陸ランドマークが描かれた鉄板を上に載せた自動車が8の字に走っており、その上にドローンを着陸させるまでの時間を競います。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/oVz2Sp3W468/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/oVz2Sp3W468?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
大会としてはFPVなどを使った無線操縦も認められているのですが、我々のチームは得点の高い完全自律操縦にチャレンジしました。この場合、スタートの合図でロボットをスタートさせたあとは一切の手動オペレーションが認められず、ドローンは離陸、着陸ランドマークの探索、着陸アプローチ、着陸後にプロペラ停止までを全て自動で行います。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
機体について&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S&lt;/a&gt;ではUAVの開発経験がなかったので、機体に関してはなるべく既製品を流用し、一般的な構成になるようにしました。&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&gt;&lt;/style&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: none; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;165&quot;&gt;&lt;/col&gt;&lt;col width=&quot;321&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30d5\u30ec\u30fc\u30e0&amp;quot;}&quot; style=&quot;border-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;フレーム&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Bumblebee Carbon Fiber Quadcopter Frame 550mm&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Bumblebee Carbon Fiber Quadcopter Frame 550mm&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u30ae\u30a2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ランディングギア&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u81ea\u4f5c&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;自作&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30d5\u30e9\u30a4\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;フライトコントローラ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Pixhawk (PX4 Flight Stack 1.4.4)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Pixhawk (PX4 Flight Stack 1.4.4)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u53d7\u4fe1\u6a5f&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;受信機&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Futaba R3008SB&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Futaba R3008SB&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ESC&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ESC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ARRIS SIMONK 30A 2-6S OPTO&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ARRIS SIMONK 30A 2-6S OPTO&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30e2\u30fc\u30bf\u30fc&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;モーター&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Sunnysky v2216 kv800&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Sunnysky v2216 kv800&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30d7\u30ed\u30da\u30e9&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;プロペラ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ATG1238 (APC 12x3.8SF\u76f8\u5f53\u54c1)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ATG1238 (APC 12x3.8SF相当品)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u9ad8\u5ea6\u30bb\u30f3\u30b5&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;高度センサ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;LidarLite v3&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;LidarLite v3&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;GPS&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;GPS&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Ublox Neo-M8N GPS with Compass&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Ublox Neo-M8N GPS with Compass&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30b3\u30f3\u30d1\u30cb\u30aa\u30f3\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;コンパニオンコンピュータ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Odroid (Ubuntu 16.04)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Odroid (Ubuntu 16.04)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;USB\u30b7\u30ea\u30a2\u30eb\u5909\u63db&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;USBシリアル変換&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u81ea\u4f5c(Pixhawk\u306eTELEM2\u306b\u63a5\u7d9a)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;自作(PixhawkのTELEM2に接続)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;USB\u7121\u7ddaLAN&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;USB無線LAN&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ELECCOM WDC-433DU2HBK&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ELECCOM WDC-433DU2HBK&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30ab\u30e1\u30e9&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;カメラ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;oCam-1MGN-U&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;oCam-1MGN-U&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u96fb\u78c1\u77f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;電磁石コントローラ&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u81ea\u4f5c(GPIO\u306b\u63a5\u7d9a)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;自作(GPIOに接続)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u96fb\u78c1\u77f3&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;電磁石&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;ZYE1-P20/15&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;ZYE1-P20/15&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;PDB&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;PDB&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Power Distribution Board with 2 x UBEC Output&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Power Distribution Board with 2 x UBEC Output&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;DC-DC&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;DC-DC&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Hobbyking HKU5 5V/5A UBEC&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Hobbyking HKU5 5V/5A UBEC&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;\u30d0\u30c3\u30c6\u30ea\u30fc x2&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;バッテリー x2&lt;/td&gt;&lt;td data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;Multistar LiHV 5200mAh 3S 10C x2 (2\u4e26\u5217)&amp;quot;}&quot; style=&quot;border-bottom-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); padding: 2px 3px; vertical-align: bottom;&quot;&gt;Multistar LiHV 5200mAh 3S 10C x2 (2並列)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
この構成で20分ぐらい飛びます。ただslowflyの大きいプロペラを小さめのモーターで使っているのもあって、機体の動きは緩慢であまり応答性はよくありません。また位置制御のゲインも小さめにしていて、風のある環境では結構ふらふらしていました。&lt;br /&gt;
&lt;br /&gt;
我々のソフトウェアはすべてROS上のノードとして構成されており、OdroidのCPU上で動作します。さすがに画像関係の処理はOdroidにとってかなり辛いようで、1280x960のカメラ画像を320x240にbinningしてrectify、HOG識別器でターゲットを認識する処理を5 Hzで動かすので精一杯でした。&lt;br /&gt;
&lt;br /&gt;
また、これらの機能が最初から全てあったわけではなく、すべての機能が搭載されたのはかなりギリギリになってからでした。&lt;br /&gt;
特にカメラについては紆余曲折があり、アブダビ出発の2日前にカメラを載せ替え、出発の日に3DプリンタでNDフィルタのマウントを刷ったりとかなり直前まで開発をしていました。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Progress Report 1&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
MBZIRC 2017では、エントリーから大会本番までに2回、中間審査がありました。Progress Report 1では小型の機体を作って自動制御のテストしました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/hmKfSImbnSM/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/hmKfSImbnSM?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
この時点では機体が小さいのでコンパニオンコンピュータを載せることができず、機体とノートPCをWifiで接続してノートPC側のROSからリモートで自動制御していました。GPSを載せずに室内環境で自己位置推定するのが難しく、px4flowをちゃんと動かすためにレジャーシートの上でしか飛行できませんでした…&lt;br /&gt;
&lt;br /&gt;
機体はフレームからオリジナルで設計したものです。Wifiモジュールは日本の技適を通っているESP-WROOM-02にmavesp8266のファームを書き込んでノートPCと通信していました。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Progress Report 2&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2回目のProgress Reportでは、本番と同じ機体フレームで機体を組み立て、自律飛行のテストをしました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/XV_zzdhtCdM/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/XV_zzdhtCdM?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
この時点では自動離陸、探索、自動着陸まで一通り自動で動作しています。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
現地リハーサル&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
現地に入ってから大会本番まで、各チームには2回のリハーサルのチャンスが与えられました。1日あたり40分の時間が割り当てられ、時間が来たらテントからアリーナまでバギーで移動する形です。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtH5ypHkWqp912owP6__YB2d_U1cFrVkcWduO-LKTMHEouVOsjSRYI8pn0aabwpcuh4jdyXZo4B7e_u3ucZa37Az8l4S2TLChX4xZ7wwJCyEOh504rryYI2dW45EVWL28RbPBxK_j-bHc/s1600/DSC07315.JPG&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtH5ypHkWqp912owP6__YB2d_U1cFrVkcWduO-LKTMHEouVOsjSRYI8pn0aabwpcuh4jdyXZo4B7e_u3ucZa37Az8l4S2TLChX4xZ7wwJCyEOh504rryYI2dW45EVWL28RbPBxK_j-bHc/s400/DSC07315.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.capygs.org/&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
現地に入ってからも開発に追われ、足りない機能の追加や改良など、なんだかんだギリギリまでコードを書いていました…&lt;/div&gt;
&lt;div&gt;
そのかいもあり、2回目のリハーサルの最後では着陸ターゲットにアプローチ、もう少しで着陸できるところまで行きました。この時点ではあわよくば賞金ゲットもありえるという空気がチーム内にありました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;ですが、現実はそう甘くなかったです…&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;h2&gt;
大会本番&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
本番はリハーサルの2日間とはうってかわって曇り空、風速も5m/s程度あり、あまり良いコンディションではない中での開催となりました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
リハーサルではフィールドに出てテストをしていたのですが、本番はこのようなテントの中からロボットを見て操作します。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMAkf1ms2urGiJZP5ttbzbstS2Ajy-uxddCKhUJKqcAIjGFs3T3E8rfghuI3MZ_YkRROuIAdN2AcPNuEX14YFPn9-7ZS-WQ7Q51kFi-ZXlqMmw8BFT4KTgk4UOxtw6ZkjVUQZv9p4PQxE/s1600/DSC07423.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMAkf1ms2urGiJZP5ttbzbstS2Ajy-uxddCKhUJKqcAIjGFs3T3E8rfghuI3MZ_YkRROuIAdN2AcPNuEX14YFPn9-7ZS-WQ7Q51kFi-ZXlqMmw8BFT4KTgk4UOxtw6ZkjVUQZv9p4PQxE/s400/DSC07423.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S&lt;/a&gt;の機体は1回目のチャレンジで、着陸ターゲットを認識後に高度制御が不安定になり、機体高度が異常に上昇しました。&lt;br /&gt;
※後の調査で、機体の状態によっては高度制御が働かない(垂直方向速度を0にする制御のみで外乱による高度変化を打ち消さない)ケースがあり、上昇気流によって機体が大きく持ち上げられてしまった可能性が高いことがわかりました&lt;br /&gt;
&lt;br /&gt;
またテントの中から機体を目視できなくなってからの対応が遅れ、POSCTLに切り替えてテントの外に出たときには既に機体高度は100mを超えていました。この後も上空の強風の影響でPOSCTLで高度を下げることができず、やむを得ずマニュアル飛行に切り替えて着陸を試みました。しかし、高高度の機体制御経験に乏しかったのもあり操縦がうまくできず、最終的に機体は南に大きく流された後に水路に墜落してロストしました。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
1日目のチャレンジで機体がロストしてしまったので、2日目のチャレンジは棄権し、&lt;a href=&quot;http://www.capygs.org/&quot; target=&quot;_blank&quot;&gt;Project C.G.S&lt;/a&gt;のスコアは0となりました。チャレンジの全スコアボードは&lt;a href=&quot;http://www.mbzirc.com/scoreboard/challenge1#viewscore&quot; target=&quot;_blank&quot;&gt;ここ&lt;/a&gt;から参照できます。&lt;br /&gt;
&lt;br /&gt;
他のチームも含めた大会全体のライブストリーミングはYoutube見ることができます。今回入賞したチームはどこも10秒以内での着陸をキメており、技術力の高さを伺わせました。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/kLVxFTTOLyc/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/kLVxFTTOLyc?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
これからについて&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
チャレンジ結果は予想の遙か上を行く最悪の結果でしたが、人的被害がなかったのが不幸中の幸いでした。これは我々の空モノの制御に関する知識不足と操縦技術に関する慢心が招いた結果で、この結果を真摯に受け止め今後の改善に努めていきたいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguHCh9q5fjsCSADKVRZcjaApMvx7254G0Jm5iCpjoxCki7lL_1d1DpL6nwehZQ_e-lSMgIZbrLe9tX5zlHmChiwKqmiLRhJZZOPQ6zg2TAATfhKrWbHTI4uy_ofFsoc8zcvpxQl_Bx8DI/s1600/DSC06307.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguHCh9q5fjsCSADKVRZcjaApMvx7254G0Jm5iCpjoxCki7lL_1d1DpL6nwehZQ_e-lSMgIZbrLe9tX5zlHmChiwKqmiLRhJZZOPQ6zg2TAATfhKrWbHTI4uy_ofFsoc8zcvpxQl_Bx8DI/s400/DSC06307.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ただ一方で、他のチームと比較しても我々のチームの技術力はそこまで劣っているわけではないようにも感じました。次大会までの2年間で経験をつみ最新の技術動向を積極的に取り入れていくことで入賞を目指したいです。個人的にはシミュレータの調査と、FPGAベースの画像処理あたりを開拓していきたいですかね…&lt;br /&gt;
&lt;br /&gt;
あと忘れがちですが、&lt;b&gt;ドローンの自動制御をやるには、マニュアルでドローンを安定して飛ばせる技術をもった人が必要&lt;/b&gt;です。自動制御プログラムが動作している最中には、バグなどでドローンが予期せぬ挙動をすることが往々にして起こります。また、自作の機体では製品の機体と比べてギリギリの構成で動作することも多く、FCU側のパラメータも調整不足なためPOSCTLがうまく働かないこともあります。その時に瞬時に&lt;b&gt;マニュアル飛行&lt;/b&gt;に切り替え、安定してドローンを着陸させる人は絶対に必要です。&lt;br /&gt;
&lt;br /&gt;
自動制御と操縦技術、少しずつではありますが両方とも精進していきたいと思います。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2017/04/mbzirc2017.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0y4_AchU1T6Xu_qXq66AsQt-wu1fqCH7zrQuHTpbVCMdTorFdTfRRB7SZd8ByrwnxURQ3YscbKy4Dvuy9kZFb0M6GlwmnFn9ueyF9JJFln_cIZEmrVqEcjI7dFuswNQx_k3TvBxI7Xh0/s72-c/DSC07340.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-896169124328632737</guid><pubDate>Wed, 23 Dec 2015 11:00:00 +0000</pubDate><atom:updated>2015-12-23T20:20:03.114+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Make</category><title>日曜溶接DIYにチャレンジしてみた</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMol07Cvw3JP_VkoE-ZSNm55yWBpU7i4NacerwQxjnU0h9Zi45b_BgB48ct88gF3Fykurm2bNC9N-WyFx__teW1GMQ9nIe4MYM7bEq8hvV1F3MEsbOBGJlsUNMgSp5J-0gSt_TrnMb078/s1600/DSC03309.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMol07Cvw3JP_VkoE-ZSNm55yWBpU7i4NacerwQxjnU0h9Zi45b_BgB48ct88gF3Fykurm2bNC9N-WyFx__teW1GMQ9nIe4MYM7bEq8hvV1F3MEsbOBGJlsUNMgSp5J-0gSt_TrnMb078/s640/DSC03309.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
近頃、パルスロケットエンジンを自作して自転車に積んでみたりだとか、強力な電磁石を内蔵した靴で天井を歩いてみたりする動画がYoutubeに上がっています。&lt;br /&gt;
&lt;br /&gt;
そんな頭のネジが何本か外れたMakerたちの動画を見ていて、&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;俺はそういうものづくりをやってみたいんだ！&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
という思いが強くなりました。&lt;br /&gt;
&lt;br /&gt;
そういう人たちは得てして人が乗ったりとか、乗らないにしても迫力のある大きなモノをつくっているわけなのですが、そういった大物を作るにあたっては&lt;b&gt;溶接&lt;/b&gt;の工程が必ずといって動画の中に含まれていました。&lt;br /&gt;
&lt;br /&gt;
そこで、頭のおかしいMakerを目指すべく、&lt;b&gt;溶接にチャレンジ&lt;/b&gt;してみようと思ったわけです。&lt;br /&gt;
※純粋に興味もあったのでとりあえずやってみたかった、という面もあります。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
いろいろとググってみたところ、溶接機には家庭溶接機というジャンルがあるようで、一般の100Vコンセントと低電流溶接棒を使えば一般家庭でも溶接ができるようです。&lt;br /&gt;
&lt;br /&gt;
家庭用溶接機のジャンルでは大きく分けて&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;交流アーク溶接機&lt;/b&gt;&lt;br /&gt;
+ とても安価&lt;br /&gt;
- アークスタート、維持が難しい&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;直流半自動溶接器&lt;/b&gt;&lt;br /&gt;
+ トリガーを引くだけで使えるので簡単&lt;br /&gt;
- 交流アーク溶接機と比べると少し高価&lt;br /&gt;
&lt;br /&gt;
が広く普及しているようですが、100V電源で一般家庭用の15Aだと低電流用の細い溶接棒しか使えず、板厚3mm程度の溶接しかできないために、大きな構造物を作るには今ひとつ力不足感が否めませんでした。&lt;br /&gt;
&lt;br /&gt;
そこで、もう一つのタイプの溶接機&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;バッテリー溶接機&lt;/b&gt;&lt;br /&gt;
+ 電源によらず大電流を出力できる&lt;br /&gt;
- 非常に高価&lt;br /&gt;
&lt;br /&gt;
の入手を検討しました。&lt;br /&gt;
&lt;br /&gt;
※もし万が一このページをご覧の方で、ご家庭での溶接に興味のある方がいらっしゃいましたら、&lt;a href=&quot;http://www.welder.co.jp/first/s1_3.html&quot;&gt;溶接人さんのページ&lt;/a&gt;を参考にされると良いと思います&lt;br /&gt;
※大物を作る気がないのなら直流半自動溶接機が最適だと思います&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
流石に30万円もするバッテリー溶接機をホイホイ購入するわけにはいかないので、ヤフオクを巡回して手頃な出品を漁っていました。ヤフオクでは様々なタイプの溶接機が出回っているようで、家庭用低電流のものからエンジン溶接機まで一通り出品されています。&lt;br /&gt;
&lt;br /&gt;
一般的な溶接機でしたら、購入にあたっては&lt;br /&gt;
&lt;br /&gt;
- 見た目の綺麗さ&lt;br /&gt;
- 動作品かどうか&lt;br /&gt;
&lt;br /&gt;
あたりを気にすれば大丈夫だと思うのですが、&lt;br /&gt;
バッテリー溶接機の落札ではさらに、&lt;br /&gt;
&lt;br /&gt;
- バッテリーが生きているかどうか&lt;br /&gt;
&lt;br /&gt;
についても気にかける必要があります。溶接機に内蔵されているバッテリーが意外と高価で、せっかく溶接機を安く落札出来てもバッテリー代が高くなってしまっては悲しいですからね。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
で、つい手が滑って落札しちゃいました。&lt;br /&gt;
※送料込みで2万2,000円でした、多分破格だと思います&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHokwe16NFvFq50H5Z9pOIdRC9ylad8KuqG8LmVuxa7VtylsrOQ8WwwxtiHw2NkX4h8Kh7lRi_uU3Mp4xa53hgs7OyIqkGwTPMluX_niaLoxnzvZqlftzu73gXST_CYtncffTeBdUpqgE/s1600/P_20151109_110719.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHokwe16NFvFq50H5Z9pOIdRC9ylad8KuqG8LmVuxa7VtylsrOQ8WwwxtiHw2NkX4h8Kh7lRi_uU3Mp4xa53hgs7OyIqkGwTPMluX_niaLoxnzvZqlftzu73gXST_CYtncffTeBdUpqgE/s320/P_20151109_110719.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
マイトアーク社の少し古いモデルで、一般的な自動車用12Vバッテリーサイズ(55B24R)を3直列で使うタイプです。充電は100V15Aで、出力電流は150Aほど取れるようです。もちろん電源のない場所でも使うことができます。ただし、バッテリーを内蔵している関係で重量が90kgあるので、取り回しが少し大変です。&lt;br /&gt;
&lt;br /&gt;
購入当初は汚れが酷く、電圧計も壊れていたのですが、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6Q6VFR_DEoGvPSW4amMPphZdFJ8nexF5k7PxIQjlwQhm5zyXm9rYpruo22eWNvLsk1bQHXZ7N1PexmtnMLUc9D1qeKxJAUnMzDpnRZmejTSSd62SjK55yuyjOFFSRssdY2d11qJqBs8/s1600/DSC02865.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6Q6VFR_DEoGvPSW4amMPphZdFJ8nexF5k7PxIQjlwQhm5zyXm9rYpruo22eWNvLsk1bQHXZ7N1PexmtnMLUc9D1qeKxJAUnMzDpnRZmejTSSd62SjK55yuyjOFFSRssdY2d11qJqBs8/s320/DSC02865.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx4YR3JUsZIa_LgvxWAAFokr0ffCVry7NKPbwMGzXDHXb6n2U0EF18VyDnphmYyiIyevAlz7mCVCED_m98-L2MvK8IdgQS1VJ0dXJztUszSluqrN3tWJocGEjJP4K0jXvvqp5jmx_44_U/s1600/DSC03094.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx4YR3JUsZIa_LgvxWAAFokr0ffCVry7NKPbwMGzXDHXb6n2U0EF18VyDnphmYyiIyevAlz7mCVCED_m98-L2MvK8IdgQS1VJ0dXJztUszSluqrN3tWJocGEjJP4K0jXvvqp5jmx_44_U/s320/DSC03094.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
分解してケースのサビを取って内面をゴム塗料で塗装し、&lt;br /&gt;
※プラスティディップは正義&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhly-HBO8dVy-Q0l6Jr6uWEr4dsiCGNdvDSKq7YehLfaC0L0tmEJIUWhd2XViGyPjdJSDGawaozi4MCT5Ve8BHoSlaoowDfQXsGve_GcSC21BsVsOwYYROk8q-amqfI6Hq1zEhdIiWKZkY/s1600/DSC03098.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhly-HBO8dVy-Q0l6Jr6uWEr4dsiCGNdvDSKq7YehLfaC0L0tmEJIUWhd2XViGyPjdJSDGawaozi4MCT5Ve8BHoSlaoowDfQXsGve_GcSC21BsVsOwYYROk8q-amqfI6Hq1zEhdIiWKZkY/s320/DSC03098.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
バッテリーケーブルを作りなおして、&lt;br /&gt;
※ホルダーを買った時の余りのキャブタイヤケーブルで作りました&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-PpgNnNwT50HJJjMJYY4wC-OOygD4v5bD-vKh-TAd47EPGdpQ5s3Nd7Cq92t8lnwgNUXKy2xFFEFMHm8PfkAWx3MRztVea8vu-KElpKZlTYZvCfQGdbPN__zYaGKLYlv7XFYPT6sRfL8/s1600/DSC03095.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-PpgNnNwT50HJJjMJYY4wC-OOygD4v5bD-vKh-TAd47EPGdpQ5s3Nd7Cq92t8lnwgNUXKy2xFFEFMHm8PfkAWx3MRztVea8vu-KElpKZlTYZvCfQGdbPN__zYaGKLYlv7XFYPT6sRfL8/s320/DSC03095.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
回路部のホコリ(ヒューム？)を除去し、&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpS-8G9y1T0VJF5bUmOlmf1S6NY4kEd_4U6J3m1lZyP9JKGTIxlocCdw75ziaUzJu21mOHee6k3NFzDluhBYi_He02n4ay_WH8RnuIiF2NrjcWV2B7O1MCpR9Y7lsWH-odO1jf8K-xV68/s1600/DSC03106.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpS-8G9y1T0VJF5bUmOlmf1S6NY4kEd_4U6J3m1lZyP9JKGTIxlocCdw75ziaUzJu21mOHee6k3NFzDluhBYi_He02n4ay_WH8RnuIiF2NrjcWV2B7O1MCpR9Y7lsWH-odO1jf8K-xV68/s320/DSC03106.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
電圧計の中身を汎用品から移植して、&lt;br /&gt;
※中に入っている抵抗器だけ元の電圧計のものを使うことで、元の目盛りに合わせて針が動くようになりました&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv9tkFqkx5XvaUloqKBE2CXnl26tXRyZY-ynVSbxKGPVzjOue6Vj0Xik0lsjKUZPG3SXxUA6KEyr5yQ6ohe4G5zLesEMdixvksjOap85TSpHxk9xI5jYkQe5Hx18P-53Cy45o3dBzhUi4/s1600/DSC03108.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv9tkFqkx5XvaUloqKBE2CXnl26tXRyZY-ynVSbxKGPVzjOue6Vj0Xik0lsjKUZPG3SXxUA6KEyr5yQ6ohe4G5zLesEMdixvksjOap85TSpHxk9xI5jYkQe5Hx18P-53Cy45o3dBzhUi4/s320/DSC03108.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
不自由なく使える状態になりました。&lt;br /&gt;
バッテリーも生きていたようで、特に交換はしていません。&lt;br /&gt;
&lt;br /&gt;
また、溶接を始めるにあたって、溶接機以外にも&lt;br /&gt;
&lt;br /&gt;
- ホルダー、アースケーブル&lt;br /&gt;
- 溶接面&lt;br /&gt;
- スズキッド手棒溶接セット(エプロン、手袋など)&lt;br /&gt;
- 2.0mmの溶接棒&lt;br /&gt;
- 作業台兼アース用の鉄板&lt;br /&gt;
- スパッタシート&lt;br /&gt;
- 自作の衝立&lt;br /&gt;
&lt;br /&gt;
を用意しました。&lt;br /&gt;
※通算は溶接機込で6万円ほどですかね… ホルダー、アースケーブルが予想以上に高かったです&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRg7SBgOn7d_p2ZhIrChgFZkSo_vckHbayMR4XgsRCjhxaoFGscRBBh_ZLj8FTVCiX8tPehWul6UQMh1Wn29akqmNLH8IBf3IlLln13qt3Yd9nSduQ2ihp3QtygdVlU-wNK1Cx7sDRWI/s1600/DSC03304.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRg7SBgOn7d_p2ZhIrChgFZkSo_vckHbayMR4XgsRCjhxaoFGscRBBh_ZLj8FTVCiX8tPehWul6UQMh1Wn29akqmNLH8IBf3IlLln13qt3Yd9nSduQ2ihp3QtygdVlU-wNK1Cx7sDRWI/s640/DSC03304.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
残念ながら家には庭がないのでベランダで溶接作業をしたのですが、音や煙などはそれほど近所迷惑にならない印象でした。例えるなら、&lt;b&gt;ちょっと花火をするぐらいの感じ&lt;/b&gt;です。むしろケースのサビ取り時にディスクグラインダーを使った時のほうがよっぽど近所迷惑でしたね…&lt;br /&gt;
※ただ、強力な紫外線がでるので、それについては配慮が必要だと思います。&lt;br /&gt;
&lt;br /&gt;
実際に溶接機を使って、キット付属の練習用端材を溶接してみました。&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWhxHvIePVmxyIn_DNKa8CV9UZG4sdYySts9g9EqUux0HlnfndPcN8v2VXTaH124WEx57KF3ZVZUBtwx-m3RoCVUhcSuqNVQgI5kdqddTt4hchyWCYx2xTLbjF7Wod7tLQH3H1LLmt1U/s1600/DSC03307.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWhxHvIePVmxyIn_DNKa8CV9UZG4sdYySts9g9EqUux0HlnfndPcN8v2VXTaH124WEx57KF3ZVZUBtwx-m3RoCVUhcSuqNVQgI5kdqddTt4hchyWCYx2xTLbjF7Wod7tLQH3H1LLmt1U/s320/DSC03307.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;…これはひどい&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
初めてにしてももう少しなんとかならなかったのか。&lt;br /&gt;
&lt;br /&gt;
溶接機のパワーは充分あるのですが、アークスタートも維持も安定せずまだまだ練習が必要ですね。これからも隙を見てチャレンジしていきたいです。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
今回初めて溶接にチャレンジしてみたのですが、鉄が溶けてくっつくのを間近で体験するのはとても新鮮で、ものづくりの幅が広がった気がしました。&lt;br /&gt;
&lt;br /&gt;
まだまだDIYの中でも敷居が高く思える溶接ですが、実際やってみると意外と簡単にできちゃう感じです。この投稿が、これから日曜溶接DIYにチャレンジされる方の後押しになればと思います。</description><link>http://mohammedari.blogspot.com/2015/12/diy.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMol07Cvw3JP_VkoE-ZSNm55yWBpU7i4NacerwQxjnU0h9Zi45b_BgB48ct88gF3Fykurm2bNC9N-WyFx__teW1GMQ9nIe4MYM7bEq8hvV1F3MEsbOBGJlsUNMgSp5J-0gSt_TrnMb078/s72-c/DSC03309.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-6487152629499062971</guid><pubDate>Fri, 17 Jul 2015 17:27:00 +0000</pubDate><atom:updated>2015-07-21T00:11:29.520+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ARM</category><category domain="http://www.blogger.com/atom/ns#">C++</category><category domain="http://www.blogger.com/atom/ns#">mbed</category><title>mbedを使って女子高生に囲まれた話</title><description>高校で教師をしている大学同期の繋がりで、先日&lt;a href=&quot;http://www.fk.ocha.ac.jp/report/2015/0528_1841.html&quot;&gt;とある女子校&lt;/a&gt;で講演をする機会をいただきました。&lt;br /&gt;
&lt;br /&gt;
テーマは「&lt;b&gt;ものづくりの面白さ&lt;/b&gt;」で、「&lt;b&gt;女子校生ウケする話をしてくれ&lt;/b&gt;」という振りに答えるべく、職場の先輩たちと3人で講義に行き、授業時間2コマの間、生徒さんたちと向き合ってきました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;400&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;https://www.slideshare.net/slideshow/embed_code/key/jq6gJq70m4AmlS&quot; width=&quot;476&quot;&gt;&lt;/iframe&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;※このスライドは講義で使用したものではなく、mbed祭り2015にてその様子をLTした時のものになります&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
また、その際に「&lt;b&gt;ものづくりの講義をするからには何か作って持って行くべきだろう&lt;/b&gt;」と思い立ち、mbedを使ってミクが歌う楽器のような物を作っていきました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG-GR2ACFxpfV_RWmytFffHzIJ27Iz7Ep9rUYrx5Uw-nCBWkp__ZHPvUbHnrl0vdbQgLaJYjEfOaMYZCvKdy7bD8abaVyGkff23ktNlUu7AxGxVFwrJabgTmNvgkkDUgRdZc4OqGlOxJM/s1600/_DSC1489.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG-GR2ACFxpfV_RWmytFffHzIJ27Iz7Ep9rUYrx5Uw-nCBWkp__ZHPvUbHnrl0vdbQgLaJYjEfOaMYZCvKdy7bD8abaVyGkff23ktNlUu7AxGxVFwrJabgTmNvgkkDUgRdZc4OqGlOxJM/s320/_DSC1489.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;手の高さで音程を取り、フットペダルとボタンでリズムを刻むとミクが歌ってくれます&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
このミクの楽器がなかなか好評で、休み時間には教卓の周りに人だかりができ、生まれて初めて&lt;b&gt;女子高生に囲まれる&lt;/b&gt;という経験ができました。&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;※mbedを使えばモテるというのは本当だったみたいです&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
また、二コマ目はちょっとしたワークショップを開催し、生徒さんに実際に手を動かしてもらう機会を設けました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL3og49qdAvW9iqVALJJixt1IcGQgHbqoXntE4J7IlhJBiwWlbftnTS-qf9ZLScojAUaI8zoiNBRRl-AwiRSkYiakSvKvqbJil7BZT641dF2i2pwscTKOQTU0ScP5QtW5onOhs1fDb9-E/s1600/lightning-print-club-three-steps.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;188&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL3og49qdAvW9iqVALJJixt1IcGQgHbqoXntE4J7IlhJBiwWlbftnTS-qf9ZLScojAUaI8zoiNBRRl-AwiRSkYiakSvKvqbJil7BZT641dF2i2pwscTKOQTU0ScP5QtW5onOhs1fDb9-E/s320/lightning-print-club-three-steps.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;作ってもらったのは「光るプリクラ」で、AgICペンと呼ばれる導電性インクのペンで回路を描き、シールのLEDを貼って写真を重ねて貼るといった構造になっています。USBモバイルバッテリーに刺すと写真が光ります&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEq_qCk2rNU0AnwRUOpxxC_Ou-DW8GOa8dwgo7iM17fDdeN_01xqdYZVaFkSQveuaNuUGxoi02u2UDZEhCzbvUEgfgqPL6uskGuyqC9wekjp-5VBFAbL4gCB9qd10G7ekMRVSeSX1pQsE/s1600/workshop-mozic.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEq_qCk2rNU0AnwRUOpxxC_Ou-DW8GOa8dwgo7iM17fDdeN_01xqdYZVaFkSQveuaNuUGxoi02u2UDZEhCzbvUEgfgqPL6uskGuyqC9wekjp-5VBFAbL4gCB9qd10G7ekMRVSeSX1pQsE/s320/workshop-mozic.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;1人1枚好きな写真を持参してもらい、自分オリジナルの作品を作ってもらいました&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
実際に手を動かしてもらうことで、ものづくりの楽しさや、「&lt;b&gt;なんかよくわかんないけどテクノロジーを学んだら面白いことができそうな気がする感&lt;/b&gt;」みたいなものは伝えられたんじゃないかなと思いました。&lt;br /&gt;
&lt;br /&gt;
実際、授業のあとに採ったアンケートではほとんどの方が「&lt;b&gt;またなにか物作りをしてみたい&lt;/b&gt;」と回答してくれたのは、素直にうれしかったです。&lt;br /&gt;
&lt;br /&gt;
講義をしてみるまでは、「&lt;b&gt;ウケなかったらどうしよう&lt;/b&gt;」と内心心配していたのですが、予想の300％ぐらい食いつきがよかったです。この年代の子たちにとって自分からMakerイベントやワークショップに参加しないと、なかなかモノつくりに触れる機会はないと思いますが、実際に見て触って手を動かしてみることで「&lt;b&gt;あ、これなんか楽しい&lt;/b&gt;」って思ってもらえたんじゃないでしょうか。&lt;br /&gt;
今回お邪魔した学校に限らず、是非日本中の学校でこういった取り組みを続けて欲しいと思いますね。&lt;br /&gt;
&lt;br /&gt;
最後に、私に話を持ちかけてくれた同期M氏、このような機会をいただけたお茶の水女子大学付属高校学校の先生方、講演を一緒に成功に導いてくれた先輩方、目を輝かせながら話を聞いてくれた生徒さんたちにお礼を申し上げます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;P.S. Makerの方々、高校に作ったガジェットを持って行くと女子校生に囲まれることができるので、是非お試しあれ！&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2015/07/mbed.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG-GR2ACFxpfV_RWmytFffHzIJ27Iz7Ep9rUYrx5Uw-nCBWkp__ZHPvUbHnrl0vdbQgLaJYjEfOaMYZCvKdy7bD8abaVyGkff23ktNlUu7AxGxVFwrJabgTmNvgkkDUgRdZc4OqGlOxJM/s72-c/_DSC1489.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-7133952469772277499</guid><pubDate>Sat, 17 Jan 2015 16:21:00 +0000</pubDate><atom:updated>2015-01-19T01:53:21.490+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Depth Sensing</category><title>Kinect 360を使ってRTAB-mapで部屋を3Dスキャンしてみた</title><description>&lt;a href=&quot;http://introlab.github.io/rtabmap/&quot;&gt;RTAB-map&lt;/a&gt;という3次元スキャンアプリケーションが面白そうだったので、手元にインストールして動かしてみました。動作させた環境はWindows8 + Kinect 360です。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
まず、&lt;a href=&quot;https://github.com/introlab/rtabmap/wiki/Installation#win64-binaries&quot;&gt;公式チュートリアルのWin64 Binaries&lt;/a&gt;に従ってインストールを行います。&lt;br /&gt;
&lt;br /&gt;
1) Open NIのインストール&lt;br /&gt;
2) PrimeSense Sensorをインストール&lt;br /&gt;
3) rtabmapをインストール&lt;br /&gt;
&lt;br /&gt;
ところが、Windows 8を使っている場合、この状態でKinect 360を接続してrtabmapを起動してもSouceを選択する段階で、&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;OpenNI PCLを選ぶと強制終了&lt;/li&gt;
&lt;li&gt;OpenNI CVを選ぶと、&quot;Camera initialization failed...&quot;とでて、ログには&quot;CaptureRGBD: Failed to create a capture object!&quot;と表示&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
で、失敗してしまいます。&lt;br /&gt;
&lt;br /&gt;
これは、Kinect 360のドライバが正しくインストールされていない時に起こる問題のようです。&lt;br /&gt;
Windows 8 では署名されていないドライバがインストールできなくなってしまったので、&lt;br /&gt;
通常の方法ではPrimeSenseのKinect 360ドライバをインストールすることができません&lt;br /&gt;
&lt;br /&gt;
なので、&lt;a href=&quot;http://freesoft.tvbok.com/win8/testmode.html&quot;&gt;このページ&lt;/a&gt;を参考に、&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;テストモードへの移行 *1&lt;/li&gt;
&lt;li&gt;ドライバー著名の矯正を無効化 *2&lt;/li&gt;
&lt;li&gt;Windows Smart Screenの無効化&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
をする必要があります。&lt;br /&gt;
&lt;br /&gt;
*1) これはやらなくても大丈夫なようです&lt;br /&gt;
*2) Win8.1では、[チャーム]&amp;gt;[設定]&amp;gt;[PCの設定変更]&amp;gt;[保守と管理]&amp;gt;[回復]&amp;gt;[今すぐ再起動する]&amp;gt;[トラブルシューティング]&amp;gt;[詳細オプション]&amp;gt;[スタートアップ設定]です&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
すべての手順を実行したら、C:\Program Files\OpenNI\Driverにあるドライバを実行すればRTAB-mapを実行する準備が整います。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
インストールが完了したら、あとは&lt;a href=&quot;https://github.com/introlab/rtabmap/wiki/Kinect-mapping&quot;&gt;公式チュートリアル&lt;/a&gt;に沿って実行すれば簡単に3Dスキャンが行えます。&lt;br /&gt;
&lt;br /&gt;
まず、FileからNew databaseで新しいデータベースを作ります。&lt;br /&gt;
※最初にこれをしないと次以降の作業ができないので注意してください。&lt;br /&gt;
&lt;br /&gt;
RTAB-mapはこのデータベースによって各スキャンの対応する特徴点をグラフで管理しているようです。特徴点ベースでループを見つけたら、グラフ全体を補正して整合性を保とうとします。これによって、スキャンの際に歪みが蓄積されないようになっています。&lt;br /&gt;
&lt;br /&gt;
次に、Detection &amp;gt; Select Sourceから、Select Sourceを選びます&lt;br /&gt;
OpenNI PCLと、OpenNI CVが選べるのですが、PCLのほうだとたまに落ちることがあったので私はOpenNI CVを使っています。&lt;br /&gt;
&lt;br /&gt;
この状態でStartすれば、部屋の3次元スキャンを行うことができます。&lt;br /&gt;
&lt;br /&gt;
スキャンの際の留意点なのですが、SURFでの特徴量抽出を行って2枚の点群をマッチングしているので、素早く回転したり、特徴点が抽出しにくい(白い壁など)環境だと自己位置を見失ってしまします。&lt;br /&gt;
&lt;br /&gt;
ただ、特徴点が多くサンプリングできるようなごちゃごちゃした環境( == 私の机の周り)ですと、ほとんどロストすることはありませんでした。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTiQTjSnvTrWXg33m-dH7otLzADGZUUf8TWMFT1LpfJkQSFqB-OwNi5jXygC4nrxp6xsfoxrOb0FsvsZZM-BWHiPuQKDocXj3Wxtx6ZU9bxsNhXbTmMv12l-GVjKlHJU-TtCm-scX5Gc/s1600/room01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTiQTjSnvTrWXg33m-dH7otLzADGZUUf8TWMFT1LpfJkQSFqB-OwNi5jXygC4nrxp6xsfoxrOb0FsvsZZM-BWHiPuQKDocXj3Wxtx6ZU9bxsNhXbTmMv12l-GVjKlHJU-TtCm-scX5Gc/s1600/room01.png&quot; height=&quot;285&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
実行画面はこんな感じになります。左上が直前のシーンの特徴点情報、左下がループ検出結果、右側が各シーンを合成した3次元スキャン結果です。ビューワも軽いのでグリグリ動きます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOPhxtDGo6i_lL9Eop8F-n-aE7D0osoDHTBAEnldOsmppgAUV_Qu75awdKrMzbXnPfie2CV5Jt7x9pGgFoOqt7cL9O7HEfSPk3DXsKSaYZ0ZmVvI6btKoI3nbcZCsl2_WfiJt8EzY0y2I/s1600/room02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOPhxtDGo6i_lL9Eop8F-n-aE7D0osoDHTBAEnldOsmppgAUV_Qu75awdKrMzbXnPfie2CV5Jt7x9pGgFoOqt7cL9O7HEfSPk3DXsKSaYZ0ZmVvI6btKoI3nbcZCsl2_WfiJt8EzY0y2I/s1600/room02.png&quot; height=&quot;286&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
少し引いてみてみると、ループ検出のお陰で部屋がしっかり四角くスキャンされているのがわかります。&lt;br /&gt;
&lt;br /&gt;
File &amp;gt; Exports 3D cloudsを選べば、*.ply, *.pcd形式で点群を出力することができます。&lt;br /&gt;
出力時のオプションでボクセル化やメッシュ化することもできるので、3Dソフトウェアで扱う際に重宝しそうです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDRWYW6qOyQDbT8BNNv7HIbboyct7rns4HWqXNCXVzDkNnLhtFA79Eh-gKXfXoIsYTz06ud5ausFbur92uj9Ri5GGcUbsAeNoN0R7aH1acWjPZya6kmHTQDnBlokX63NQ_eZM56Txxg5A/s1600/room03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDRWYW6qOyQDbT8BNNv7HIbboyct7rns4HWqXNCXVzDkNnLhtFA79Eh-gKXfXoIsYTz06ud5ausFbur92uj9Ri5GGcUbsAeNoN0R7aH1acWjPZya6kmHTQDnBlokX63NQ_eZM56Txxg5A/s1600/room03.png&quot; height=&quot;310&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
先ほどのスキャン点群をボクセル化 + メッシュ化するとこのような感じになります。&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定だとだいたい100万ポリゴンぐらいのデータになります。&lt;br /&gt;
ただ、ボクセルサイズを大きくすれば点群を間引くことができるので、Unityなどで使う場合にはエクスポートの設定をいじったほうが良いと思います。&lt;br /&gt;
&lt;br /&gt;
公式ページの動画ではかなりきれいなマップが出来たのですが、手元で実行した限りだとループ検出がうまく働かない場合があるようでした。Kinectの最小検出距離もあるので、もう少し広い環境で試してみたらもっときれいなマップができるかもしれません。</description><link>http://mohammedari.blogspot.com/2015/01/kinect-360rtab-map3d.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmTiQTjSnvTrWXg33m-dH7otLzADGZUUf8TWMFT1LpfJkQSFqB-OwNi5jXygC4nrxp6xsfoxrOb0FsvsZZM-BWHiPuQKDocXj3Wxtx6ZU9bxsNhXbTmMv12l-GVjKlHJU-TtCm-scX5Gc/s72-c/room01.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-3068752756392593751</guid><pubDate>Mon, 29 Sep 2014 15:06:00 +0000</pubDate><atom:updated>2015-01-18T01:25:02.481+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Make</category><title>持ち運べる高性能GPUデスクトップを組んでみました</title><description>最近Oculus Riftでデモする際など、出先でハイスペックなPCが必要になる機会が増えてきました。&lt;br /&gt;
&lt;br /&gt;
Alienware欲しいなぁ、でも高いしなぁ…なんてことを思いながら、ただ高いPCを買うだけなのもつまらないとPE-4CでeGPUに手を出したりしてみたのですが、PCIEx1の帯域がボトルネックになってUnityでのパフォーマンスがでず…&lt;br /&gt;
(eGPUについては後で別エントリにまとめるかもしれません、質問等あれば@でもどうぞ)&lt;br /&gt;
&lt;br /&gt;
結局、持ち運べるぐらいの大きさのデスクトップPCを組みたてました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFxjGLCUO3EAL4NI7L3wj7dQv8IaLgujPWDgclsBu-iiFCMs8r7ki-Rr7z7Z20nGMcYbDatFIFdPRQ4eEFGAk1Nfrgxg8QrvGmK-coCT4AuBHCjd3bSAnHnFtDwNWiwiXqfcwbFarMWb8/s1600/_DSC9567.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFxjGLCUO3EAL4NI7L3wj7dQv8IaLgujPWDgclsBu-iiFCMs8r7ki-Rr7z7Z20nGMcYbDatFIFdPRQ4eEFGAk1Nfrgxg8QrvGmK-coCT4AuBHCjd3bSAnHnFtDwNWiwiXqfcwbFarMWb8/s1600/_DSC9567.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_2032435371&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_2032435372&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
CPUはHaswell Refreshのi5低消費電力版、マザボはmini ITX、メモリは8GB、ストレージはSSD+HDD(の、予定でした…)、GPUはeGPU用に用意したTDP 195WのPalit GTX760、電源はSFXのPlugin 500Wです。&lt;br /&gt;
です。&lt;br /&gt;
※今思えば、結局HDDも光学ドライブも積んでないのでCPUは通常版で問題なかったかもしれません&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; dir=&quot;ltr&quot; style=&quot;border-collapse: collapse; border: 1px solid #ccc; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;/col&gt;&lt;col width=&quot;256&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;CPU&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;CPU&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;Intel Core i5 4590S&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/B00J6F5LHM/ref=oh_details_o01_s00_i00?ie=UTF8&amp;amp;psc=1&quot;&gt;Intel Core i5 4590S&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u30de\u30b6\u30fc\u30dc\u30fc\u30c9&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;マザーボード&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;ASUSTeK H97I-PLUS&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/B00K2R6BZE/ref=oh_details_o02_s00_i00?ie=UTF8&amp;amp;psc=1&quot;&gt;ASUSTeK H97I-PLUS&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u30e1\u30e2\u30ea&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;メモリ&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;CFD Elixir DDR3-1600 4GBx2&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/B0068UO1U6/ref=oh_details_o02_s01_i01?ie=UTF8&amp;amp;psc=1&quot;&gt;CFD Elixir DDR3-1600 4GBx2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u30b9\u30c8\u30ec\u30fc\u30b8&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;ストレージ&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;Samusung SSD 128GB (\u524dPC\u304b\u3089\u5f15\u7d99)&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;Samusung SSD 128GB (前PCから引継)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30ab\u30fc\u30c9&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;グラフィックカード&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;Palit GTX760 (eGPU\u7528\u306b\u8cfc\u5165\u3057\u305f\u3082\u306e)&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;Palit GTX760 (eGPU用に購入したもの)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u96fb\u6e90&amp;quot;]&quot; style=&quot;background-color: #cfe2f3; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;電源&lt;/td&gt;&lt;td data-sheets-value=&quot;[null,2,&amp;quot;\u938c\u529b\u30b4\u30fc\u30eb\u30c9SFX\u30d7\u30e9\u30b0\u30a4\u30f3 500W&amp;quot;]&quot; style=&quot;border-bottom: 1px solid #000000; border-right: 1px solid #000000; padding: 2px 3px 2px 3px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/B00LCKZ6O2/ref=oh_details_o02_s00_i01?ie=UTF8&amp;amp;psc=1&quot;&gt;鎌力ゴールドSFXプラグイン 500W&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
ケースは手持ちのグラボがぎりぎり入る&lt;a href=&quot;http://www.silverstonetek.com/product.php?pid=210&amp;amp;area=jp&quot;&gt;Silverstone SG-05 Lite&lt;/a&gt;をチョイスしてみました。このケースはハイエンドGPUを少ない容積に詰め込むことをコンセプトにしているようで、シャドウベイが少ない代わりにギリギリまでケースの大きさが詰められてます。&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.silverstonetek.com/images/memo/SG05-Remark.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
ただ、このケース、公式では10inchのグラボまでOKと書かれていますが、実際のところ240mmのPalit GTX760でギリギリです。ケースファンを外して、グラボを斜めにするとなんとか入れることができました。というか、プラスチックのハウジングがケースに干渉してるので若干無理に押し込んでます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRwmdioJi4nlD6X9kySX8okqAdrJKX8dC2WOrgy8ROK_SfS_UMdr4UlvXQYtt2OsAkXZfCc-N_NN7u9_PPCZu1PRLVGkjW3OUNUrVH2qx6IOEp1l-qCnEnTvQzjFTLLDN9Fs3-Nk71x4/s1600/_DSC9564.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRwmdioJi4nlD6X9kySX8okqAdrJKX8dC2WOrgy8ROK_SfS_UMdr4UlvXQYtt2OsAkXZfCc-N_NN7u9_PPCZu1PRLVGkjW3OUNUrVH2qx6IOEp1l-qCnEnTvQzjFTLLDN9Fs3-Nk71x4/s1600/_DSC9564.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
そしてグラボもなんとか取り付け終わってあとはストレージを取り付けるだけというところで、今回最大の問題が…&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;なんとプラグイン電源が干渉してシャドウベイが取り付けられません！！！&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYmLG2jaH8Kz7cR3DrNoTYXa1mgsK83tHTXCZ4oKRXiOrsSTY6eGf6_l2XC-77gse1EAHgvo2z1EaWx8HQzm3NVGb71M2An15cDVPV_ttcWtv-lOJ3dNLCOMtn7oFfWHFmyskxlzmwGVM/s1600/_DSC9565.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYmLG2jaH8Kz7cR3DrNoTYXa1mgsK83tHTXCZ4oKRXiOrsSTY6eGf6_l2XC-77gse1EAHgvo2z1EaWx8HQzm3NVGb71M2An15cDVPV_ttcWtv-lOJ3dNLCOMtn7oFfWHFmyskxlzmwGVM/s1600/_DSC9565.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
もうこの大きさは無理やり押し込むとかそういうレベルじゃないですね…&lt;br /&gt;
&lt;br /&gt;
どうもこのケースは奥行き100mmのSilverstone純正電源に合わせて作られているようで、通常の奥行き130mm電源ではどう頑張ってもシャドウベイが干渉するようです。さらに私はプラグイン電源を選択したのでシャドウベイに細工したぐらいじゃどうにもならない状態に…&lt;br /&gt;
&lt;br /&gt;
結局、アルミ板でSSDのマウンタを自作し、SSDはなんとか中に入れることが出来ました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSeka0jxZaJ8HJ1TCZTYyz1k3aUKx_RoQ1ErSj7jD6K2QNHy9qzHCqbh4ci45N6ASdZirNf-Gz0O8SgBmJT_fzuKt4MnFBPIexS9F_yjyzIjmhzrmT59dbPLOr7gIS0FcrVJdwYiTUh7Q/s1600/_DSC9558.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSeka0jxZaJ8HJ1TCZTYyz1k3aUKx_RoQ1ErSj7jD6K2QNHy9qzHCqbh4ci45N6ASdZirNf-Gz0O8SgBmJT_fzuKt4MnFBPIexS9F_yjyzIjmhzrmT59dbPLOr7gIS0FcrVJdwYiTUh7Q/s1600/_DSC9558.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
まぁHDDはUSB3.0のケースがありますし、ドライブも外付けで十分なので軽量化できたぶん結果オーライですかね？&lt;br /&gt;
※若干ケースの剛性が気になりますが…&lt;br /&gt;
&lt;br /&gt;
持ち運びに関しては、当初はバックパネルの隣に取っ手をつけて、岡持ちみたいに持ち運べればいいかなぁと考えていたのですが…あまりにケースが華奢でぐにゃぐにゃ曲がるので不安になり、大型のカメラケースに入れて持ち運ぶことにしました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrt0oYMb1zGhWByM3yKHHYu8taqTiMER_f5rs6us7mlIMdkGA4ENP_R2Py2byUf7pRnZwopybZ-ZILM7rsxBvfHJmMVJd7PghrgftLYAmfoBY_ljmT-f9tby4wHLiTKRpI2LOuz5Rjai4/s1600/_DSC9563.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrt0oYMb1zGhWByM3yKHHYu8taqTiMER_f5rs6us7mlIMdkGA4ENP_R2Py2byUf7pRnZwopybZ-ZILM7rsxBvfHJmMVJd7PghrgftLYAmfoBY_ljmT-f9tby4wHLiTKRpI2LOuz5Rjai4/s1600/_DSC9563.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/gp/product/B00CYZAL44/ref=oh_details_o00_s00_i00?ie=UTF8&amp;amp;psc=1&quot;&gt;ケンコーのaosta Frontana Lサイズ&lt;/a&gt;です。こちらも超ギリギリのピッタリサイズ、というかギリギリアウトのサイズなので、ファスナーがぶっ壊れないように慎重かつ大胆に無理やり閉めないと入りません。&lt;br /&gt;
※このままだとその内ファスナーが壊れそうなので、もう一回り大きいものを購入されることをおすすめします…&lt;br /&gt;
&lt;br /&gt;
これで今まで懸案事項だったデモの際のPCスペック不足も解決出来たので、どこでもデモにいけるようになりました！</description><link>http://mohammedari.blogspot.com/2014/09/gpu.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFxjGLCUO3EAL4NI7L3wj7dQv8IaLgujPWDgclsBu-iiFCMs8r7ki-Rr7z7Z20nGMcYbDatFIFdPRQ4eEFGAk1Nfrgxg8QrvGmK-coCT4AuBHCjd3bSAnHnFtDwNWiwiXqfcwbFarMWb8/s72-c/_DSC9567.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-2852633634059310360</guid><pubDate>Sun, 10 Aug 2014 15:00:00 +0000</pubDate><atom:updated>2014-08-13T12:02:30.240+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Haptics</category><category domain="http://www.blogger.com/atom/ns#">Make</category><category domain="http://www.blogger.com/atom/ns#">Oculus Rift</category><category domain="http://www.blogger.com/atom/ns#">Unity</category><title>VRで女の子に歯磨きするまでにやったこと</title><description>※この記事は&lt;a href=&quot;http://unityassetjp.doorkeeper.jp/events/12843&quot;&gt;Unityアセット真夏のアドベントカレンダー2014&lt;/a&gt;参加記事です&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
長い人生の中で、誰しもが一度は&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: center;&quot;&gt;
『&lt;b&gt;可愛い女の子に歯磨きしたい&lt;/b&gt;』&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
という思いに駆られるんじゃないでしょうか&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
----------&lt;/div&gt;
&lt;br /&gt;
ただ、リアルでそれを実現するのはなかなか難しいですよね……このご時世、下手なことしたら捕まっちゃいます。&lt;br /&gt;
&lt;br /&gt;
でも安心してください！&lt;b&gt;我々にはVRがあります！&lt;/b&gt;先日、&lt;a href=&quot;http://shock-a-thon.doorkeeper.jp/events/12776&quot;&gt;触覚ハッカソン2014&lt;/a&gt;で、私たちのチーム&lt;a href=&quot;https://makershub.jp/make/228&quot;&gt;『VRで女の子に歯磨きしたい』&lt;/a&gt;が皆さんの夢を叶えてきました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/d3nQTQ2up34?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;頭 が ど う か し て ま す ね&lt;/b&gt;。本当にありがとうございます。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
今回のデモ、VR歯磨きでは、以下のような機能を実装しました&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ヘッドマウントディスプレイを被ると、目の前に女の子が座っています&lt;/li&gt;
&lt;li&gt;VR空間の中の歯ブラシが手に持った歯ブラシと連動して動きます&lt;/li&gt;
&lt;li&gt;歯ブラシを差し出すとそれを女の子が咥えます&lt;/li&gt;
&lt;li&gt;歯磨きの&lt;b&gt;擬似触覚&lt;/b&gt;が手に伝わります&lt;/li&gt;
&lt;li&gt;出し入れすると白い歯磨き粉が出てきます&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
※言葉で表現するとより猟奇的ですね… 最後の白い歯磨き粉は本当に必要だったのか…&lt;br /&gt;
&lt;br /&gt;
擬似触覚を実現するにあたり、触覚ハッカソンではKMDの南澤先生から&lt;b&gt;&lt;a href=&quot;http://www.techtile.org/techtiletoolkit/&quot;&gt;TECTILE toolkit&lt;/a&gt;&lt;/b&gt;という触覚デバイスをお借りしました。入力歯ブラシからサンプリングした振動を、体験者の持つ出力歯ブラシに伝えることで、体験者はあたかも実際に歯を磨いているかのような振動を感じることができます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKfsSLD7Cx-MutN3RakcWIgqwaWDLJq7EEDF_TeryyQ2cz0GuhpOyI21pW05aARbjK2W4v1lQYKE5XNe9D6rbCoh99NUb6gu3H5wSucngfDsecoc1zh6c-tHBhzXAPEROKkb6NFvumfY/s1600/2brush-detail.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKfsSLD7Cx-MutN3RakcWIgqwaWDLJq7EEDF_TeryyQ2cz0GuhpOyI21pW05aARbjK2W4v1lQYKE5XNe9D6rbCoh99NUb6gu3H5wSucngfDsecoc1zh6c-tHBhzXAPEROKkb6NFvumfY/s1600/2brush-detail.png&quot; height=&quot;296&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
※TECHTILE toolkitは一般販売もされていますし、&lt;span id=&quot;goog_281374257&quot;&gt;&lt;/span&gt;作り方がオープンソースで公開&lt;span id=&quot;goog_281374258&quot;&gt;&lt;/span&gt;されているのでDIYすることも可能です！詳しくは別エントリにまとめましたので、&lt;a href=&quot;http://mohammedari.blogspot.jp/2014/07/tectile-toolkit.html&quot;&gt;こちらの記事&lt;/a&gt;をどうぞ&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
デモの全体構成はこのような感じになってます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9dVDbyyOAklptibSXK1ZZc51dia-8fGy46zmNu_5bb1dgUGDj_ISVKDHyDAuFSYzSuehJCEyv7mX7Eo0UPg4CBaSUQ-8a9IVLL7WFrozECiYa8zdtwGnAp511T8UJMlZysRSNlGuB4Y0/s1600/whole.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9dVDbyyOAklptibSXK1ZZc51dia-8fGy46zmNu_5bb1dgUGDj_ISVKDHyDAuFSYzSuehJCEyv7mX7Eo0UPg4CBaSUQ-8a9IVLL7WFrozECiYa8zdtwGnAp511T8UJMlZysRSNlGuB4Y0/s1600/whole.png&quot; height=&quot;340&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
※Creative Gesture Cameraはデプスカメラとなっていて、物体までの距離を計測することができますが、今回は距離画像は利用せずにただのWebカメラとして利用しています。&lt;br /&gt;
&lt;br /&gt;
私が主に開発したのは歯ブラシコントローラの部分です。ProcessingからUDPで送られてくる複数のマーカー位置を座標変換し、すべてのマーカーから計算した位置をごっちゃにして指数移動平均で平滑化しています。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0cPyMeBjS-Aonq6VSLtFWMksyrWpsnEv0M5dCFC-dLATApXvTD3FGWC4nwQGhIhBwiRn94yzdotfkf0Y-v5HaXmMvpHtDpZCDxvHNVbio-PR_Pt37UVLhiex9u5D5KDbxWzxU8ZC4kTs/s1600/thumbnail_large_file.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0cPyMeBjS-Aonq6VSLtFWMksyrWpsnEv0M5dCFC-dLATApXvTD3FGWC4nwQGhIhBwiRn94yzdotfkf0Y-v5HaXmMvpHtDpZCDxvHNVbio-PR_Pt37UVLhiex9u5D5KDbxWzxU8ZC4kTs/s1600/thumbnail_large_file.png&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
※マルチマーカーで真面目にやるなら、&lt;a href=&quot;https://twitter.com/hecomi/status/483163669690212352&quot;&gt;凹みさんのフィルタ関数&lt;/a&gt;などをかけたほうがいいとは思いますが、時定数を大きく取れば問題なさそうなので上の方法で簡単に済ませています&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
VR歯磨きでは、主に2つのUnity Assetを利用させていただいきました。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;a href=&quot;http://unity-chan.com/&quot;&gt;Unityちゃん&lt;/a&gt;&lt;/h4&gt;
みんな大好きUnityちゃんです。Unity Asset Storeからダウンロードすることができます。モーション、表情モーフ、声と、非常に多くのアセットが付属しています。version 1.0から1.1に上がったタイミングで、ポーズが19種類、ボイスが343種類(&lt;b&gt;！&lt;/b&gt;)追加されています。初期バージョンしかDLしたことのない方は、ぜひDLしてみてください。&lt;br /&gt;
&lt;br /&gt;
VR歯磨きではポーズ19の体育座りを利用しています。また、歯ブラシが近づくとangry2モーションで口を開き、歯ブラシを口に入れるとsapモーションで口をすぼめるようにしています。本当にいろんなポーズとモーションが含まれており、どれを利用するかについてはチーム内でも議論の対象になりました。&lt;br /&gt;
&lt;br /&gt;
※ボイスに関してはチーム内でも議論になったのですが、あまりマニアックな声を設定しても一般受けしなくなってしまいそうなので、当り障りのないところに落ち着きました&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;a href=&quot;https://developer.oculusvr.com/&quot;&gt;Oculus&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;https://developer.oculusvr.com/&quot;&gt;Unity&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;https://developer.oculusvr.com/&quot;&gt;Integration&amp;nbsp;&lt;/a&gt;&lt;/h4&gt;
Oculus Rift向けの画像変換や、アセットです。Oculus VR社のページからダウンロードすることができます。樽型に歪ませる処理にImageEffectが使用されており、&lt;b&gt;Unity Proでないと実行することができない&lt;/b&gt;ので注意です。&lt;br /&gt;
&lt;br /&gt;
最近DK2の出荷に合わせて、version 0.0.4が出ました。Oculus Rift DK2はまだ購入していないのですが、是非とも機を見て購入したいですね。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;a href=&quot;http://sourceforge.jp/projects/nyartoolkit/releases/p12917&quot;&gt;NyAR Toolkit for Unity 3D&lt;/a&gt;&lt;/h4&gt;
また、ハッカソンでは使わなかったのですが、NyAR Toolkitには&lt;a href=&quot;http://nyatla.jp/nyartoolkit/wp/&quot;&gt;Unity用のパッケージも存在します&lt;/a&gt;。ハッカソンが終わったあと、このパッケージを用いてUnity上でARキューブを認識して歯ブラシを動かすところまで行うスクリプトを作ってみました！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj59s6RY3v74dWbOHNzB_s-HoBytaLdQqVxCHgktsMOdX2TiQ1RyqUSDcqiqS3mir3gsvSBstceAhm31_wmKcyxrZCzO-gJ9IBO3F4MM0a-YEnt7dkaa5eCGLX0jrnDXGHAEmdgBPZo_eg/s1600/unity-chan-hamigaki.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj59s6RY3v74dWbOHNzB_s-HoBytaLdQqVxCHgktsMOdX2TiQ1RyqUSDcqiqS3mir3gsvSBstceAhm31_wmKcyxrZCzO-gJ9IBO3F4MM0a-YEnt7dkaa5eCGLX0jrnDXGHAEmdgBPZo_eg/s1600/unity-chan-hamigaki.png&quot; height=&quot;221&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/mohammedari/UnityChan-Hamigaki-Sample&quot;&gt;&lt;b&gt;サンプルプロジェクトを用意しました&lt;/b&gt;&lt;/a&gt;ので使ってみてください。このスクリプトを使って、自由な発想で歯に限らず色んなものを磨いて頂けたらと思います。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
2日間という短い時間の中でプロトタイプを作るにあたって、Unityの表現力には本当に助けられました。ただ、モデルやエフェクトにこだわるあまり、デモにゲームとしての面白さがかけてしまっていたのが反省点です。今後はゲーム性も加えたデモ作りを目指していきたいですね。&lt;br /&gt;
&lt;br /&gt;
さて、本日のアドベントカレンダーは楽しんでいただけたでしょうか？アドベントレンダーに不慣れな上、さらにUnityアセットアドベントカレンダーと言いながらアセットあんまり関係ない記事で肩身が狭いです…&lt;br /&gt;
&lt;br /&gt;
明日は&lt;b&gt;K_U_&lt;/b&gt;さまより、「&lt;b&gt;FXMakerことはじめ&lt;/b&gt;」です！&lt;br /&gt;
よろしくおねがいします！&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;nbsp;&lt;a href=&quot;http://unityassetjp.doorkeeper.jp/events/12843&quot;&gt;Unityアセット真夏のアドベントカレンダー2014へ戻る&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記]&lt;/b&gt; 20140813&lt;br /&gt;
&lt;br /&gt;
触覚ハッカソン2014での様子が日経テクノロジーオンラインさんで&lt;a href=&quot;http://techon.nikkeibp.co.jp/article/NEWS/20140805/369221/&quot;&gt;記事になりました&lt;/a&gt;！</description><link>http://mohammedari.blogspot.com/2014/08/vr.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKfsSLD7Cx-MutN3RakcWIgqwaWDLJq7EEDF_TeryyQ2cz0GuhpOyI21pW05aARbjK2W4v1lQYKE5XNe9D6rbCoh99NUb6gu3H5wSucngfDsecoc1zh6c-tHBhzXAPEROKkb6NFvumfY/s72-c/2brush-detail.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-7597193762692297154</guid><pubDate>Sun, 27 Jul 2014 13:40:00 +0000</pubDate><atom:updated>2014-08-06T20:48:17.177+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Haptics</category><category domain="http://www.blogger.com/atom/ns#">Make</category><title>TECTILE Toolkitを作ってみた</title><description>最近、Oculus Riftを皮切りにVR空間に没入するコンテンツが増えてきました。&lt;br /&gt;
&lt;div&gt;
ヘッドトラッキングと視界を覆い尽くす映像、そしてバイノーラル音源のリアルな音による没入体験ができるようになりました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
すると次に欲しくなるのは…そう、触覚ですよね！&lt;/div&gt;
&lt;div&gt;
※味覚や嗅覚にも非常に興味があるのですが、ちょっとまだ実現は難しそうですよね&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
個人的に触覚フィードバックには興味を持っていて、8/2、8/3に開催される&lt;a href=&quot;http://shock-a-thon.doorkeeper.jp/events/12776&quot;&gt;触覚ハッカソン&lt;/a&gt;にも参加する予定です。&lt;/div&gt;
&lt;div&gt;
つい先日、その&lt;a href=&quot;http://shock-a-thon.doorkeeper.jp/events/12453&quot;&gt;触覚ハッカソンの事前説明会&lt;/a&gt;にも参加してきまして、いろいろな触覚デバイスを触ってきました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
その中でも特に印象的だったのが、慶応義塾大学の南澤先生が持ってきていた、TECHTILE Toolkitというデバイスでした。さらになんと、&lt;a href=&quot;http://www.techtile.org/techtiletoolkit/&quot;&gt;TECHTILE Toolkitはオープンソースで開発&lt;/a&gt;されており、部品を集めれば自分で作ることも可能です！&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.techtile.org/techtiletoolkit/&quot;&gt;このページ&lt;/a&gt;に行けば作り方が丁寧に解説されていて、&lt;b&gt;だれでもTECTILE Toolkitを作ることができます！&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
…と、言いたいところなのですが&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ページ中で使用されている「&lt;a href=&quot;http://www.nintendo.co.jp/ds/accessories/&quot;&gt;任天堂DS振動カートリッジ&lt;/a&gt;」と、「&lt;a href=&quot;http://plaza.rakuten.co.jp/takenokomax/diary/200807160000/&quot;&gt;ラステームのRSDA202というアンプ&lt;/a&gt;」はともにディスコンとなっており、手に入れるのが難しいのが現状です…&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
任天堂DS振動カートリッジの中には、アルプス電気の&lt;a href=&quot;http://www.alps.com/j/about_alps/tec/tec_human.html&quot;&gt;フォースリアクタ&lt;/a&gt;というデバイスが用いられています。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ5yqN9aKUh5fVjN-qHiei-L-suE2gHv6Sp3bf4CrdlyR_k-32QhFO7CkN8h1wLcp_O2wZPygWUX6BBkwnyKs1zLWiYhxLUiOWDtPb0e_6rDGMZgbSyb5Xw1SJCIRPAuCbTzEi5HvyJbU/s1600/_DSC9053.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ5yqN9aKUh5fVjN-qHiei-L-suE2gHv6Sp3bf4CrdlyR_k-32QhFO7CkN8h1wLcp_O2wZPygWUX6BBkwnyKs1zLWiYhxLUiOWDtPb0e_6rDGMZgbSyb5Xw1SJCIRPAuCbTzEi5HvyJbU/s1600/_DSC9053.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
※大小2種類のモデルが存在するのですが、DS振動カートリッジ、DS Lite振動カートリッジ共に大きい方のモデルが使用されています&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
フォースリアクタは振動モータではなく、中に入っている振動板をコイルで駆動する方式を採用しています。&lt;/div&gt;
&lt;div&gt;
そのため、高い周波数の振動を再現することができ、よりリアルな触覚フィードバックが得られる…というデバイスだそうです。&lt;/div&gt;
&lt;div&gt;
※&lt;a href=&quot;http://www.wiss.org/WISS2013Proceedings/oral/S5_016.pdf&quot;&gt;暦本先生の&lt;u&gt;WISS2013の抄録&lt;/u&gt;&lt;/a&gt;にデータが載ってます&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
こればかりは無いと仕方がないので、&lt;a href=&quot;http://www.amazon.co.jp/%E4%BB%BB%E5%A4%A9%E5%A0%82-%E3%83%A1%E3%83%88%E3%83%AD%E3%82%A4%E3%83%89%E3%83%97%E3%83%A9%E3%82%A4%E3%83%A0%E3%83%94%E3%83%B3%E3%83%9C%E3%83%BC%E3%83%AB/dp/B000C5ESO2/ref=sr_1_1?ie=UTF8&amp;amp;qid=1406459281&amp;amp;sr=8-1&amp;amp;keywords=%E3%83%A1%E3%83%88%E3%83%AD%E3%82%A4%E3%83%89%E3%83%97%E3%83%A9%E3%82%A4%E3%83%A0%E3%83%94%E3%83%B3%E3%83%9C%E3%83%BC%E3%83%AB&quot;&gt;Amazon&lt;/a&gt;や&lt;a href=&quot;http://www.suruga-ya.jp/search?category=2&amp;amp;search_word=%E6%8C%AF%E5%8B%95%E3%82%AB%E3%83%BC%E3%83%88%E3%83%AA%E3%83%83%E3%82%B8&quot;&gt;駿河屋&lt;/a&gt;などで&lt;b&gt;頑張って手に入れます&lt;/b&gt;。&lt;/div&gt;
&lt;div&gt;
私はAmazonで同梱版のメトロイドプライムピンボールを中古3,000円で買いました。&lt;/div&gt;
&lt;div&gt;
※一時期極端な品薄になったことで、中古ゲーム業者が買い取りに積極的になったのか、今はお金を出せば手に入るようです&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ラステームのアンプはちょっと手に入りそうになかったので、代わりに&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gK-00385/&quot;&gt;秋月のTA7252を使ったオーディオアンプキット&lt;/a&gt;を利用してみました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
組み立ててみた様子がこちらになります。&lt;/div&gt;
&lt;div&gt;
スピーカー端子から音声を出力し、それをオーディオアンプを通して増幅してフォースリアクタを駆動しています。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH4HUa92F0-AGgdkvdkUNipfry7wYI8V0sf7e8UQUPolFcMTlEeBALq1Nwf1lkWjCRNLkCUYhWjcOXpGs_-ISuVtKjkB0FTUnjR-LCufI4ucjP9v5boDIdKW0pEtCrahzP2232HqLXzv8/s1600/_DSC9091.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH4HUa92F0-AGgdkvdkUNipfry7wYI8V0sf7e8UQUPolFcMTlEeBALq1Nwf1lkWjCRNLkCUYhWjcOXpGs_-ISuVtKjkB0FTUnjR-LCufI4ucjP9v5boDIdKW0pEtCrahzP2232HqLXzv8/s1600/_DSC9091.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
今回はコップを使った触覚フィードバックデモを再生するので、フォースリアクタはこのようにコップに貼り付けました。&lt;/div&gt;
&lt;div&gt;
※底面に密着して貼り付けられなかったので、側面に貼り付けています&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9zyURE_2xzEjmqVFgGcM0RrTE_aoHmYI-cz5v995KPwOOMq9KtJX82JYem41VFX5Q3QsrFnXqvbQLJdItq8UqXs6_wnH1tXDH_2MsXL04oFDr0aNocGj_Jy3y2q2eXINg8KwwZ0Wxgy0/s1600/_DSC9092.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9zyURE_2xzEjmqVFgGcM0RrTE_aoHmYI-cz5v995KPwOOMq9KtJX82JYem41VFX5Q3QsrFnXqvbQLJdItq8UqXs6_wnH1tXDH_2MsXL04oFDr0aNocGj_Jy3y2q2eXINg8KwwZ0Wxgy0/s1600/_DSC9092.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
作ってみて早速&lt;a href=&quot;https://www.flickr.com/photos/63533903@N03/7600921550/in/set-72157631951426720&quot;&gt;コップの中でビー玉が回転している触覚データ&lt;/a&gt;を体験してみたのですが、実際に会場で体験した時と比べるとどうにもリアリティが少ない気がしました…&lt;/div&gt;
&lt;div&gt;
※映像に合わせてコップを動かすと十二分に触覚が感じられます、VRの中で真骨頂を発揮しそうな予感がします&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
会場での体験と比べて今一歩及ばなかったのは、やはりアンプが良くなかったのでしょうか？&lt;/div&gt;
&lt;div&gt;
ラステームのRSDA202はトライパスのTA2020というデジタルアンプICを利用しているそうなので、&lt;a href=&quot;http://c3pro.blog11.fc2.com/blog-entry-242.html&quot;&gt;同じICを利用した安いアンプを買って&lt;/a&gt;試してみたいと思います。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
[追記] 20140806&lt;br /&gt;
&lt;br /&gt;
TA2020使ったオーディオアンプ、Lepai LP-2020+がAmazonにて&lt;a href=&quot;http://t.co/ZkSmWofWAo&quot;&gt;2000円ほどで販売されていたので&lt;/a&gt;、例によってコップ音源を再生してみました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIbda87BnIUk85SN-MRAShD2MVv6VdYcoUrBLbxu-FYwCphn-5-Uh4nb6T_qu3plmCfJ9F56l72UlnH6ONZwaA8n3HS2AY8aEE2S7h4d7HqDWdr8LIF9xC8MSw3Tzbbz163A6wL4Y_Oxg/s1600/_DSC9134.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIbda87BnIUk85SN-MRAShD2MVv6VdYcoUrBLbxu-FYwCphn-5-Uh4nb6T_qu3plmCfJ9F56l72UlnH6ONZwaA8n3HS2AY8aEE2S7h4d7HqDWdr8LIF9xC8MSw3Tzbbz163A6wL4Y_Oxg/s1600/_DSC9134.JPG&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
秋月アンプよりだいぶ良い感じがして、本家のTECHTILE toolkitとだいぶ近い感じがしました。 簡易イコライザがついててローパスかけられるのもありがたいです。&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2014/07/tectile-toolkit.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ5yqN9aKUh5fVjN-qHiei-L-suE2gHv6Sp3bf4CrdlyR_k-32QhFO7CkN8h1wLcp_O2wZPygWUX6BBkwnyKs1zLWiYhxLUiOWDtPb0e_6rDGMZgbSyb5Xw1SJCIRPAuCbTzEi5HvyJbU/s72-c/_DSC9053.JPG" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-409587076655948681</guid><pubDate>Wed, 04 Jun 2014 15:32:00 +0000</pubDate><atom:updated>2014-08-06T20:46:40.883+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Unity</category><title>Unity for PSMを使って、PS Vita上でユニティちゃんを動かす</title><description>Unity for PSMというPS Vita上でUnityアプリケーションを動かす開発環境が今自分の中でアツいです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzeqe9WuK_LuVRpNFPGidVNLG8Tz9b4xwRzkwLQNW0cqxILRRY3LYsRqP2qnQ5ZOpBndxsYBLdk1NvZHWzlT8kn1Et4RtdtPr9Ax_iHPGeGdlaGLUxO37DLIjbD9CtfipNvSdE5RfxVpw/s1600/2014-06-04-230243.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzeqe9WuK_LuVRpNFPGidVNLG8Tz9b4xwRzkwLQNW0cqxILRRY3LYsRqP2qnQ5ZOpBndxsYBLdk1NvZHWzlT8kn1Et4RtdtPr9Ax_iHPGeGdlaGLUxO37DLIjbD9CtfipNvSdE5RfxVpw/s1600/2014-06-04-230243.jpg&quot; height=&quot;181&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span id=&quot;goog_1508807806&quot;&gt;&lt;/span&gt;
公式にもチュートリアルはあるのですが、PSM開発経験のない自分にとってはドキュメントが散らばっていて分かりにくい部分が多かったので、公式のユニティちゃんサンプルを動かすまでに自分がやった手順を備忘録的にまとめてみたいと思います。&lt;br /&gt;
&lt;br /&gt;
PSMとはPlayStation Mobileのことで、PS Vita(とAndroid)向けのゲームエンジンとそのエコシステムを指します。そのエコシステム上で、PSMランタイムとは全く独立した形でUnityランタイムを動かし、Unityで作られたゲームをPS Vitaで動作させるのがUnity for PSMになります。現在Public Preview版が出ていて、今年の夏に正式版のリリースが予定されています。&lt;br /&gt;
&lt;br /&gt;
もともとPSM (PlayStation Mobile)自体もMonoベースのゲームエンジンだったのでUnityを動かす土台はあったということでしょうか？&lt;br /&gt;
それでも、自前のゲームエンジンの競合を敢えて個人利用可能な形で公開するというのはなかなかできない決断だと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://japan.unity3d.com/unite/unite2014/files/DAY2-1900-room1-Erik-JPN.pdf&quot;&gt;Unite2014のスライド&lt;/a&gt;にPSM、Unity for PS Vita、Unity for PSMの違いがよくまとまって記載されているので、詳しくはそちらをご覧ください。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Unity for PSMを用いた開発の手順は、PSM Dev Portalの&lt;a href=&quot;https://psm.playstation.net/static/general/all/ja/sdk_assets.html&quot;&gt;このページ&lt;/a&gt;にまとまっています。基本的にこのページにそってやれば大丈夫なはずですが、ここでは自分が躓いた部分をつらつら書いていきたいです。&lt;br /&gt;
&lt;br /&gt;
このページにもある通り、Unity for PSMで作成したアプリケーションをPS Vita上で動かすためには、PSMデベロッパー登録とPSMパブリッシャーライセンスの取得が必要になります。PSMデベロッパー登録はすぐ完了するのですが、PSMパブリッシャーライセンスの取得には&lt;b&gt;1-2週間程度の審査時間がかかる&lt;/b&gt;ので、とりあえず申請しておくことをおすすめします。なお、現在PSMパブリッシャーライセンスは&lt;b&gt;無料&lt;/b&gt;で取得することができます。&lt;br /&gt;
&lt;br /&gt;
次に、&lt;a href=&quot;http://beta.unity3d.com/download/psm_public_preview/UnitySetup_update-4.3.4f1.exe&quot;&gt;Unity 4.3.4f1&lt;/a&gt;と&lt;a href=&quot;https://psm.playstation.net/static/general/dev/ja/sdk_assets.html&quot;&gt;PSM ToolSet for Unity&lt;/a&gt;をPCにインストールします。Unityは通常のバージョンとは異なり、PSM向けにパッチが当てられたバージョンなので注意してください。&lt;br /&gt;
&lt;br /&gt;
そして、PSM DevAssistant for Unityを&lt;b&gt;PS Vita上に&lt;/b&gt;インストールします。これはUnity for PSMで開発したアプリケーションを、PS Vitaでテストする際に必要になるソフトウェアです。アプリケーションをPS Vitaに転送、実行する際には&lt;b&gt;PSM DevAssistant for UnityがPS Vita上で実行されている必要があります。&lt;/b&gt;&lt;br /&gt;
※PSM SDK向けのPSM DevAssistantとは別物なので注意してください&lt;br /&gt;
&lt;br /&gt;
インストール自体はPS Storeで検索するか、bit.ly/psmdevappにPS Vitaからアクセスすることでダウンロード可能です。&lt;br /&gt;
※PS Vitaに紐付けられた&lt;b&gt;PSNアカウントがDev Portal上でPSMデベロッパー登録されていない場合にはストア上でダウンロードボタンが表示されず、&lt;/b&gt;インストールすることはできません。&lt;br /&gt;
&lt;br /&gt;
以上で準備は完了です。&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;--&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
公式のサンプルプロジェクト、&lt;a href=&quot;http://psm-resource.np.dl.playstation.net/psm_resource/general/all/unity-chan-PSM-2014-05-14.zip&quot;&gt;unity-chan-PSM&lt;/a&gt;をダウンロードします。&lt;br /&gt;
ファイルを適当なディレクトリに解凍したら、Unity for PSMで開きましょう。初回のロードは少し時間がかかります。&lt;br /&gt;
&lt;br /&gt;
プロジェクトを開いたらユニティちゃんのシーンが自動的に読み込まれると思います。読み込まれなかった場合はAssets/UnityChan/Scenes/Locomotion.unityを開けばいいと思います。&lt;br /&gt;
※Locomotion.unityを開いてもシーンが正しく読み込まれない(HierarchyにMainCameraしかない)という状態になったことがあるのですが、ファイルの解凍からやり直したらうまく読み込めました&lt;br /&gt;
&lt;br /&gt;
まずはFile &amp;gt; Build Settingsを開いて、PlatformをPlayStation Mobileに変更します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOhIpLp6ICQuC28KKtq8ipUWXSxoGW_Z8KXodVbwpX2h__obEFB2b96a2cMq1U6hhbA3Fijkt8JdGnWR0MxI_rwaFuTETCHeRMkqMlEVcUafO4-7sLp6KUPqGNzA6liRW6GnvnylYGW4Q/s1600/build-settings-highlight-open-publishing-utility.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOhIpLp6ICQuC28KKtq8ipUWXSxoGW_Z8KXodVbwpX2h__obEFB2b96a2cMq1U6hhbA3Fijkt8JdGnWR0MxI_rwaFuTETCHeRMkqMlEVcUafO4-7sLp6KUPqGNzA6liRW6GnvnylYGW4Q/s1600/build-settings-highlight-open-publishing-utility.png&quot; height=&quot;320&quot; width=&quot;289&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
次に、Open Publishing Utilityを押して、PSM ToolSet for UnityのPublishing Utilityを開きます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoRkISUIQjW34J3coAim9s380rE3IRSI-z3A3GN07m9mwvcIhwv5_Ib2TizD-zK2fT9oosk8y5ccANiVD0GqYOPPErPzaAur5QbTGUUW-RfwaQWji30tgHTRtvtIcEhM30pFimjKQqHZI/s1600/publishing-utility.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoRkISUIQjW34J3coAim9s380rE3IRSI-z3A3GN07m9mwvcIhwv5_Ib2TizD-zK2fT9oosk8y5ccANiVD0GqYOPPErPzaAur5QbTGUUW-RfwaQWji30tgHTRtvtIcEhM30pFimjKQqHZI/s1600/publishing-utility.png&quot; height=&quot;310&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Publishing Utilityでは、パブリッシャ鍵の管理r、デプロイの際のapp.xmlの設定、デバイスシードの作成、アプリ鍵の作成などを行うことができます。マニュアル操作でPS Vita向けのパッケージを作成する際にはこのあたりの設定を利用することがあるかもしれませんが、ひとまずは&lt;b&gt;パブリッシャ鍵の作成だけを行なっておけばOK&lt;/b&gt;です。このあたりの(ややこしい)しくみについてはPSM SDKの&lt;a href=&quot;https://psm.playstation.net/static/general/all/psm_sdk/1/doc/ja/key_management_ja.html&quot;&gt;このドキュメント&lt;/a&gt;が詳しいです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVr4rdkR5OurIupFQbJB77-wCoFtUmTh-Ta14rbnBk3OC5b5FYRmYbf8IXE3WqkD-DpdNOwFyPQboZ1tJiOD7Uz8PKJ8WewpLMyKDLlREF2kJMo21O9ql-estg0Emn6mKJAiBRuIU_QXc/s1600/no-psm-device-was-foun.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVr4rdkR5OurIupFQbJB77-wCoFtUmTh-Ta14rbnBk3OC5b5FYRmYbf8IXE3WqkD-DpdNOwFyPQboZ1tJiOD7Uz8PKJ8WewpLMyKDLlREF2kJMo21O9ql-estg0Emn6mKJAiBRuIU_QXc/s1600/no-psm-device-was-foun.png&quot; height=&quot;165&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
パブリッシャ鍵の作成の時に&amp;nbsp;&lt;b&gt;No PSM device found! &lt;/b&gt;のようなエラーが出た場合には、PS Vitaとの接続に問題があります。PS Vita上で&lt;b&gt;PSM DevAssistant for Unityを起動した状態で&lt;/b&gt;USBで接続してください。&lt;br /&gt;
また、パブリッシャ鍵の作成や認証の際にはSCEサーバとの通信が必要になります。通信に問題がある場合にはプロキシ等の設定が正しいかをファイル &amp;gt; プロキシサーバの設定から確認して下さい。&lt;br /&gt;
※一度鍵の作成に失敗したのですが、一度鍵を削除してもう一度作りなおしたらうまくいきました&lt;br /&gt;
&lt;br /&gt;
パブリッシャ鍵の作成が終了したら、Publishing Utilityを終了して、Build And Runを実行します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQc_mbtxJThlyPF5z5DtLqIDqQC5FhPrWpSQaj_cqx7nj6Ir3PfzBcnPF3iLJvQQeKOlUNUXd_yZyd-tKrnOrj_CqJVFSPSngzxTuYH-cUnDFVT43QiNzPls_q1eRVnbzKHOf_0ZSRv5s/s1600/build-settings-highlight-build-and-run.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQc_mbtxJThlyPF5z5DtLqIDqQC5FhPrWpSQaj_cqx7nj6Ir3PfzBcnPF3iLJvQQeKOlUNUXd_yZyd-tKrnOrj_CqJVFSPSngzxTuYH-cUnDFVT43QiNzPls_q1eRVnbzKHOf_0ZSRv5s/s1600/build-settings-highlight-build-and-run.png&quot; height=&quot;320&quot; width=&quot;289&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
このBuild And Runコマンドは非常に優秀で、デバイスシードの作成、デフォルトapp.xmlの読み込み、アプリ鍵の生成、パッケージ生成、PS Vitaへのパッケージ転送、実行までをすべて自動で行ってくれます。2回目以降はこれを実行するだけでPS Vita上でゲームのデバッグ実行が可能になります。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
[おまけ]&lt;br /&gt;
&lt;br /&gt;
Unity for PSMを使うと、PS Vitaのジャイロと加速度センサの値を、UnityのInput.gyroとInput.accelerationを使って取得することができます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcwWJ3eD2X0qaQwN0nqRI5kk7R_pf7ShPp6CEbbV98kuCfc_d2TCEaxn2g_xLzwe_v0wzsdswcj6PMGI3kfIfePqBEbHz9Of1lZ1FvixZyAtP-E-N2wRFWMV2T3hAmF7x5d7yflxQaK0c/s1600/unity-chan-sensor.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcwWJ3eD2X0qaQwN0nqRI5kk7R_pf7ShPp6CEbbV98kuCfc_d2TCEaxn2g_xLzwe_v0wzsdswcj6PMGI3kfIfePqBEbHz9Of1lZ1FvixZyAtP-E-N2wRFWMV2T3hAmF7x5d7yflxQaK0c/s1600/unity-chan-sensor.jpg&quot; height=&quot;181&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
しかし、地磁気の値についてはInput.compassを用いて取得することができませんでした…&lt;br /&gt;
Unite 2014でも地磁気については言及されてませんでしたし、PSM SDKでも取得することができないようなので、もしかしたら地磁気については取得する方法がないのかもしれません…&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記] 2014/06/14&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Unity for PSMでCompass APIが利用できないことについてUnityのForumで聞いてみたところ、Public Preview版では利用できないとの&lt;a href=&quot;http://forum.unity3d.com/threads/unity-for-psm-does-not-support-input-compass-api.249586/&quot;&gt;回答を頂きました&lt;/a&gt;。Unity 5から使えるようになるらしいので、それまで楽しみに待っていることにします。&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記] 2014/07/27&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;img alt=&quot;ユニティちゃんライセンス&quot; src=&quot;http://unity-chan.com/images/imageLicenseLogo.png&quot; /&gt;&lt;br /&gt;
このコンテンツは、『&lt;a href=&quot;http://unity-chan.com/download/license.html&quot; target=&quot;_blank&quot;&gt;ユニティちゃんライセンス&lt;/a&gt;』で提供されています&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2014/06/unity-for-psmps-vita.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzeqe9WuK_LuVRpNFPGidVNLG8Tz9b4xwRzkwLQNW0cqxILRRY3LYsRqP2qnQ5ZOpBndxsYBLdk1NvZHWzlT8kn1Et4RtdtPr9Ax_iHPGeGdlaGLUxO37DLIjbD9CtfipNvSdE5RfxVpw/s72-c/2014-06-04-230243.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-163196052086064004</guid><pubDate>Sun, 20 Apr 2014 06:52:00 +0000</pubDate><atom:updated>2014-08-06T20:46:16.222+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Depth Sensing</category><category domain="http://www.blogger.com/atom/ns#">Oculus Rift</category><category domain="http://www.blogger.com/atom/ns#">PerC</category><title>Oculus Riftに表示されたVR空間の中にRGBDカメラで撮影した自分の手を投影する</title><description>かねてからOculus RiftとIntel Perceptual Computing SDKを組み合わせて何かできないかと、手を動かしていたのですが、やっとひとまずの形になったのでブログ記事にまとめてみたいと思います。技術的な内容は後ほどまとめるとして、今回は紹介まで。&lt;br /&gt;
&lt;br /&gt;
ハードウェアには、Oculus RiftとCreative Gestureカメラを用いていて、それを&lt;a href=&quot;http://www.thingiverse.com/thing:182913&quot;&gt;Thingiverseで公開されているマウンタ&lt;/a&gt;を使ってつなげました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-63VnLmJ549kLN1LSJks4GgGdz3dmEnCRgOMBrUS_FpDiiq4NiNSYYz-FQI2OWTrhZh0w_5Kgnz2NE_Ws4o1qaTpXyrJcD6RfjNqNn3qNIBWMpodPr_weNDYBsRIedwcEG5hCNNbG_A/s1600/_DSC8588.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-63VnLmJ549kLN1LSJks4GgGdz3dmEnCRgOMBrUS_FpDiiq4NiNSYYz-FQI2OWTrhZh0w_5Kgnz2NE_Ws4o1qaTpXyrJcD6RfjNqNn3qNIBWMpodPr_weNDYBsRIedwcEG5hCNNbG_A/s1600/_DSC8588.jpg&quot; height=&quot;205&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ソフトウェアではGesture Cameraで撮影したRGBD画像からPerCライブラリの力を借りて手領域を抽出し、該当点群を少し回転させてOculus RiftのVR空間に重ねて表示しています。&lt;br /&gt;
背景にはTHETAのような正距円筒図で作成された360度画像を、Oculusの向きに合わせて展開して表示しています。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGCAlKuPJcXzPErX1ohS4XNEXC1_CjwFdcqVRZTEXG-6lP1F21L_nUhwZcuu-X3tsDrfM09iQVg6MRu_1pv_9lSpjUbdhfqPUafIhW001SONuV97SO79WXPGLcXidRYwN8JIMr-6aZqIk/s1600/002.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGCAlKuPJcXzPErX1ohS4XNEXC1_CjwFdcqVRZTEXG-6lP1F21L_nUhwZcuu-X3tsDrfM09iQVg6MRu_1pv_9lSpjUbdhfqPUafIhW001SONuV97SO79WXPGLcXidRYwN8JIMr-6aZqIk/s1600/002.png&quot; height=&quot;200&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ソースコードは&lt;a href=&quot;https://github.com/mohammedari/OculusHand&quot;&gt;githubに公開&lt;/a&gt;しています。&lt;br /&gt;
デモに利用した言語はC#で、Unityなどのフレームワークは利用していません。Livet、Oculus SDK、PerC、SharpDX、RiftWrapperを利用して開発を行いました。&lt;br /&gt;
3次元メッシュ再構成は、当初はOpenCVやMIConvexHullなどを使ってドロネー三角形分割で行おうと考えていたのですが…&lt;br /&gt;
結局実行速度の関係で諦めました。点群が密なことを前提にした独自の(手抜き)アルゴリズムでメッシュの再構成を行っています。その関係で、手のメッシュのエッジで粗い部分が目立ちます。これは今後の課題ですね。また、せっかく手の点群データを持っているので、ゆくゆくはVR内の物体と物理演算をするようなインタラクティブなデモを作ってみたいです。&lt;br /&gt;
&lt;br /&gt;
ニコニコ超会議3の中で開催される、第6回ニコニコ学会βシンポジウムの&lt;a href=&quot;http://niconicogakkai.tumblr.com/post/82304613670/6-in-3&quot;&gt;野生の研究者ポスターセッション&lt;/a&gt;でデモを行う予定です。場所は&lt;a href=&quot;http://www.nicovideo.jp/watch/sm22844568&quot;&gt;Mikujalus&lt;/a&gt;のきゅーこんさんの隣になるようです。&lt;br /&gt;
Oculus界隈で著名な方のお隣ということで少し緊張してますが… 自分のデモがうまく動くことを祈ってます。&lt;br /&gt;
&lt;br /&gt;</description><link>http://mohammedari.blogspot.com/2014/04/oculus-riftvrrgbd.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-63VnLmJ549kLN1LSJks4GgGdz3dmEnCRgOMBrUS_FpDiiq4NiNSYYz-FQI2OWTrhZh0w_5Kgnz2NE_Ws4o1qaTpXyrJcD6RfjNqNn3qNIBWMpodPr_weNDYBsRIedwcEG5hCNNbG_A/s72-c/_DSC8588.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-2221718685293043702</guid><pubDate>Sun, 16 Feb 2014 10:24:00 +0000</pubDate><atom:updated>2014-02-16T19:24:43.676+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ubuntu</category><title>Travis CIでconfigure.acにAC_CHECK_HEADER_STDBOOLを含んだプロジェクトをビルドする</title><description>&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
MikuMikuPenguinをTravis CIで自動ビルドする際に、Travisのワーカー上で以下のようなエラーが発生しました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;configure.ac:***: error: possibly undefined macro: AC_CHECK_HEADER_STDBOOL
    If this token and others are legitimate, please use m4_pattern_allow.
    See the Autoconf documentation.
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
MikuMikuPenguinのconfigure.acにはAC_CHECK_HEADER_STDBOOLという記述があり、stdbool.hが存在するかを探しているようです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
どうもこのエラーはstdbool.m4がaclocalから読み込まれていないことが原因のようです。これを解決するには、stdbool.m4を含むgnulibパッケージをインストールしてからaclocalの検索パスに/usr/share/gnulib/m4を追加します。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
.travis.ymlを&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;language: cpp
compiler: gcc
install:
   - sudo apt-get install -qq gnulib #stdbool.m4 is required for AC_CHECK_HEADER_STDBOOL in configure.ac
script:
   - autoreconf -i -I/usr/share/gnulib/m4 &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
のように記述すると、無事にautoreconfのエラーが消えてビルドを行うことが出来ました。&lt;/div&gt;
</description><link>http://mohammedari.blogspot.com/2014/02/travis-ciconfigureacaccheckheaderstdbool.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3980187635094452050.post-3697053039367374885</guid><pubDate>Mon, 10 Feb 2014 04:41:00 +0000</pubDate><atom:updated>2014-02-10T13:41:34.500+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C++</category><category domain="http://www.blogger.com/atom/ns#">Depth Sensing</category><category domain="http://www.blogger.com/atom/ns#">PerC</category><title>Intel Perceptual Computing SDKのutil_capture.hでのビルドエラー</title><description>Point Cloud Library (PCL) 1.7.1経由でSenz3Dから取得した点群データを描画するアプリケーションを開発しています。&lt;br /&gt;
PCL 1.7.1は内部でIntel Perceptual Computing SDK (PerC SDK)を利用しており、\sample\common\include\util_capture.hにも依存関係を持っています。&lt;br /&gt;
&lt;br /&gt;
Visual Studioで自前のプロジェクトを作成してプログラムを作成していたのですが、どうやらVisual Studioでプロジェクトを作成するときに、「Win32コンソールアプリケーション」や「Win32プロジェクト」を選択しない場合にはutil_capture.hで以下の様なエラーが発生するようです。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;error C2664: &#39;errno_t wcscpy_s&amp;lt;256&amp;gt;(wchar_t (&amp;amp;)[256],const wchar_t *) throw()&#39; : 1 番目の引数を &#39;pxcCHAR [256]&#39; から &#39;wchar_t (&amp;amp;)[256]&#39; に変換できません。
&lt;/pre&gt;
&lt;br /&gt;
どうやら、これはpxcCHARの型がwchar_tになっていないことが問題のようです。pxcCHAR型はpxcdefs.hに以下のようにtypedefされています。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;#if defined (WIN32) || defined(WIN64) || defined(WINAPI_FAMILY)
#include &amp;lt;wchar.h&amp;gt;
typedef wchar_t pxcCHAR;
#else
typedef char pxcCHAR;
#endif
&lt;/pre&gt;
&lt;br /&gt;
これを見るとわかるように、WIN32やWIN64が定義されていない場合にはpxcCHARがchar型となってしまうようです。同様のエラーがintelのフォーラムにも&lt;a href=&quot;http://software.intel.com/en-us/forums/topic/493582&quot;&gt;投稿されていて&lt;/a&gt;、そこでもWIN64の定義が問題になっています。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するために、プロジェクトのプロパティから「構成プロパティ &amp;gt; C/C++ &amp;gt; プリプロセッサ &amp;gt; プリプロセッサの定義」にWIN32を追加したところ、問題は解決しました。同様のエラーに悩まされた時はプリプロセッサ定義を確認してみると良いかもしれないです。</description><link>http://mohammedari.blogspot.com/2014/02/intel-perceptual-computing.html</link><author>noreply@blogger.com (Kazuyuki Arimatsu)</author><thr:total>0</thr:total></item></channel></rss>