CadQueryと生成AIで加速するドローン機体設計の自動化

はじめに

近年、製造業において「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が生成したコードをベースに、機械チームでは以下の最適化を加えています。

  1. トポロジー最適化: 応力が集中する部分をPythonの解析ライブラリで特定し、CadQueryの filletchamfer を動的に適用して強度を向上。
  2. 肉抜き加工: 強度を維持しつつ、軽量化のためのパターン(ハニカム構造など)をプログラムで生成。
  3. アセンブリ自動化: モーターやバッテリーの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エージェントによる設計完結」 を目指しています。

機械設計の現場が「マウスを動かす作業」から「要件を定義する作業」へとシフトする大きな転換点になるかもしれません。


この記事は機械チームの佐々木 凛が執筆しました。