はじめに
近年、製造業において「Generative Design(ジェネレーティブデザイン)」が注目されていますが、その多くは高価な専用ソフトウェアを必要とします。
今回は、オープンソースのPythonライブラリ CadQuery と、ChatGPTなどの 生成AI を組み合わせることで、より柔軟かつ自動化されたドローン設計のプロセスを紹介します。
なぜCadQueryなのか?
従来のGUIベースのCAD(SolidWorksやFusion 360など)は直感的ですが、AIによる自動生成には向きません。
一方、CadQueryは「コードで形状を定義する」ツールです。
- テキストベース: プログラムコードなので、生成AI(LLM)との親和性が極めて高い。
- パラメータ化: 腕の長さ、モーターの取付穴径などを変数で管理しやすい。
- 拡張性: Pythonの豊富なライブラリ(最適化計算など)と連携可能。
生成AIによるプロンプト設計
以下のようなプロンプトをAIに与えることで、基本的なドローンフレームのベースコードを生成させることができます。
「4つのアームを持つクアッドコプターのフレームをCadQueryで作成して。アームの長さは150mm、中央には50mm四方の電子機器搭載スペースを設け、各アームの先端にはM3ネジ用の穴を開けてください。」
実装のポイント
AIが生成したコードをベースに、機械チームでは以下の最適化を加えています。
- トポロジー最適化: 応力が集中する部分をPythonの解析ライブラリで特定し、CadQueryの
filletやchamferを動的に適用して強度を向上。 - 肉抜き加工: 強度を維持しつつ、軽量化のためのパターン(ハニカム構造など)をプログラムで生成。
- アセンブリ自動化: モーターやバッテリーの3Dモデルを自動的に正しい位置に配置。
import cadquery as cq
# パラメータ定義
arm_length = 150.0
center_size = 50.0
mount_hole_dist = 19.0
# センタープレートの作成
result = cq.Workplane("XY").box(center_size, center_size, 3.0)
# アームの追加(ループ処理で生成)
for angle in [45, 135, 225, 315]:
arm = cq.Workplane("XY").rect(arm_length, 10.0).extrude(3.0).rotate((0,0,0),(0,0,1), angle)
result = result.union(arm)
# モーターマウント用の穴あけ
# (詳細な位置計算ロジックをここに実装)
今後の展望
現在は静的な形状の生成にとどまっていますが、今後はAIに「飛行時間」や「積載重量」を伝え、それらを満たす最適な物理形状をCadQueryコードとして直接出力させる 「AIエージェントによる設計完結」 を目指しています。
機械設計の現場が「マウスを動かす作業」から「要件を定義する作業」へとシフトする大きな転換点になるかもしれません。
この記事は機械チームの佐々木 凛が執筆しました。