Help us understand the problem. What is going on with this article?

【UiPath】見えないRPAロボットに受肉してみた

More than 1 year has passed since last update.

RPAロボットはソフトウェアなので実体が無く姿が見えません。
PCの画面上で次々にアプリケーションを起動して操作してくれる様は映えるんだけど、宗教における仏像とかキリスト像と同じように、姿を具現化した偶像が無いと私のような大衆はイマイチ萌えないわけです。

というわけで、今回は姿の無いRPAロボットに受肉を試みようと思います。
【目に見える姿を与えたRPAロボットのイメージ】
gxvdemo.gif
名前はとりあえずUmemaruから取ってウメ子にします。

まず肉体=デスクトップマスコットを作る

利用するソフトウェアは以下。個人利用なら全部タダで使えます。
お絵かき:GIMP
モーション付け:Live2D(Live2D Cubism 3 FREE
アプリ化:Unity(Unity Persional

受肉する手段は何でもいいのですが、個人的にLive2Dに興味があったので今回チャレンジ。Unity用に強力なSDKが用意されているのもポイント。
デスクトップマスコット自体の作り方だけでかなりのボリュームなので、そこはLive2DやUnityに詳しい人の記事にお任せして、ここでは簡単に手順だけ紹介。
umeko.png
1. GIMPで動かす部位毎にレイヤー分けしてパーツを描く
2. 全部のパーツが出来上がったらPSDにエクスポート
3. PSDをLive2D Editorに読み込んで動くモデルを作る(公式チュートリアル
4. 作ったモデルにLive2D Animatorでモーションをつける(チュートリアル+公式マニュアル
5. UnityにLive2D SDKをロードし、Live2Dから出力したファイルをインポート→Asset化される
6. UnityでSDKコンポーネントを活用しつつ、追加でスクリプト書いたりAnimatorで動作を制御する
7. モデルの背景を透過するために Unity_TransparentWindowManager パッケージを利用
8. Windowsアプリケーション用にビルドしてデスクトップマスコット完成
unity.png
Live2D公式で動作保障してるPSD作成ソフトはPhotoshopとCLIP STUDIOの2つですが、別にGIMPでもいけます。ただテクスチャアトラス作成時に解像度の修正が必要だったので、コメントに要望いただければその部分も追記します。

ロボットマスコットの状態遷移

今回は超簡単に、こんな状態遷移でマスコットを動かします。
transition.png
オートメーションが動いてなければ居眠り、動いている間はランダムでモーション動かし、終わったら次の実行までまた居眠りに戻る。動いているはずのタイミングで寝てたら、何かのトラブルで止まっている事がわかるというわけです。

この状態遷移をUnityで実装するのですが、オートメーションが実行中かどうかを判断する必要があります。

UiPathロボットプロセスを監視する

UiPathロボットがオートメーションを実行している間は"UiPath.Executor.exe"というプロセスが上がっているので、その有無を条件判断に使います。

UnityのAnimatorにisRunningというbool型のパラメータを用意して、それをExecuting(活動)⇔Sleep(居眠り)のtransitionのConditionsに使います。
animator.png

で、UiPath.Executorを監視するスクリプトをGameObjectにアタッチすればOK。

UiPathProcessController.cs
using UnityEngine;
using System.Diagnostics;

namespace UiPathController
{
    /// <summary>
    /// UiPathのProcessに応じてGameObjectの状態遷移を行う
    /// </summary>
    public class UiPathProcessController : MonoBehaviour
    {
        Animator animator;

        private void Start()
        {
            animator = GetComponent<Animator>();
        }

        void Update()
        {
            try
            {
                foreach (Process p in Process.GetProcesses())
                {
                    if (p.ProcessName.Equals("UiPath.Executor"))
                    {
                        animator.SetBool("isRunning", true);
                        break;
                    }
                    else animator.SetBool("isRunning", false);
                }
            }
            catch
            {
            }
        }
    }
}

できた

というわけで無事にロボットへの受肉を終えたため、その様子を動画にしてみました。

まあ自宅だとしょっちゅうオートメーションを動かすわけじゃないから、ほとんど寝てるんですが。

このウメ子、せっかく作ったので今後いろいろな場面で活躍してもらおうと思います。
→2019/01/13 早速Youtube動画に登場してもらいました。
 オートメーション作成10箇条
過去の週アスのLive2D紹介動画を真似て、ゲームパッドの操作で表情やモーションを切り替えられるようにしました。私の代わりに画面に登場してUiPathネタを解説するのが主な仕事です。


今回はここまで。
デスクトップマスコットを作るのに、平面イラストを3Dっぽく動かせるLive2Dという技術を使いました。

このLive2D、2010年頃からいくつかのゲームに使われるようになって、最初に存在を知った時は
「何その中途半端な技術プークスクス」
とか笑ってましたが、改めて公式サイトを訪れてみると・・・

すみません大変素晴らしい技術です。世界中の二次元に住む人々に夢を与えてくれます。個人ならFREE版使えるし、公式のチュートリアルビデオもあるので一人で勉強できます。
Unityもそうですが、個人でタダで勉強できて好きに使える点はUiPathと同じですね。こういう製品大好きです。

UmegayaRollcake
UiPath Academyの外堀を浅く埋める形でUiPathネタを書いていこうと思ってます。
https://www.youtube.com/channel/UCdo1xFEK-wRiVIQDs2cdvUg
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away