様々な工場などで活躍しているロボットアームですが、その中でUniversalRobotsの「UR3e」を操作するUnityアプリの開発を行ったことがあります。
その後、展示会などに行った際に同じロボットアームを見かける事が多々ありました。
恥ずかしながらロボットアーム業界には詳しくないのですが、こういった情報の需要があるのではと考え、情報共有も兼ねて記事を書きました。
残念ながら手元にロボットアームの実機がない為、エミュレーター(URSim)を構築して行います。
OSはWindowsを前提に構築し、UnityのアプリはGitにて公開されている こちら のプロジェクトを使用させてもらいました。
エミュレーターの構築
エミュレーターはDockerを使用する為、下記手順で環境を構築します。
1.DockerDesktopのインストール
こちら からDockerDesktopの取得・インストールを行います。
手順の説明は省略しますが、最終的にdockerコマンドが実行可能になる事が目的です。
2.dockerコマンドの実行
WindowsPowerShellを起動して、下記コマンドを実行します。
それぞれDockerHubから 公式エミュレーター の取得と、エミュレーターを実行のコマンドになります。
docker pull universalrobots/ursim_e-series
docker run --rm -it -p 5900:5900 -p 6080:6080 -p 29999:29999 -p 30003:30003 -p 30013:30013 universalrobots/ursim_e-series -e ROBOT_MODEL=UR3e
-p オプションで指定している番号はローカルPC側とdocker側の対応ポートとなり、これらを紐付けています。
計5つのポートを紐付けていますがそれぞれ、
・5900 … VNC用ポート
・6080 … Webブラウザ経由のユーザーインターフェース用ポート
・29999 … ダッシュボードサーバー用ポート
・30003 … リアルタイム通信用ポート
・30013 … リアルタイム通信(読取専用)用ポート
といった役割となり、必要に応じて変更します。
公式で指定されているポート一覧は こちら です。
また -e オプションでエミュレートするロボットアームの指定が可能となり、今回は「UR3e」を指定しています。
3.ブラウザからエミュレーターを実行
上記コマンドを実行し、各種接続先情報等が表示されたことを確認します。
そのままの状態で、ブラウザから「http://localhost:6080/vnc.html?host=localhost&port=6080」に接続します。
4.エミュレーターの使用準備設定
ブラウザに表示された「接続」ボタンを押下後、開いた画面で「Confirm Safety Configuration」ボタンを押下します。
次画面では目的により項目を選べますが、今回は「RUN A PROGRAM」を選択します。
その後、画面左下に「Power off」と表示されているのでこちらを押下します。
次画面で「ON」→「START」の順にボタンを押下し、上部の項目が全て緑色になったら画面左下の「Exit」ボタンを押下します。
最後に画面上部の「Move」タブを押下し、ロボットアームが表示されていれば準備完了です。
Unityプロジェクトの起動
エミュレーターの準備が完了した後は、Unityで上記プロジェクトを開きます。
「SampleScene」を開いて実行し、画面右側の上から2番目のボタンを押下して「127.0.0.1」に接続します。
接続後にUnity上のロボットアームの姿勢がエミュレーターと同じになっている事を確認します。
その後、画面右側の一番上のボタンを押下すると画面左下に操作パネルが表示されます。
操作パネルでロボットアームの操作を行い、Unityとエミュレーターでロボットアームが同じ動作をしていれば成功です。
▲ 内部構造の詳細は割愛しますが、一定の周期で専用のコマンドをロボットアームへ送信しています。
まとめ
Unityで操作する利点として、VRやMRと組み合わせると3次元操作を直感的に行え、ロボットアームの命令を作りやすくなります。
また、様々なプラットフォームへの展開が行いやすいので環境に適した構成を選択しやすくなります。
実機は限られた場所でしか動作ができないことが多いと思いますので、開発段階ではエミュレーターでの検証はとても効率的でした。
弊社ではハードウェアとxRソフトウェアを連携し、お仕事を支援する便利なアプリの開発も行っています。
ご相談や事例の紹介など、お気軽にお問い合わせください。