前提・実現したいこと
最近MicrosoftのHololens2を使ったアプリケーション開発を始めたのですが、rossharpを利用してUnityアプリとrosの間でコミュニケーションをとろうと思っています。
Hololens2で起動するアプリ内でHololens2のカメラ映像をraw_imageとしてrosに配信したいです。
(アプリ開発のツールとしてMRTKを導入しています)
発生している問題
まず最初は何も考えずにImagePublisherコンポーネントのImageCameraにHierarchyからMixedRealityPlaySpace/Main Cameraを選択しました。しかし実行してみると、Display1 No Cameras Renderingと出てしまい、エラーとなりました。
そこでこのMain Cameraを複製したところBuildまで上手くいき、アプリもしっかり動き、以下のようにデータも送られていました。
しかし、この画像をrqt_image_viewを使って可視化してみたところ以下のように画面一面が灰色で上手くHololens2のカメラ映像が表示されません。
いろいろ検索したのですが、そもそもこのスクリプトを使っているところを見つけられず、手本もなく途方に暮れています。
#ImagePublisher.cs
C#
1using UnityEngine; 2 3namespace RosSharp.RosBridgeClient 4{ 5 public class ImagePublisher : UnityPublisher<MessageTypes.Sensor.CompressedImage> 6 { 7 public Camera ImageCamera; 8 public string FrameId = "Camera"; 9 public int resolutionWidth = 640; 10 public int resolutionHeight = 480; 11 [Range(0, 100)] 12 public int qualityLevel = 50; 13 14 private MessageTypes.Sensor.CompressedImage message; 15 private Texture2D texture2D; 16 private Rect rect; 17 18 protected override void Start() 19 { 20 base.Start(); 21 InitializeGameObject(); 22 InitializeMessage(); 23 Camera.onPostRender += UpdateImage; 24 } 25 26 private void UpdateImage(Camera _camera) 27 { 28 if (texture2D != null && _camera == this.ImageCamera) 29 UpdateMessage(); 30 } 31 32 private void InitializeGameObject() 33 { 34 texture2D = new Texture2D(resolutionWidth, resolutionHeight, TextureFormat.RGB24, false); 35 rect = new Rect(0, 0, resolutionWidth, resolutionHeight); 36 ImageCamera.targetTexture = new RenderTexture(resolutionWidth, resolutionHeight, 24); 37 } 38 39 private void InitializeMessage() 40 { 41 message = new MessageTypes.Sensor.CompressedImage(); 42 message.header.frame_id = FrameId; 43 message.format = "jpeg"; 44 } 45 46 private void UpdateMessage() 47 { 48 message.header.Update(); 49 texture2D.ReadPixels(rect, 0, 0); 50 message.data = texture2D.EncodeToJPG(qualityLevel); 51 Publish(message); 52 } 53 54 } 55} 56
試したこと
- PlayerSettingでCapablityのWebCameraを有効する
- Hololens2のResearch Modeを有効にする
- 送られたデータを解凍してから再送し、表示してみる(結果は同じでした)
補足情報(FW/ツールのバージョンなど)
Unity:2019.4.15f1
MRTK:2.5.1
ros:kinetic
rossharp: https://github.com/EricVoll/ros-sharp
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。