---
title: 6-Axis Box Rig
description: フライス盤でのコマ撮り（Milling Stop-Motion）のために作っている、カメラを動かす1800mm四方の箱型6軸モーションコントロールリグの設計メモ。設計は最終的にオープンソースで公開予定。
date: 2024-06-28T00:00:00.000Z
updated: 2026-09-29T00:00:00.000Z
tags:
  - addsub
url: https://www.baku89.com/ja/boxrig
---

# 6-Axis Box Rig

東京都写真美術館での[公開制作](/assembling-anew)で、フライス盤で削っている途中のブロックを1コマずつ撮るための撮影装置です。1800mm四方ほどの箱の中にカメラを吊り下げて、位置3軸と回転3軸を動かします。箱の中央にはフライス盤が置いてあって、カメラはそのまわりを動きます。四方の壁にはLEDが貼ってあって、照明もコマごとに変えられます。

会期中は展示室に置いたまま動かすので、この装置自体も展示物のひとつです。

2024年の夏ごろから少しずつ考えはじめたもので、構造の考え方はそのころからあまり変わっていません。設計は[右左見拓人](/takuto-usami)さんにも相談しています。

## オープンソース化について

設計は最終的にオープンソースで公開するつもりです。ライセンスは MIT のような寛容なものを考えています。CAD データ（ネイティブ形式と STEP）、部品表（入手先と型番）、自作基板のデータ、配線図、ファームウェアの設定、組み立て手順までをひとまとめにして出す予定で、このページはその下書きも兼ねています。

展示室で動いている装置は、その設計データから組んだもののひとつ、という位置づけです。部品が手に入らなくなっても、設計が残っていれば別の部品で組み直せます。

撮影ソフトの [Koma](/koma) もオープンソースですが、こちらはコピーレフト型のライセンスを考えていて、リグの設計とは別に扱います。

## 全体の構成

![](https://wp.baku89.com/wp-content/uploads/2026/09/boxrig-1790615838478.png)

- 箱：外形およそ1800mm四方。V-Slot 2040 × 1500mm を骨組みに使う
- 位置の3軸：上から見て「H」の字。奥行き方向に2本のレール、そのあいだを1500mmの X が渡り、X のキャリッジから縦の軸が下に吊り下がる
- 回転の3軸：縦の軸の先に、一般的な3軸ジンバルを上下逆さにしたものが付く
- カメラ：Sigma fp ＋ Sigma 105mm マクロ
- 中央：フライス盤（オリジナルマインド KitMill AST200、協賛で貸与）
- 壁：WS2815 のLEDテープを4面に

## 座標系

Houdini と同じ **Y-up の右手系**。縦が Y、1500mmの橋の方向が X、奥行きが Z。

最初はCNCの慣習どおり Z-up で組むつもりだった。ただ、このリグに流すGコードは自分で生成するもので、CAMの慣習に縛られる理由がない。カメラの経路を Houdini から変換なしで流せるほうを取った。FluidNC にとって軸の文字はただのラベルなので、困ることはほぼない。

回転軸の名前もこれに合わせて、X まわりのチルトが A、Y まわりのパンが B、Z まわりのロールが C。Houdini のカメラは −Z を向いているので、ロールが C になるのも合っている。

フライス盤も同じ座標系に揃えた。本体を時計回りに90°回して置き、元の Y が X、元の Z が Y、元の X が Z になるように配線とGrblの設定を振り直している。フライス盤の正面は箱の L 面（X−）を向く。

右手系を崩すと、パンやチルトが鏡に映したように逆回りに出る。物理的なレールの向きが合わないところは `direction_pin` の反転で合わせる。

## 軸と駆動

マイクロステップは全軸 1/8（1600 steps/rev）。細かくするより、速度とトルクの余裕を取った。

| 軸         | 役割             | 機構                                                               | steps      |
| --------- | -------------- | ---------------------------------------------------------------- | ---------- |
| X         | 横（1500mmの橋）    | NEMA23 ×2（X1/X2 でスクエアリング）、GT2 30T プーリー、ループにした GT2 ベルトでガントリーを引く   | 26.667 /mm |
| Y         | 縦（吊り下げ）        | SFU1204 ボールねじ（φ12、リード4、L=1200mm、BK/BF12 の標準軸端）。上でホーミングし、可動域は負の方向 | 400 /mm    |
| Z         | 奥行き            | GT2 20T、V-Slot の片側に沿わせたベルト（ループではない）、モーターがガントリーに乗る                | 40 /mm     |
| A / B / C | チルト / パン / ロール | モーター側 18T → 96T（比 5.333）、単位は度                                    | 23.704 /°  |

- モーター：X は Usongshine 23HS5628（NEMA23、1.26N·m、2.8A/相）。回転軸などは NEMA17
- 縦の軸は自重で落ちないよう、非励磁ブレーキ付きの STEPPERONLINE 17HS19-2004D-B025（24V）を選定。ブレーキは stepper enable で制御し、`idle_ms: 255` で保持
- 縦の軸のドライバだけ TMC2209（standalone の StepStick モード、設定は変えず 1/8）。ほかは TMC2208
- 回転軸は連続回転があり得るので `hard_limits: false`。ホーミングは光学スロットセンサ（Omron EE-SX671 など）
- 回転軸：max rate 720°/min、加速度 50°/s²、ホーミングのシーク 360°/min、pulloff 5°

吊り下げた縦の軸は剛性が低く、動いたあとしばらく揺れる。加速度はかなり低め（とくに X）にして、撮影は揺れが収まるのを待ってから。コマ撮りは1コマずつ止まるので、ここは時間で解決できる。

### 縦の軸の経緯

縦の軸はいちばん迷ったところ。

- 最初は手持ちのミスミ C-BSSTAK2005-1400（φ20、リード5、L=1400mm、ハウジング・サポートユニット・NEMA23 モーターマウント込み）で、ストローク1250mmを取るつもりだった。買い足しゼロで済む
- ただ、縦の軸ユニットまるごとが X のキャリッジに片持ちで乗るので、重いと X の橋のたわみとねじれがきつくなる。V-Slot は断面が開いていてねじれに弱い
- 1500mmのボールねじ（BSBR2505-1500 で約6.5kg）と、φ15 × 1200mm（約1.9kg）を比べて、ストロークを1100mmくらいまで削っても軽いほうを取った
- 台形ねじ（ミスミ MTSRL16-1500）もセルフロックでブレーキ不要という利点があったが、リード3だと遅すぎるので見送り
- 最終的に SFU1204（L=1200mm）。ストロークはおよそ1100mm

## 回転軸（ジンバル）

一般的な3軸ジンバルを逆さに吊った形。いちばん外側がパン（Y まわり）、そこから L 字のアームが下りてロール（Z まわり）、その先の2本のアームのあいだにチルト（X まわり）のカメラマウントを挟む。

- ギア：PLA-CF で印刷したヘリンボーンギア（モジュール1.25、リングギアのPCD 200mm）
- ベアリング：6810Z（φ50/φ65/7mm）を1軸2個。内輪・外輪のスペーサーは金属にする（印刷品だと予圧でクリープする）
- 構造部品は PETG より PLA-CF。曲げ弾性率が2〜3倍で、クリープにも強い。ノズルは焼入れ鋼かルビー
- 剛性を上げるなら、まずカウンターバランス

3ヶ月半のあいだ動かし続けるので、精度そのものより、同じ場所に戻ってこられるかのほうが大事。1軸あたり 0.0015° くらいの繰り返し精度を目安にして、パーク姿勢での参照ショットと基準マーカーで、ずれを後から見つけられるようにする。

## フレームとガントリープレート

- V-Slot 2040 × 1500mm（AliExpress で購入済み）
- ガントリープレートは Meviy の A5052 ＋ 黒アルマイトで見積もったら、アルマイトの固定費で SUS304 より高くなった。PETG-CF で印刷する案を検討中（厚さ8mm、Gyroid 60% 以上、ホイールのボルト穴には金属スリーブを入れてクリープを防ぐ）

## 制御

- コントローラ：PiBot FluidNC ESP32 GRBL CNC Controller **V4.96 Pro**。最初に使っていた V5.88 Ultra はリミット端子まわりの短絡で壊れた
- FluidNC（v3.9.9）。grblHAL は web builder が4軸までなので使えない
- stepping engine は `I2S_STREAM`。この場合 step ピンはすべて I2SO でないといけない
- 設定ファイルは `boxrig.yaml`

モーターは X1・X2・Y・Z・A・B・C の7個に対して、PiBot のスロットは6つ。工場設定のスロットを振り直して、X1/X2 で X のスクエアリング、残りを Y〜B に割り当て、7個目の C は空いているソケットの MS3 用の I2SO 線（STEP i2so.19 / DIR i2so.22 / EN i2so.14）から出している。

### 配線の系統

（図：boxrig-wiring.png — 4面のLEDライン L1/L2・B1/B2・R1/R2・F1/F2、X1/X2 と YZABC へのイーサネット5本、Mac Studio への USB、下辺の分電盤）

- X1 は L 面寄りの下、X2 は R 面寄りの下。X2 の駆動基板は X2 のそばに置く
- Y・Z・A・B・C の5本は LAN ケーブルで束ねて、ガントリーの上を通して Y のキャリッジまで引く。そこから Y と Z の駆動基板へ分岐し、さらに下がって A・B・C の3枚へ
- 24V のモーター電源も同じ経路で、Y のキャリッジで WAGO で分岐
- カメラの USB は別経路で Mac Studio へ

### 自作基板

- **cnctmc-breakout**：PiBot からモーターごとに RJ45 で配る分配基板。1モーター1ポートで、pin 1 = Vio、2–4 = モーター信号、5–7 = GND、8 = LIM。C チャンネルの STEP/DIR/EN は SN74HCT125N でバッファ。Vio は PiBot の 5V → ポリスイッチ → 100µF
- **cnctmc-mounter**：モーター1個ぶんのドライバ基板（v2.1）。LIM1\_HALL はホールICか N.C. スイッチ用で、ENABLE\_HALL のはんだブリッジを閉じないと G が GND に落ちない
- X1 だけ PiBot のオンボードソケット直結、X2 以降は breakout → mounter

### リミットとホーミング

- X は + 方向にホーミング（`mpos_mm: 1000`）。X1 は両端の N.C. スイッチを直列、X2 は + 端のみ。どちらも `limit_pos_pin`
- ほかの軸の N.C. スイッチは `limit_all_pin`。極性は配線してから `Pn:` を見て1本ずつ決める
- どれかの軸のリミットが入ったままだと FluidNC はホーミングを始めない（ALARM:12）。まだ配線していない軸は `NO_PIN` にしておく

### FluidNC でつまずいたこと

- YAML の値のあとに行内コメントを書くと弾かれる（行頭の `#` はOK）
- 工場設定の `i2so:` セクションを消すと起動時にパニックする
- 何もつないでいないリミット入力は浮いているので、スイッチをつなぐ前の `Pn:` は当てにならない
- シリアルの XModem で config を送ると、ランダムに文字が化けて変なパースエラーになる。WebUI のファイルマネージャーで上げて、読み戻してから再起動する
- TMC2208 を mounter に逆挿ししたら、breakout のポリスイッチ（0.5A）が飛んだまま抵抗が戻らなくなり、さらに SN74HCT125N も壊れた。ポリスイッチは 1.1A ホールドに交換、逆挿ししたドライバは捨てる

## 電源

![](https://wp.baku89.com/wp-content/uploads/2026/09/boxrig-1790615850444.png)\
（図：boxrig-power.png — 100V/AC → 3系統のDC電源 → 12V と 24V の端子台 → 各負荷。太線 16AWG、細線 18AWG）

- インレットは1つ（ヒューズ・スイッチ付き C14）→ L/N/E の DIN 端子台 → 3つの電源へ

  - 12V/600W（LED の L・B・R 面）
  - 12V/300W（LED の F 面）
  - 24V/240W（モーター）

- 12V の V− は ESP32 の GND も含めて1つの端子台にまとめる。600W と 300W の V+ は別の端子台

- 24V は PiBot（X1）、X2、YZABC の幹線の3本に分ける。幹線は 1.25sq で最長5m

- 電源 → 端子台は 12AWG、端子台 → 各負荷は 16AWG（幹線）と 18AWG

- モーター信号：ミスミ NWTC6A2-UTP-S（Cat6A、AWG28 より線、φ3.8mm）

- 同時に動くのは、ふだんは NEMA23 ×2 ＋ NEMA17 ×2 くらい

## LED

箱の4面の壁に WS2815（DC12V、黒基板、30 LEDs/m、RGB）を貼っている。

![](https://wp.baku89.com/wp-content/uploads/2026/09/boxrig-1790615814685.png)\
（図：boxrig-led-layout.png — 4面の展開図。テープの折り返しと、面ごとの2ラインの入口。R 面にはフライス盤の配線を通す穴をあける）

- 1面あたり、テープを 100mm 間隔でジグザグに。1ラインで面の半分を受け持ち、各面2ライン（L1/L2、B1/B2、R1/R2、F1/F2）。折り返しは上下に交互
- パネルは 150mm 幅 ×14 枚と 80mm 幅 ×8 枚の組み合わせ。縁は 14.5mm かぶせ
- R 面のライン2本目（R2）は左上から始める。R 面にはフライス盤の配線を通す穴が要る
- 自作基板 **ws-uturn**：テープの折り返しと12Vの注入用
- 自作基板 **ws-fanout**：ESP32（NodeMCU ESP-32S）から8ラインを出す。レベル変換は SN74HCT32N、330Ω 直列
- ESP32 と LED の12V電源は GND を共通にする
- 実測：半面ぶん（420灯）を全点灯して、幹線の入口で 4A。1灯あたり 9.5mA くらいで、データシートの 17mA よりだいぶ少ない
- ファームウェアは PlatformIO＋FastLED（RMT 8ch）。PCからは WebSerial で、独自のバイナリプロトコル（部分更新・ラッチして ACK・塗りつぶしなど）を 921600bps で送る。全画面で 9〜10fps くらいで、コマ撮りには足りる

照明はコマごとに、4面を展開した1枚の画像として記録する。各LEDの位置の色を補間で拾うので、ブロックの高さを LED のピッチの整数倍に合わせる必要はない。いつでも同じ照明を再現できるように、カメラの露出と同じ扱いで全LEDの状態を残す。

## フライス盤との関係

- フライス盤のコントローラは LY-3axis-5.2-V3.4（GD32F303、Grbl 1.1f 互換）。Box Rig とは別の基板で、設定は `$` の値で書く
- 1コマぶんの切削Gコードは、Houdini から書き出した STL をもとに Fusion 360 の CAM API で自動生成する。出てきたGコードは手で直さない
- 切削が終わってスピンドルが退避したら、フライス盤のテーブルがブロックを本体から離れる向きに押し出して、そこを撮る
- ブロックの高さは 60mm か 66.6mm で迷っている。フライス盤が削れる高さは100mmなので、上のブロックが20mmを切ったら次のブロックを載せ、それまでのコマを撮り直してから、残りを接着して続ける

## ソフトウェア

撮影は自作のコマ撮りアプリ [Koma](/koma) の `addsub` ブランチ（[GitHub](https://github.com/baku89/koma)）。1コマの流れは、切削 → 集塵 → スピンドル停止の確認 → Box Rig をそのコマの姿勢へ → LED をそのコマの状態に → 撮影 → 必要ならパーク姿勢で参照ショット。どれも前のステップの完了（FluidNC の `Idle`、LED の ACK、撮影完了）を確かめてから次に進む。

## まだ決まっていないこと

- ガントリープレートの材質（PETG-CF の印刷か、金属か）
- ブロックの高さ（60mm か 66.6mm）
- LED を同時に何灯点けるか。電源と発熱の見積もりがこれで決まる
- LED を貼るパネル（アルミ複合板に傾いている）
- 公開する設計データの形式と置き場所（リポジトリの構成、CAD の形式、ライセンスの細部）

## 2024年のメモ

考えはじめたころのスケッチと、買ったもの。

![](https://wp.baku89.com/wp-content/uploads/2026/06/66e24cc03ecc27001dc17aa2.png)

前方は開閉可能。

構造の参考にしたのは OpenBuilds の IDEX ビルド。

[openbuilds.com](https://openbuilds.com/builds/sigron-idex.9483/)

![](https://wp.baku89.com/wp-content/uploads/2026/07/scrapbox-667e6145e07f4d001cb68329.png)

[右左見拓人](/takuto-usami)さんと色々相談。

![](https://wp.baku89.com/wp-content/uploads/2026/07/scrapbox-66977a0a27e1a3001cb7e689-scaled.jpeg)

- スクリュー軸：1500mm <https://jp.misumi-ec.com/vona2/detail/221000089686/>
- V-Slot 2040 1500mm：AliExpress で購入

届いた。

![](https://wp.baku89.com/wp-content/uploads/2026/07/scrapbox-6697796ef993b8001da47d33-scaled.jpg)
