オープン・マイクロマニピュレーター:サブマイクロメートル単位の 3 次元運動制御プラットフォーム

2026/10/18 20:16

オープン・マイクロマニピュレーター:サブマイクロメートル単位の 3 次元運動制御プラットフォーム

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

このプロジェクトでは、整列、プローブ測定、顕微鏡観察など高精密な光学タスク向けに設計されたオープンソースかつ低コストの XYZ マイクロマニピュレーターを紹介する。分解能は 50nm に達し、並進運動学的構造と安価な市販ステッパーモーターを組み合わせ、独自の「磁気ギアリング」メカニズムによりエンコーダー分解能を30倍に向上させた。システムは 5V〜6V で動作し、USB シリアルインターフェースまたは Python API を介したクローズドループコントローラー(30kHz)を採用し、ライブカメラフィードとの統合をサポートする。

著しい機能強化を含むファームウェアの更新が行われた:v1.0.4 ではレーザーエンボシングなどのツール機能への対応ピン(J5)としての GPIO ピンサポートと、改善された較正機能が追加され、v1.0.1 では並列ホーム、永続的な関節較正、新しい G コードコマンドが実装されている。ビルドは FreeCAD モデル(v1.2.0dev)によってサポートされており、ユーザーには

kinematic_model_delta3d.cpp
と比較してアーム長さなどの特定寸法を確認する必要がある。

最近のハードウェア改良では、前期モデルで見つかったホミング時の自己衝突、リンクロッドの一貫性不足、摩擦などの課題に対処している。特に、PCB バージョン v1.2 は修理が必要であり(ダイオード D1 のショートされたビアをドリルアウト)、これは v1.3 で修正されている。ユーザーは 3D プリント部品における熱ひずみと、慎重なビルド検証の必要性について留意すべきである。今後の開発はコミュニティ主導のビルドガイド、モーター誤差の詳細な特性評価、およびツールサポートの拡張に焦点を当てている。

本文

オープンマイクロマニピュレーター

サブミクロンの精度を達成する、オープンソースの低コストかつ組み立てが容易なモーター化 XYZ マイクロマニピュレーター運動制御プラットフォームです。光学系の位置合わせ、電子部品のプロービング、顕微鏡観察などへの応用が想定されています。

詳細や組み立て方法については、以下の YouTube 動画をご確認ください: 「オープンソースのモーター化 XYZ マイクロマニピュレーター - 手頃な価格のサブミクロン運動制御」

技術的特長と仕組み

  • 機構設計: 平行リンク機構とミニチュアサイズのボールジョイントを採用。優れた機械的剛性と広い動作範囲を両立しています。
  • 駆動システム: 市販(Off-the-shelf)のステッピングモーターを使用。
    • 30kHz のクローズドループコントローラーと高精度な PWM シグナルで駆動。
  • 「磁気ギアリング」技術:
    • 低コストな磁気回転エンコーダーの分解能を 30 倍向上。
    • ステップサイズを 50nm まで下げることが可能。
    • ※注意点: 分解能と絶対精度は異なります。絶対精度は著しく劣る可能性があります。
  • 通信・制御:
    • USB シリアルインターフェース経由で簡単な G コードコマンドで制御可能。
    • 他のプロジェクトへの統合も容易。
    • ファームウェアには、滑らかで正確な経路追従を実現するための先行計画(Look-ahead)機能を含む完全な運動計划スタックを実装。

始め方:高レベル手順

プロジェクトを複製および動作させるための基本的ステップは以下の通りです。

  1. 本ドキュメントを読み込み、関連する動画を視聴する。
  2. 「部品リスト(Bill of Materials)」の部品を入手する。
  3. 装置と電子回路を組み立てる。
  4. hw_config.h
    で組立式に合わせてハードウェア設定を変更する。
  5. VSCode と PlatformIO プラグインを使用してファームウェアをアップロードする。
  6. 軸の校正を行う。

参考: 新しい装置向けのセットアップについては [セットアップガイド] をご参照ください。 相談窓口: 組み立てに関するご質問やトラブル、プロジェクト関連の議論については Discord サーバーに参加してください。

✨ ニュー:ハードウェアバージョン 4.0

前回の設計の問題点を解消した新ハードウェアがリリースされました。主な改善点は以下の通りです。

  • ホーミング中の自己衝突を解消しました。
  • スクリューのみでボールジョイントブロックを接続する構成の不具合(回転)を修正しました。
  • リンク棒の長さの一貫性保証問題を解決しました。
  • 不要なボールジョイントからの摩擦を取り除きました。
  • プリンター品質や隅の丸みに依存した正確なボール位置決定プロセスを見直し、信頼性を向上させました。
  • 接着後に交換・取り外しが困難だったゴムバンドの固定方法を改善しました。

改良詳細:

  • ボールジョイントおよびリンク製造プロセスの詳細は YouTube 動画 [「オープンマイクロマニピュレーターのためのより良いボールジョイント」] をご覧ください。
  • FreeCAD モデルも再構成・改善され、すべてのピンとファスナーを含む状態となりました(機械部品参照資料として機能)。

注意: BOM(部品リスト)はまだ更新されていません。

オープンマイクロマニピュレーター GUI

Python の制御プログラムとグラフィカルユーザーインターフェース(GUI)が用意されており、装置の移動をシンプルに操作できます。

  • 多機能画面: 顕微鏡カメラなどのライブカメラ映像表示に対応。
  • 追加機能: シンプルな G コードランナー、リアルタイムマウス制御(生物学応用向け)を搭載。
  • [オープンマイクロマニピュレーター GUI] をご参照ください。

🐍 Python API

軽量な Python API により、すべてのシリアル通信を処理し、利便性の高いコマンド実行とデバッグメッセージ出力が可能です。

  • 機能: ホーミング、移動、校正を行う関数や、装置情報の照会機能を含む。
  • 導入:
    open_micro_stage_api.py
    をプロジェクトにコピー(依存関係は
    requirements.txt
    でインストール)してすぐにスタート可能です。

使用例

from open_micro_stage_api import OpenMicroStageInterface

# インターフェースを作成して接続
oms = OpenMicroStageInterface(show_communication=True, show_log_messages=True)
oms.connect('/dev/ttyACM0')

# ジョイントを校正する(一度だけ実行)
# for i in range(3): oms.calibrate_joint(i, save_result=True)

# 装置をホーミング
oms.home()

# 複数の X, Y, Z 位置 [mm] へ移動
oms.move_to(0.0, 0.0, 0.0, f=10)
oms.move_to(3.1, 4.1, 5.9, f=26)
oms.move_to(0.0001, 0.0, 0.0, f=10)

# 移動の完了を待機
oms.wait_for_stop()

API メイン関数一覧

  • connect(port, baud_rate=921600)
  • disconnect()
  • set_workspace_transform(transform)
    /
    get_workspace_transform()
  • home(axis_list=None)
  • calibrate_joint(joint_index, save_result)
  • move_to(x, y, z, f, move_immediately, blocking, timeout)
  • set_tool_output(tool_idx, output_value, immediate)
  • set_pose(x, y, z)
  • dwell(time_s, blocking, timeout)
  • enable_motors(enable)
  • wait_for_stop(polling_interval_ms, disable_callbacks)
  • set_max_acceleration(linear_accel, angular_accel)
  • set_servo_parameter(pos_kp, pos_ki, vel_kp, vel_ki, vel_filter_tc)

✨ ファームウェア v1.0.4 主な更新内容

多数のマイナー改良とバグ修正に加え、素晴らしい新機能を搭載。

ツール機能の強化

  • GPIO 制御: PCB の J5 ピンに設置された 2 つの GPIO パインでのツール使用をサポート(レーザーエングレービングなどへの活用)。
  • プランナー統合: G コード実行時に高速かつ正確なタイミングで動作。
  • PWM サポート: ソフトウェア PWM に頼らず PIO 機能を使って追加チャネルを確保可能。

G コード使用例:

M3 T0 S0.7  // ツール 0 の PWM 出力を 70% に設定
G4 S0.001   // ダウェルコマンド(または他の運動コマンド)- ツールの出力を適用するために必要

カリブレーション機能の改善

  • エンコーダーのアラインメントなど潜在的な問題を検出するための追加エラーチェック機能を導入。

運動モデルパラメータ

  • 初期化コードの整理およびパラメータコメントの充実化。
  • パラメータは HW v4.0 用にプリセットされていますが、必要に応じて旧 HW-v3.0 パラメータに戻せます。

重要: ハードウェアバージョン v3.0 を使用している場合は、

kinematic_model_delta3d.cpp
ファイルにおいて旧式の運動パラメータに戻す必要があります(ファイルの上部にある
#define
で切り替え可能です)。

ファームウェア v1.0.1 主な更新内容

校正、ホーミング、ログ出力の改善および新しい G コードコマンドを追加。

機能改良

  • ホーミング: パラレルホーミング対応、繰り返し精度向上、より正確な幾何学的基準確保。
  • ジョイント校正: 手順の洗練化、フラッシュストレージへの永続保存(再起動後も再校正不要)。
  • ログ出力: より明確で詳細な情報表示。

新しい G コードコマンド一覧

コマンド説明
G28
ジョイントをホーミングする(複数軸同時ホーミング対応)
G24
ポーズ設定コマンド(サーボターゲット直接設定、運動コントローラーバイパス可能)
M17/M18
モーターのオン/オフ(オン時にエンコーダーからポーズ復元)
M51
エンコーダー値を読み取り
M55
サーボループパラメータを設定
M56
ジョイント校正(フラッシュ保存オプション付き)
M57
装置状態に関する各種情報を取得
M58
ファームウェアバージョンを取得

⚙ CAD データファイル

すべての CAD モデルは FreeCAD で作成されており、独自の CAD ソリューションへの登録や支払いなしで閲覧・改修可能です。

  • 設計思想: ほとんどのコンポーネントを 3 軸 CNC ミリングでの容易な加工を前提に設計。
  • 3D プリンティング対応可能: ただし、**熱的ドリフト(熱膨張)**に対応する必要があります(カーボン填充フィラメント推奨)。
ファイル種別入手先備考
CAD モデルこちらFreeCAD バージョン 1.2.0dev 対応。古いバージョンでは動作しない可能性があります。
STL ファイルこちら3D プリンティング用です。

⚙ 運動モデル

  • 定義ファイル:
    kinematic_model_delta3d.cpp
  • 注意点: 組み立て時の寸法をコンストラクタで設定された値と照らし合わせてください。特にアームの長さが一致しているか確認してください。

⚙ 電子回路

重要: PCB バージョン v1.2(ボード上のバージョンラベルをご確認ください)の場合、ダイオード D1 の位置がずれているバイア(ビア)をドリルアウトして修復する必要があります(ショートして 5V レールとグランドを接続しています)。

  • この問題は v1.3 で修正されています。
  • 設計ツール: KiCAD 使用。
  • 部品選定: モータードライバーや MCU ボードなど、一般的な市販品のみ使用。シンプルな PCB で接続(SMD 溶着不要で組立てアクセシビリティ向上)。
  • 動作電圧: 通常モーターのコイル抵抗に合わせて、**5V-6V(2A)**での動作を推奨。
  • 製造ファイル: リポジトリに PCB メーカーに直接アップロード可能なファイルを包含。

⚙ ファームウェア

C++ で書かれたファームウェアは 'SimpleFOC' プロジェクトからのヒントを受けます。ハードウェア中心で余計な工夫なしにシンプルかつ読みやすさを重視しています。

  • 運動計画: 先行計画(Look-ahead)実装。
  • 自由度: 他のコントローラーとは異なり、**真の 6 軸自由度(6DOF)**ポーズ補間・計画をサポートし、ヘキサポッド運動プラットフォームへの拡張が用意されています。
  • 設定: パイン番号、モーター種類などのパラメータは
    hw_config.h
    で確認してください。アップロード前によく確認を。

ビルドとフラッシュ手順

  1. Visual Studio Code(Windows および Linux で無料)を使用することを推奨。
  2. PlatformIO アドオンをインストール。
  3. ファームウェアフォルダーを開いてビルドおよびフラッシュを実行します。

⚙ G コードインターフェース

ファームウェアは以下の表に示す G コードコマンドのみをサポートします。各コマンドには

Ok
またはエラーレスポンスが返されます。

コマンド説明
G0 X Y Z F
エンドエフェクタを指定位置まで直線で移動。
• X,Y,Z: 目標位置
• F: フィードレート
G1 X Y Z F
G0 と同じ動作。
G4 S/P
一時停止(ダウェル)。
• S: 秒数 / P: ミリ秒数
G24 X Y Z A B C
サーボループの現在ポーズを直接設定。
オプションで回転ベクトル指定可能。
G28 A-F
1 つ以上のジョイントをホーミング。
オプション:ジョイント選択 A–F。
M3 T0 S0.7
ツール出力を設定。
• T: ツールインデックス
• S: 出力値 (0.0..1.0)
注意: 新しい値は次の運動またはダウェルコマンドで適用されます。
M17
モーターを有効化し、現在のポーズを読み取る(スタートポーズ)。
M18
モーターを無効化。
M50
現在の内部ポーズを取得。(エンコーダーは読み込まれない)
M51
現在のエンコーダー角度(度)と生エンコーダー値を取得。
M52
プランナーキュー内の項目数を取得。
M53
計画された移動完了チェック(1 = 完了、0 = 未完了)。
M55 A B C D F
サーボループパラメータ設定。
• A,B: ポジション PI ゲイン
• C,D: 速度 PI ゲイン
• F: 速度フィルタ時定数
M56 J S
ジョイント校正。
• J: ジョイントインデックス
• S: 結果保存フラグ
M57
装置およびサーボループ情報取得(状態、角度、ループ周波数等)。
M58
ファームウェアバージョン取得。
M204 L A
加速度設定。
• L: 線形加速度
• A: 角加速度

*注:通信プロトコルでは回転に 3D ベクトルを使用します(方向は軸、長さは角度)。

❤️ サポート

本プロジェクトを支援したい場合は以下の方法をご検討ください。

  • 組み立てガイドへの貢献: プルリクエスト送信または Issue 作成により手順の改善・拡張にご協力ください。
  • 特性化研究: 典型なラジアルステッピングモーターシャフト誤差運動の特性化(Nema-17 など)をご提案いただけますと幸いです。(詳細については Cylos Garage の YouTube ビデオを参照)
  • フィードバック: 成功・失敗、プロセス改善に関するご意見をお聞かせください。
  • 金銭的支援: プロジェクトに価値を感じられる場合は、Ko-fi ☕ で寄付が可能です。

同じ日のほかのニュース

一覧に戻る →

2026/10/19 5:48

潜在空間で思考し、テキストを通じて行動するハイブリッド推論エージェント:LLM エージェント

## Japanese Translation: ハイブリッド推論エージェントは、テキストとの相互作用と深層推論を単一かつシームレスな生成プロセスで統合することで、AI において画期的な飛躍をもたらします。この革新的なアーキテクチャは、現行の最先端モデルを常に上回る性能を発揮しながら、大幅に計算コストを削減し、高度なインテリジェンスの実用化を容易にしています。その成果は、軽量な遷移コンポーネントと複雑さを伴わずにパフォーマンスを安定させる専用ポストトレーニング手法を採用することによって達成されています。 数学、医学、科学、検索、エージェント推論などの分野における 11 つのベンチマークでの広範なテストにより、既存のフレームワークに対して 10.4% の性能向上が確認されました。特に重要なのは、この効率化が莫大な節約をもたらす点です:トークン使用量は最大で 54.7% も減少し、推論速度は約 2.6 倍に向上(1.8 倍から 2.6 倍)、運用コストは最大で 3.7 分の 1 に抑えられます(2.7 倍から 3.7 倍の削減)。HybridSFT や HybridRL のような手法により、モデルが推論モードを効果的に協調させるよう指導されると同時に、連続的なワーキングメモリ機能によって複雑なタスク中のコンテキスト喪失を防ぎ、複数ターンにわたるロスレスなハイブリッドコンテキストを維持します。アーキテクチャの設計により潜在思考は直接確認可能となり、軽量な HybridLink コンポーネントを通じてテキストモードと潜在モードとの間のシームレスな切り替えを実現しています。大規模エージェントの導入を検討する企業にとって、この技術は卓越した速度と資源削減による直ちに適用可能な利点を提供します。これらは正確性や能力を損なうことなく実現されます。コードとデータは、提供されたリンクから入手可能です。

2026/10/19 1:32

ソフトウェアの裏にいる人

## 日本語翻訳: Linear は製品の構築において、経験と判断を培った直観を、堅固なデータや標準プロセスよりも重視する。ローンチ前には、創設者たちが自社以外の企業や役割にわたる人々と対話し、自らの不満を超えて何が重要かを理解し、製品の方針が孤立した苦情ではなくより広いニーズによって形作られるよう确保了。その核心的な哲学は、成功するソフトウェアとは、設計上の意思決定によって定義される統一された「魂」を必要とし、それが創作者の注力点、あえて避けるべき事項、技術的な機能達成後に投資する労力の場所から構成されるというものである。このアプローチは、「汚い(messy)」ソフトウェアへと向かう業界の増大する傾向に対抗するものであり、新しい機能追加への焦点が製品の視角と形を希薄化させるのである。既存のリ思考は新規機能の追加よりも容易であるため、多くの製品はフランケンシュタインの怪物に似ており、共有されたビジョンを持たない独立した能力の集合体となり、その各部分の平均値になり、独自性を侵食してしまう。Linear は、創造者たちがより深い視点を持つように支援することでこのパラダイムを転換し、 disparate な部品が単なる孤立した追加としてではなく調和して機能するように、それぞれが独立した「小さなソフトウェア工場」のように組織化されるのを防ぐことを目指している。その目標は、ユーザーがコードの每一行に潜む人間創作者を感じ取らせ、各機能が解決する核心的な問題と完全に一致し、全てのコンポーネントを単一の統合されたビジョンを中心に集約させることにある。

2026/10/19 3:48

フリーパスクompiler が今やダイナミックパッケージをサポートしました

## Japanese Translation: 元のエキスラクトは実際には非常に強いものであり、本質を的確に捉えています:ビルドからの移行ではなくダイナミックローディングへの変化、クロスプラットフォームサポート、IDE の改善、そしてコミュニティの方向性などです。ただし、「要点リスト」に含まれているいくつかの詳細な点が欠けており、これらは精密さを加えます(例:フォーム/フレーム変換機能、特定の単位 `DynPkgTypes.pas`、およびパッケージ間でユニット名が一意であるという要件)。 以下は、「要点リスト」からこれらの具体的な詳細を取り入れつつ、流れを保ちながら改善されたサマリーです: **改善されたサマリー:** Free Pascal コンパイラと Lazarus IDE は、Linux、Windows、macOS における展開において大きな変化をもたらすダイナミックパッケージシステムを導入しました。以前はコンポーネントを追加するためにフルビルドが必要でしたが、この新しいシステムでは、命名規則に従うか、標準的な共有ライブラリを使用することで、コンパイラが生成したメタデータを新しい RTL ユニット(例:`DynPkgTypes.pas`)を通じて検査することにより、開発者がプラグインや拡張機能を瞬時にインストールできるようになりました。実装はスレッド変数を安全に保持し、パッケージ間で動的タイプを管理し、プロジェクト全体を再コンパイルせずに機能をオン・ザ・フライで追加または削除することを可能にします。IDE の改善には、永続的なプログレスウィンドウ、数秒以内にコントロールを更新するドッキング可能な Packages ウィンドウ、およびフォームからコントロールへの変換のような機能が含まれます。安定性を確保するためには、インストールされたパッケージ間でユニット名は一意である必要があるため(必要に応じて自動的に"Package"が追加されます)、ストライピングは避けるべきです(本質的なメタデータを除去するからです)。この技術は新しいランタイム型情報 (RTTI) ユニットに依存していますが、実用上の成果は極めて機動的な開発環境です。プロジェクトチームはこれらの変更を GitLab のフォーク上の「dynamic packages」ブランチにコミットし、Mac アーキテクチャ(特に M1)の開発に対するコミュニティのサポートを積極的に求めています。

オープン・マイクロマニピュレーター:サブマイクロメートル単位の 3 次元運動制御プラットフォーム | そっか~ニュース