Unity側:ROS2からUnityにカメラデータ送信

ROS2 Unityとの通信“で通信ができていることを前提にスクリプトを記載している。

板Planeを追加し、TestScreenと名前を変更します。

板の作成
名前を変更

Unity側の設定やスクリプトです。スクリプトはROS2とUnityの通信で使用したコードを変更します。メッセージファイルの名前も変更されているので注意!

テクスチャを作成し、受け取ったデータをテクスチャデータとして設定するだけです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using CameraMsgMsg = RosMessageTypes.CppPubsub.CameraMsgMsg;

public class Subscriber : MonoBehaviour
{
    private ROSConnection ros;
    public string mTopicName = "topic";
    public GameObject mTestScreen;
    Texture2D mTexture;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Start");//スクリプトが開始されたことを確認
        ROSConnection.GetOrCreateInstance().Subscribe<CameraMsgMsg>(mTopicName, Callback);

        mTestScreen = GameObject.Find("TestScreen");//テクスチャ表示先のオブジェクト
        mTexture = new Texture2D(1, 1);
        mTestScreen.GetComponent<Renderer>().material.mainTexture = mTexture;//テクスチャをオブジェクトに設定
    }


    void Callback(CameraMsgMsg msg) {

        mTexture.LoadImage(msg.img_data);//ROS2側から受け取ったデータでテクスチャ更新
    }
}