他のロボットでの利用と制御層の分離
glyph_motion の文字・筆画処理は COBOTTA 専用ではありません。文字の幾何情報と配置結果を生成する層と、ロボットを動かす層は別です。
確認できるクラスと役割
glyph_motion.lib.font_geometry.FontStrokePath:筆画の点列を表現するデータ型。glyph_motion.font_line_layout.FontLineLayout:KanjiVG から文字を読み込み、文字セルへ配置する。ロボット接続やペン上下、速度制御は行いません。glyph_motion.font_line_layout.PositionedCharacter:文字と、配置後のstrokesを保持します。glyph_motion.font_bcap_cobotta_writer.FontBcapCobottaWriter:COBOTTA 用の実機制御クラスです。CobottaBcapを使用し、絶対 P 座標へ変換して書字します。
他のロボットに対応する手順
FontLineLayoutを使って文字列から配置済み筆画を生成します。返された各PositionedCharacter.strokesを利用します。筆画内の点列を、使用するロボットの座標系・単位・書字面へ変換します。座標軸の符号、XY交換、原点、ツール姿勢、動作範囲をロボットごとに決定します。
各筆画の開始前にペンを上げて始点へ移動し、ペンを下ろして筆画の点を順に描画します。筆画の終了時にはペンを上げ、次の筆画へ移動します。
ロボット固有の接続、アーム取得、サーボ有効化、速度・加減速設定、停止、エラー復旧は、ロボット用の制御クラスで実装します。
必要に応じて、その制御クラスをデバイスサーバーに公開します。
FontBcapCobottaWriterをそのまま別機種で使用できるという意味ではありません。実機投入前に、生成した点列、座標変換、作業範囲、ペン退避高さ、緊急停止を検証してください。
COBOTTA とデバイスサーバー
添付された実装で確認できる COBOTTA 側の制御フロントは font_bcap_cobotta_writer.py の FontBcapCobottaWriter です。connect()、set_params()、write()、disconnect() などを実装しています。write(text, start_height_mm=None, return_to_start=None, new_line=None) は実機への書字処理であり、別ロボット向けに共通化された呼び出しではありません。
デバイスサーバー側の公開メソッド名やクライアント API は、サーバー実装の実ファイルで別途確認してください。ここでは、未確認の write_text() や preview_text() をこのクラスの実装済み API として扱いません。