SlideShare ist ein Scribd-Unternehmen logo
ProtoLotus
(クリック操作で自作LEGOパーツやユニバーサルプレートを作ってみよう)
2022/11/21
#ヒーローズリーグ 2022
いのうえ みのる
名前:井上 稔(Minoru INOUE)
出没先: コミュニティ“ゆるメカトロ”
Facebook: minoru.inoue.90
Twitter : @henjin01_Fab
コンテストごとはひさしぶり〜
ものづくりって大変
ユニバーサルプレートで
タミヤのギアボックスに合う部品を
加工で作ろうとして間違えた…
刃物で怪我をした…
既存のLEGOテクニック部品だと
ちょっと足りない…
手持ちのLEGOブロックが少ない!
欲しいのだけど入手しづらい…
ギアボックス画像はこちらから引用: https://www.tamiya.com/japan/products/70189/index.html
なにかと部品は自炊したい!
Protolotusって?
オレオレ仕様のユニバーサルプレートやLEGOテクニックパーツを
自作できるツール フリーソフト!
このテーブルのセルをクリックすると
ブロックが追加・変更・削除される
Githubページ
コードもバイナリも
公開!
(Windows or Mac)
- 開発言語:Python
- GUI:pyQtと
OpenGL
- STL出力:numpy-stl
3Dプリンタで出力できるよ!(作品例)
早速DEMOります!
これ作ります。
ツール上 3Dプリント後の現物
(PETG、2時間位で出力)
まとめ
ね、楽でしょ?
1. 操作はマウスとCtrl+数字キーだけ!
2. CADの知識いらない!
3. プレゼン時間のたった4分で部品が作れる!
自分好みの部品はチョッパヤで自炊しよう!
アイデアに時間を全プッシュだ!
4. 好きな素材で部品が作れるよ!
ex: ゴムっぽく(TPU), 木の温もり(Wood PLA), 頑丈(PETG)
以降は予備
ロジックについて考えたきっかけ
昔のツールは適当だった。動作モッサリで拡張性も微妙だった。
ブロック追加ごとに
再描写
→ブロック数が増える
と待ち時間増加
ブロックの種類が
今後も増えそう
→データ構造も考える
必要あり
差分だけ変更を加えて、各ブロックにデータをもたせる形にする必要があった
画面描写と
STL作成は
分離したい
1 2
3 0
…
…
1 2
1
2
データ構造
• ブロック値(1,2,3)
• ブロック座標(row, column)
• ハッシュ値(row+column最大値*column)
• ブロック設定(タミヤ互換 or LEGO互換)
• メッシュデータ(GLMesh)
column
row
Table:
データなし
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
(2,1)に3のブロックを置く ハッシュ値11
クリックした順に
ブロック操作が入る
キュー的にOpenGL表示データを一列に格納する形を採った
また、ハッシュ値から一意にブロックを特定できる。
…
Queue:
ブロック追加時
1 2
3 0
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
(2,2)をクリック
0表示になっている箇所をクリックすると、
ハッシュ値と一緒にブロック操作が入る
1 2
1
2
1
ブロック変更時
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
1 3
3
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に3のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
(1,2)をクリック
→ハッシュ値2探す
テーブルクリック時にハッシュに該当するブロック値を変える
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
search!
ブロック削除時
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
(1,1)に1のブロックを置く ハッシュ値1
(2,2)に2のブロックを置く ハッシュ値12
ハッシュ値11
delete!
1 2
1
…
…
0
(1,2)に2のブロックを置く ハッシュ値2
(2,1)をクリック
→ハッシュ値11探す
数字のカウントアップが一巡した(3→0)場合には
キューからブロック操作を削除する
STL出力
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
がクリックされたタイミングでテーブルを総なめして作成する
For二重ループで
0以外を総なめ
キュー内のデータはOpenGL表示用の
データ=STL作成では使わない
できたこと
問題としていたことはひとまずパス
ブロック
追加ごとに再描写
→待ち時間増加
ブロックの種類が
今後も増えそう
画面描写と
STL作成は
分離したい
キュー&ハッシュでデータを個別管理
操作はブロック個別になった
ブロックの描写単位でブロック情報をもたせた
ブロック値のカウントアップで定義可能
画面描写時とSTL作成時で参照するデータが
異なるため、独立性が高くなった
まとめ(かんそう)
趣味ツールとはいえ、データ構造はソフトウェアのコア
アイデアを送り出すまではスピード重視
But→送り出したあとは手早くデータ構造を見直すべき
データ構造を考えるのはダルい
But→一回決まると後工程が楽
レスポンス面の不便=ロジックとデータ構造の見直し
不便を感じたらドキュメントに起こそう
以上です!

Weitere ähnliche Inhalte

Mehr von MinoruInoue2

自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし
自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし
自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなしMinoruInoue2
 
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作るAtom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作るMinoruInoue2
 
円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar ConferenceMinoruInoue2
 
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化するArduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化するMinoruInoue2
 
Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話MinoruInoue2
 
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)MinoruInoue2
 
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみるMaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみるMinoruInoue2
 
Simulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコンSimulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコンMinoruInoue2
 
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなしM5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなしMinoruInoue2
 
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話MinoruInoue2
 
ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話MinoruInoue2
 

Mehr von MinoruInoue2 (11)

自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし
自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし
自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし
 
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作るAtom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
 
円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference
 
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化するArduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
 
Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話
 
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
 
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみるMaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
 
Simulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコンSimulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコン
 
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなしM5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
 
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
 
ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話
 

Kürzlich hochgeladen

Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Toru Miyahara
 
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップToru Miyahara
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例Kurata Takeshi
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料Toru Miyahara
 
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.ShigekiInatama
 
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹Toru Miyahara
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上mizukami4
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題についてMasatsugu Matsushita
 

Kürzlich hochgeladen (8)

Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
 
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 

HL2022予選:ProtoLotus (クリック操作で自作LEGOパーツやユニバーサルプレートを作ってみよう)