カスタムサービス開発
カスタムサービス開発
このページは、開発者がカスタムサービス機能を持つ AddOn パッケージを開発する方法を案内することを目的としています。
注意:
本章は入門チュートリアルであり、主な目的は開発者がカスタムサービスの基礎知識と基本的な開発プロセスを理解することです。
具体的なアプリケーション機能を持ち、特定の作業シーンで使用されるカスタムサービス AddOn パッケージの開発方法については、後の完全なケース章を参照してください。
カスタムサービスについて
カスタムサービスとは
カスタムサービスとは、バックグラウンドでタスクを実行するサービスであり、ユーザーはその存在を直接感じることはありません。
カスタムサービスの役割
カスタムサービスは、ユーザーとのやり取りに関係のないバックグラウンドのデータ処理やビジネスロジック処理を担当します。Http ノードと連携することで、フロントエンドインターフェースとデータをやり取りし、カスタムコマンド、カスタムWebページ、または他のクライアントに対してデータの受信、処理、保存、計算、分析などのサービスを提供します。
AddOn カスタムサービスパッケージの作成
この例では、カスタムサービス型の AddOn を作成します。この AddOn の機能は、ロボットの電源状態を照会する外部サービスを提供することです。
注:
以下に出てくる JAKA_Service は、これから作成する AddOn カスタムコマンドパッケージのパッケージ名です。
ステップ1:AddOn フォルダーを作成
まず、基本となる AddOn フォルダーを作成する必要があります。このフォルダーには .ini 形式の設定ファイルと、データを保存する Json ファイルを含める必要があります。
最初から手動で作成してもよいですし、AddOn 開発パッケージリポジ*トリの「*Template」ディレクトリにある AddOn テンプレートを使用しても構いません。
ディレクトリ構造
|——JAKA_Service |——AddOn.json |——JAKA_Service_config.ini
- **AddOn.json ** Json ファイルの内容は空でもかまいません。後続の手順で自動的にデータが生成されて書き込まれます。
- **JAKA_Service_config.ini ** 設定ファイルの具体的な内容は次のとおりです:
[AddOnInfo] convention = 3.0 name = JAKA_Service description = "JAKA AddOn サービスデモ" version = 1.0 type = 1 portal = 10006 url = http://localhost/myAddOnUi languagetype = node-red service = AddOn.json serviceenabled = 1
ヒント
詳細な設定項目の説明については、「設定ファイルの説明**」を参照してください。クリックして[ジャンプ]** 👈 :::
ステップ2:パッケージ化&アップロード
次に、ステップ1で作成したフォルダーをパッケージ化し、コントローラーにアップロードして命令ブロックの開発を行います。パッケージ形式は .tar.gz である必要があります。
Windows では、7z などの圧縮ツールを使用して再圧縮することができます。

App の付加管理プログラム画面で AddOn をアップロードします。

まとめ
ここまでで、AddOn パッケージの初期化作業を完了し、AddOn の標準形式としてパッケージ化し、コントローラーにアップロードしました。 次に、AddOn の具体的な機能をさらに作成していきます。
ステップ3:カスタムサービスの開発
- AddOn を実行し、AddOn が使用するポート番号を確認します。

- ブラウザーを開き、アドレスバーにロボットの IP + ポート番号(
IP:Portal)を入力して開発者画面にアクセスします。

まとめ
AddOn が実行されると、コントローラーはその AddOn パッケージ内の AddOn.json ファイルに基づいて node-red インスタンスを起動します。 ロボットの IP と AddOn が現在使用しているポート番号を介して、この node-red インスタンスにアクセスできます。
ご注意:
AddOn の実行ポートは固定ではなく、システムが実際の状況に応じて動的に割り当てます。したがって、AddOn のポート番号を使用するたびに、 現在のポート番号を確認する必要があります。コード内でこのポート番号を使用する場合、最適な方法は AddOn の設定ファイル「xxx_config.ini」から取得することです。
- 左側のノードバーの JAKA AddOn ディレクトリで
「ロボット情報の取得」ノードを見つけ、 ダブルクリックして編集ページを開き、名前を「電源状態」と設定し、「ロボット状態」→「電源状態」を順に選択します。
ヒント
「ロボット情報の取得」ノードの使用方法は node-red のノードヘルプドキュメントで確認できます。
- http in
ノードを追加し、GET リクエストをリッスンします。
まとめ
http in ノードを使用して接続し、URL を定義した後、Robot_IP:AddOn_Port/Your_URL を通じてサービスにリクエストを送信できます。 しかし応答を受け取ることはできません。したがって、次に応答メッセージオブジェクトを作成し、リクエストに返す必要があります。
- 応答メッセージを生成し、
http response ノードを使用してリクエストに応答します。
ヒント
- 最初はクエリ結果の型やデータ構造がわからないため、
injectノードを使って手動でクエリをトリガーし、debug ノードで戻り値を確認できます。 - 応答は文字列(String)またはオブジェクト(Object)型のみのため、ブール値(Boolean)はオブジェクト内に入れて返す必要があります。
テスト
ここでは API インターフェーステストツールを使用して、先ほど作成したサービスをテストします。
おめでとうございます
🎉 これでカスタムサービスを通じてロボットの電源状態を照会できるようになりました!
