小型ロボット向け遊星減速機の 設計候補生成 → 評価 → 軽量/詳細CAD生成 を行うツール。 YAML 入力から候補を列挙・スコアリングし、BOM/レポートを出力。FreeCAD を CAD バックエンドとして 軽量レイアウト(phase 2)と詳細歯形 STEP(phase 3)を生成する。設計判断ロジックは FreeCAD なしで動く。
詳細仕様は ai/project_spec.yaml /
ai/project_work_flow.yaml /
ai/job_system_spec.yaml を参照。
⚠️ 機械的成立は保証しない。出力の estimates / assumptions / risk_notes は概算で、実機検証が前提。
python -m venv .venv
./.venv/Scripts/python.exe -m pip install -r requirements.txt # ランタイム依存は PyYAML のみ
./.venv/Scripts/python.exe -m pip install -e . # パッケージを import 可能に
# 開発用: pip install pytest ruffFreeCAD(phase 2/3 の STEP 生成)は別途インストール(既定の探索先 C:/Program Files/FreeCAD*/bin/freecadcmd.exe、
または環境変数 GEARBOX_FREECADCMD で指定)。
# 1 行で実行(PowerShell の行継続は `\` ではなくバックティック)
./.venv/Scripts/python.exe -m gearbox_planner.design --config configs/examples/planetary_mvp.yaml --out outputs/my_designYAML を 1 つ用意したら、表示される候補表から番号を選ぶだけで
selected_candidate.json + FreeCAD アセンブリ(cad/)まで生成。非対話は
--select 2(単段)/ --select 1,1(多段は各段)。--no-cad で計画・選択のみ。
二段は各段で候補を選び、一体の連結アセンブリ(cad_train/planetary_train.step)を出力。
./.venv/Scripts/python.exe -m gearbox_planner.plan --config configs/examples/planetary_mvp.yaml --out outputs/test_run出力(outputs/test_run/): candidate_report.md / candidates.json /
rejected_candidates.json / bom.csv / run_log.txt
二段遊星: 入力 YAML に stages(各段の ratio と大きさを手動指定)を書くと多段トレインを
設計する。合計減速比=各段の積、トルクは段間で分配(最終段が目標トルク)。
例: configs/examples/planetary_two_stage.yaml
(4×5=20)。candidates.json は {type: multi_stage, stages: [...]} 形式。CAD は
run_freecad.py manufacturing <candidates.json> <out> <stage_index> で各段を、
... <out> all で全段を積み上げた一体トレイン(planetary_train.step)を生成。
./.venv/Scripts/python.exe -m gearbox_jobs.sweep --config configs/examples/planetary_sweep.yaml --out outputs/sweeps/run1→ sweep_summary.csv / ranked_candidates.json / sweep_report.md
./.venv/Scripts/python.exe -m gearbox_jobs.runner --once # 次の pending を1件実行
./.venv/Scripts/python.exe -m gearbox_jobs.runner --all # pending を全実行
./.venv/Scripts/python.exe -m gearbox_jobs.list # キュー状況
./.venv/Scripts/python.exe -m gearbox_jobs.summarize --root outputs/jobsジョブ定義は jobs/pending/*.yaml(例: jobs/pending/planetary_001.yaml)。
状態は pending → running → succeeded/failed/skipped に移動。job_type: plan / sweep /
export_layout / export_manufacturing。
FreeCAD は CLI フラグ・位置引数を横取りするため、venv ラッパ scripts/run_freecad.py
(freecadcmd を解決し環境変数を渡す)経由で実行するのが簡単:
# phase 2: 軽量レイアウト(envelope.step / layout.step / gearbox_layout.FCStd / layout.svg)
./.venv/Scripts/python.exe scripts/run_freecad.py layout outputs/test_run/candidates.json outputs/test_run/cad 0
# phase 3: 印刷可能な組立(2分割ハウジング / 2枚キャリア / 入出力軸 / 型番付きベアリング円筒 / ねじ)
# STEP(Import.export で名前付き) / FCStd / manufacturing.svg / 印刷用 offset STL(stl/) を出力
./.venv/Scripts/python.exe scripts/run_freecad.py manufacturing outputs/test_run/candidates.json outputs/test_run/cad 0
# 二段(candidates.json が multi_stage)の一体トレイン: 最後の引数を all に
./.venv/Scripts/python.exe scripts/run_freecad.py manufacturing outputs/two_stage/candidates.json outputs/two_stage/cad_train allphase 3 は印刷可能・組立可能なアセンブリを出力する。固定ハウジングは2分割:
ring_housing: 内歯バレル+上(出力)側ベアリング座を一体化。ねじ穴はギアから離すため バレル外径を自動拡大(穴縁がリング歯元から ≥1.5·壁厚)。bearing_cap_lower: 下(入力)側ベアリングを保持する別体キャップ。スピゴットでバレルに はめ込み(上下ベアリングの同軸出し)+ねじ留め。
回転出力は2枚の板に分割(一体ブロックを避け、造形性・強度を改善):
carrier_lower_plate: 遊星ピン一体。中心穴は大きく、下からsun_gearを挿入可能。output_plate: 出力軸一体、遊星ピン頭を受ける。housing.output_coupling: hexで六角ボスにも。
座の肩逃げ径は 外輪のみ接触(OD−0.3·(OD−bore)、回転内輪を逃がす)。ベアリングの抜け止めは
入出力軸+スペーサ前提(追加形状なし)。sun_gear は入力軸を圧入、遊星はすべり/フランジブッシュ
(フランジ用ザグリ)/ベアリングを選択可。出力: planetary_manufacturing.step(Import.export で
STEP product 名=ボディ名、Inventor 可視)/ planetary.FCStd / manufacturing.svg / stl/<body>.stl
(print_offsets: gear_backlash / shaft_clearance / fit_clearance / outer_offset を適用)。
各ベアリングは型番名の OD/ID/高さ円筒で配置。
*.svg は FreeCAD 不要で生成される即時可視化(前面/側面/歯形)。GEARBOX_INDEX で候補リスト中の
インデックスを選択(0 = 最良)。ジョブランナー経由(export_layout / export_manufacturing)でも実行可。
./.venv/Scripts/python.exe scripts/catalogue/build_catalogue.pydata/catalogue/ のカタログから転記したデータで data/parts/misumi_bearings.csv /
data/parts/oiles_bushings.csv / data/materials/*.csv を生成。新カタログは
scripts/catalogue/build_catalogue.py に表を追加すれば
ローダが自動マージ(*bearings.csv / *bushings.csv)。
target: { ratio: {target, tolerance_percent}, output_torque_nm, max_diameter_mm, max_length_mm }
manufacturing: { preferred_method: fdm_3d_print|desktop_cnc, min_module_mm,
nozzle_diameter_mm: 0.4, min_wall_thickness_mm: 0.8 } # FDM printability
bearings: { policy: require_standard|prefer_standard|allow_bushing, output_shaft_diameter_mm, load_safety_factor }
shaft: { material: PLA|ABS|PETG|A5052|SUS304, diameter_mm, safety_factor, overhang_length_mm }
supports: { input_shaft_diameter_mm, input_policy: prefer_ball_bearing,
planet_bore_diameter_mm, planet_policy: ball_bearing|bushing|sliding }
gears: { planet_count, pressure_angle_deg, module_mm_options, sun/planet_teeth_min/max, face_width_mm }完全な例: configs/examples/planetary_mvp.yaml
ratio → assembly → size → manufacturing → shaft → bearings → diameter → rating → supports
- ratio:
ring=sun+2·planet,ratio=ring/sun+1、許容誤差で判定 - assembly: 等配条件
(sun+ring)%N==0と隣接遊星の干渉 - size: 外径/全長の上限
- manufacturing: 最小モジュール、最小歯数、FDM のノズル径(歯厚
π·m/2 ≥ nozzle)・壁厚(≥ 2·nozzle) - shaft: 曲げによる必要軸径
d=(32M/πσ)^{1/3}(材料許容曲げ応力 ÷ 安全率、軸長 overhang) - bearings/diameter/rating: 出力軸支持の内径一致・包絡内収まり・定格(
min(Cr/SF, Cor)/ ブッシュ面圧) - supports: 入力軸(玉軸受優先)・遊星(すべり可)の per-location 選定
スコア(compactness/size/backlash/cost/reliability の加重 0–100)と score_breakdown を付与。
| パス | 内容 |
|---|---|
src/gearbox_planner/ |
純設計ロジック(FreeCAD 非依存) |
src/gearbox_jobs/ |
file ベースのジョブ/掃引 |
src/freecad_export/ |
CAD 生成(*_model/svg_view/gear_geometry は FreeCAD 非依存、*_generator は FreeCAD) |
data/parts/, data/materials/ |
部品 DB・材料物性(CSV) |
data/catalogue/ |
出典カタログ(PDF/画像) |
configs/examples/ |
入力 YAML 例 |
ai/ |
仕様・タスク・レビュー方針 |
outputs/, jobs/{running,…} |
生成物・キュー状態(git 管理外) |
./.venv/Scripts/python.exe -m pytest
./.venv/Scripts/python.exe -m ruff check .
./.venv/Scripts/python.exe -m ruff format --check .
./.venv/Scripts/python.exe -m compileall src tests scripts- ✅ phase 1: 遊星1段の候補生成・評価・レポート/BOM
- ✅ phase 2: 軽量レイアウト STEP(envelope/layout)+ FCStd + SVG
- ✅ phase 3: 詳細インボリュート歯形 STEP(sun/planet/内歯リング/キャリア)+ FCStd + SVG
- ⏳ 今後: cycloidal、多段、強度/寿命の高精度化、FreeCAD Workbench 化