レイヤーレス3DプリンターをRaspberry Piで自作できる「OpenCAL」—— 光と回転で瞬時に造形するCAL方式のオープンソース制御ソフト

タグ OpenCALCAL方式3DプリントRaspberry Piレイヤーレス造形オープンソースバイオプリンティングDIY電子工作columnコラムlinuxLinuxraspberry-piGitHubcomputed-axial-lithography

レイヤーレス3DプリンターをRaspberry Piで自作できる「OpenCAL」—— 光と回転で瞬時に造形するCAL方式のオープンソース制御ソフト

ひとことでいうと

OpenCAL は、**CAL(Computed Axial Lithography)**という方式の3Dプリンターを制御するための、無料で使えるオープンソースのソフトウェアです。ふつうの3Dプリンターが層を重ねて形を作るのに対し、CAL方式は光を当てながら容器を回転させ、形全体を一気に固めるまったく異なる仕組みを使います。Raspberry Pi 5(小型のシングルボードコンピューター)の上でPythonというプログラミング言語で動き、市販の光学部品と3Dプリントで作ったパーツだけで研究用の装置が組めます。設定の変更から印刷の開始まで、すべての操作をGUI(グラフィカルな操作画面)から行えるため、コマンドを打ち続ける必要がなく扱いやすい設計になっています。研究者はもちろん、電子工作が好きなDIY愛好家にも挑戦しがいのあるプロジェクトです。

こんな人におすすめ

  1. 3Dプリンティングの研究者・エンジニア: CAL方式特有のレイヤーレス(層なし)造形を、自前のハードウェアで実際に実験・検証したい方に最適です。商用機では触れられない低レベルのパラメーターを自由に調整できるので、新素材や複雑な形状の研究に向いています。

  2. Raspberry PiでDIYを楽しむ電子工作ファン: GPIO(Raspberry Piの外部端子)の制御・SPI通信・ステッパーモーター駆動・カメラ連携など、多彩なハードウェア制御が一通り学べる実践的なサンプルとして活用できます。配線の基礎からLinuxサービスの登録まで、一連の流れを手を動かしながら覚えられます。

  3. バイオプリンティングや軟質素材を研究する方: サポート材(造形物を支える仮設の支柱)が不要で、内部構造も一体成形できるCAL方式の特性は、ゲル状素材や生体適合性のあるレジンを使った実験と相性が抜群です。研究室レベルのプラットフォームとして、コストを抑えながら独自の造形装置を持てます。

インストール・使い方

OpenCALはRaspberry Pi 5での動作を前提にしており、事前にSPIインターフェース(チップ間のデータ通信規格)を有効化しておく必要があります。以下の手順では、ターミナル(文字を入力して命令を送る画面)を使います。コマンドはコピー&ペーストで貼り付けるだけで大丈夫です。

Step 1: ソースコードを手元に取得する

git clone https://github.com/computed-axial-lithography/OpenCAL.git
cd OpenCAL
sudo apt update
xargs sudo apt install -y < apt_requirements.txt

git clone は、インターネット上にあるコード(リポジトリ=ソースコードの置き場)を自分のRaspberry Piにコピーする命令です。続く apt install で、動作に必要なシステムツールをまとめてインストールします。

Step 2: Python仮想環境を作り、ライブラリを揃える

python3 -m venv --use-system-packages .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt

仮想環境とは、プロジェクトごとに必要なライブラリをまとめて管理できる「専用の箱」のようなものです。ほかのプロジェクトに影響を与えずに済みます。source .venv/bin/activate を実行すると、この箱の中に入った状態になります。

Step 3: ハードウェア設定を自分の配線に合わせる

utils/config.json をテキストエディタで開き、ロータリーエンコーダー・ステッパーモーター・LEDのGPIOピン番号(端子の番号)を実際の配線に合わせて書き換えます。

{
  "rotary_encoder": {
    "clk_pin": 5,
    "dt_pin": 6,
    "btn_pin": 19
  }
}

この設定ファイルが実際の配線と一致していないと、GUI起動時に動作が止まることがあります。慎重に確認してください。

Step 4: ソフトを起動する

python3 -m opencal

GUIが立ち上がれば成功です。印刷を実行するときは、MP4形式の動画ファイルをUSBストレージに用意し、GUIの「Print from USB」から選ぶだけです。

(任意)Step 5: 起動時に自動で立ち上がるようにする

sudo cp assets/opencal.service /etc/systemd/system/
sudo systemctl enable opencal.service

systemd(Linux標準のサービス管理ツール)にOpenCALを登録すると、Raspberry Piの電源を入れるだけでGUIが自動起動します。モニターなしのヘッドレス運用も可能になります。

動かしてみた

Pythonランタイムの動作確認とプロジェクト全体のファイル構造の取得に成功しました。opencal/__main__.pyopencal/__init__.py というエントリーポイント(プログラムの入り口)が正しく配置されており、pyproject.tomlrequirements.txt によるパッケージ管理もきちんと整備されていることを確認できました。

spidev(Raspberry PiのSPI通信ライブラリ)はCコンパイラとSPIハードウェアを必要とするライブラリのため、全機能の確認にはRaspberry Pi 5の実機が必要です。実機環境では、ステッパーモーターの回転・LED点灯・カメラとの連携・GUIからの印刷操作がまとめて動作する設計になっています。

なお、付属のサンプル動画では 回転速度9rpm が推奨値として設定されています。初回の動作確認にはこの値を基準に始めるとスムーズです。

デモについて

OpenCALは、Raspberry Pi 5のGPIOピン・SPI通信・ステッパーモーター・カメラデバイスへの物理的なアクセスが前提の設計となっています。これらのハードウェアがない環境では主要機能の動作確認ができないため、ブラウザ上でのインタラクティブなデモは提供していません。実際の造形動作を確認するには、CAL対応ハードウェアを組み上げたRaspberry Pi 5での実行が必要です。

はじめの一歩: セットアップのコツ

初めてOpenCALを試す際に押さえておきたいポイントをまとめました。

  • まず config.json を最優先で編集する: ここがすべての起点です。GPIOピン番号が実際の配線と1つでもズレていると動きません。実際の配線図と照らし合わせながら入力してください。
  • 仮想環境の有効化を忘れずに: ターミナルを開き直すたびに source .venv/bin/activate を実行する必要があります。プロンプト(コマンド入力欄の先頭)に (.venv) と表示されていれば有効な状態です。
  • SPIを事前に有効化する: Raspberry Piの設定画面(raspi-config)から「Interface Options」→「SPI」を有効にしておかないと、spidev を使うデバイスが認識されません。
  • 印刷動画はMP4形式で用意する: OpenCALが読み込める動画はMP4形式です。USBストレージに入れてGUIから選択します。
  • 自動起動設定は慣れてから: systemd への登録はオプションです。まず手動起動(python3 -m opencal)で動作を確認してから、安定してきたら自動起動を設定するのがおすすめです。
  • 回転速度はサンプルの9rpmから始める: 付属サンプル動画の推奨値が9rpmです。パラメーターを変える場合は一度に複数変えず、1項目ずつ変更して挙動を確認してください。

活用アイデア

  • 複雑な内部構造の試作: 従来のFDM(溶融積層)方式では難しい中空構造や細かい内部形状も、CAL方式ならサポート材なしで一体造形できます。メカニカルパーツや医療モデルの試作に応用できます。
  • Raspberry Pi組み込み開発の学習素材: GPIO制御・SPI通信・OpenCVカメラ連携・systemdサービス登録など、組み込みLinux開発で必要なスキルがOpenCAL一本で一通り学べます。授業や社内研修のハンズオン教材にも向いています。
  • 新素材・新レジンの評価実験: 設定ファイルから光照射パターン・回転速度・露光パラメーターを変更し、異なるレジン素材や造形サイズへの適応を系統的に実験できます。研究室での素材評価プロセスをデジタル化できます。
  • バイオプリンティング研究の基盤: ゲル素材や生体適合性レジンを使った造形実験において、サポート材不要かつ短時間で固まるCAL方式は大きなメリットがあります。細胞や組織を模したモデルの作成にも適しています。
  • 光学系カスタマイズ研究: プロジェクターの照射方向・レンズ倍率・露光時間などのパラメーターをソフトウェア側から調整できるため、光学系を変えたときの造形精度への影響を定量的に評価する研究に使えます。
  • DIYメーカーコミュニティへの貢献: オープンソースのため、改造・フォーク・プルリクエストが自由です。新しいハードウェアへの対応や制御アルゴリズムの改善を実装し、コミュニティに還元するきっかけとしても活用できます。

用語とポイント解説

CAL(Computed Axial Lithography) CTスキャン(医療用の断層撮影)の逆アルゴリズムを3D印刷に応用した技術です。プロジェクターで多方向から光パターンを照射し、回転するレジン容器内の目標部位だけを選択的に固めます。かんたんに言うと「MRIを逆再生して物を作る」ようなイメージです。従来のSLA/DLPより高速で、サポート材が不要という特長があります。

レジン(光硬化樹脂) 紫外線や特定波長の光を当てると固まる液体のプラスチック素材です。かんたんに言うと「光に反応して固まる特殊な液体」です。CAL方式ではこのレジンを透明な容器に入れて回転させながら光を当てることで、形を作ります。

GPIO(General Purpose Input/Output) Raspberry Piの基板に並ぶ小さな金属のピン(端子)で、外部のデバイスと信号をやり取りするための出入口です。かんたんに言うと「Raspberry Piが外の部品と話すための端子」です。ステッパーモーターやロータリーエンコーダーはここに配線します。

SPI通信(Serial Peripheral Interface) チップとチップの間で高速にデータをやり取りするための通信規格のひとつです。かんたんに言うと「部品同士が会話するための決まったルール」です。OpenCALでは主にLEDドライバーとの通信に使っています。

spidev Raspberry PiのSPIバスをPythonから操作するためのライブラリ(追加機能のパッケージ)です。かんたんに言うと「PythonでSPI通信をするための道具」です。Cコンパイラでのビルドが必要なため、Raspberry Pi実機環境での動作が前提となります。

ステッパーモーター 電気信号のパルス(一定の刻み)に合わせて、正確な角度だけ回転するモーターです。かんたんに言うと「命令した角度だけ確実に回る精密なモーター」です。CAL方式では、レジン容器を正確な速度で回転させるために使います。

OpenCV 画像・映像処理のためのオープンソースライブラリです。かんたんに言うと「コンピューターに目の機能を与えるソフト部品」です。OpenCALではカメラからの映像取得や画像処理に活用されています。

systemd Linuxの標準サービス管理システムで、プログラムをバックグラウンドで自動起動させる仕組みです。かんたんに言うと「電源を入れたら自動でソフトを起動してくれる仕組み」です。OpenCALをsystemdサービスとして登録すると、Raspberry Piの電源オンだけでGUIが立ち上がります。

仮想環境(venv) Pythonのライブラリをプロジェクトごとに分けて管理するための機能です。かんたんに言うと「プロジェクト専用のライブラリ置き場」で、ほかのプロジェクトに影響を与えません。source .venv/bin/activate で有効化してから作業するのが基本です。

pyproject.toml Pythonプロジェクトの設定情報(パッケージ名・バージョン・依存関係など)をまとめたファイルです。かんたんに言うと「このソフトが何者かを書いた説明書」です。OpenCALでは requirements.txt と組み合わせてパッケージ管理に使われています。


OpenCALは、大学や研究機関レベルのCAL技術をDIYで再現できる、国内外でも珍しいオープンソースプロジェクトです。Raspberry Pi 5と市販の光学部品を揃えれば、既存の3Dプリンターでは難しかった内部構造の一体成形や新素材の造形実験、そして組み込みLinux開発の学習など、幅広い目的に応えてくれます。ぜひバイオプリンティング研究の造形プラットフォームRaspberry Pi組み込み開発の実践教材などに活用してみてはいかがでしょうか。