STEP1~7では扱わなかった内容についても紹介します。
- Windows 10 Home バージョン 21H2
- Unity 2021.3.4f1
- Unity-Technologies/ROS-TCP-Connector v0.7.0
- Docker Desktop 4.9.1
Unity-Technologies/ROS-TCP-Connectorでは扱うすべてのROSのメッセージファイルをC#にて定義する必要があります。
com.unity.robotics.ros-tcp-connector/Runtime/Messagesから予めUnity用に用意されているROSのメッセージ形式を確認できます。
使うROSのメッセージがROS-TCP-Connectorに予め含まれていない場合にのみ、C#のスクリプトを用意する必要があります。
変換したいROSのメッセージファイルを用意します。
例えばRaspberry Pi Mouse実機に搭載されているLEDの点灯・消灯状態はLedValues.msgというメッセージファイルにて定義されている形式で管理されます。
https://github.com/rt-net/raspimouse/blob/1.0.0/raspimouse_msgs/msg/LedValues.msg
変換にはROS-TCP-Connectorのメッセージ作成機能を用います。
メニューバーからRobotics -> Generate ROS Messages...を選択します。
ROS message pathを指定します。
ROSのメッセージファイルをダウンロードしてきたフォルダを指定します。
対象の.msgファイルを選択してBuild msgをクリックします。
以上でROSのメッセージファイル作成は完了です。Unityプロジェクト内のAssets/RosMessagesフォルダにC#のスクリプトが作成されています。
Input SystemのOn-Screen Stickを用いてスクリーン上にJoyStickを作成し、Raspberry Pi Mouseを操作します。
Package Managerを開いてInput Systemがインストールされているか確認します。
メニューバーから Window -> Package Manager を選択します。
Package Managerを開いたら、Unity Registryを選択して、Input Systemにチェックマークが付いているか確認します。
もしもインストールされていない場合は、インストールを実行してください。
Input SystemのOn-Screen Stickを配置します。
前のステップで作成したロボット操作用ボタンの代わりにOn-Screen Stickを使用するため、
HierarchyのCanvas -> Panelを選択し、
Inspectorでチェックを外してPanelを非表示にします。
HierarchyのCanvasの子オブジェクトとしてImageを作成します。
ImageのInspectorでSource ImageにKnobを選択します。
ImageのInspectorでAnchor Presetsを右下に設定し、
さらにPositionとWidthとHeightを以下のように設定します。
- Pos X : -200
- Pox Y : 200
- Pos Z : 0
- Width : 50
- Height : 50
ImageのInspectorでAdd Componentを押し、
On-Screen Stickを選択します。
さらにOn-Screen StickのControl PathにGamepad -> Left Stickを選択します。
EventSystemのInspectorでStandalone Input Moduleの
Replace with InputSystemUIInputModuleを押します。
まず準備として、UnityScripts/JoyStickフォルダをUnityプロジェクトのAssetsフォルダにコピー(Assets/JoyStickとして配置)します。
次に、HierarchyのPublisherのCmdVelPublisherのチェックを外します。
さらにPublisherのAdd Componentを押してOnScreenStickCmdVelPublisherを追加します。
HierarchyのPublisherにアタッチしてあるOnScreenStickCmdVelPublisherのMove Actionの+マークを押します。
そしてadd Up\Down\Left\Right Compositeを選択します。
2D Vectorをダブルクリックして、
Composite Typeを2D Vector、
ModeをAnalogに設定します。
さらに、UpにはGamepad -> Left Stick -> Upを選択します。
DownとLeftとRightも同じように設定します。
On-Screen Stickのインターフェースを調整します。
HierarchyのCanvasの子オブジェクトとして、UI -> Imageを作成します。
名前はWhiteCircleとします。
また、画像で示すようにImageの上にWhiteCircleを配置するようにしてください。
WhiteCircleのInspectorで、Anchor Presetsを右下に設定します。
さらにPositionとWidthとHeightを以下のように設定します。
- Pos X : -200
- Pos Y : 200
- Pos Z : 0
- Width : 100
- Height : 100
また、画像で示すようにSource ImageにAssets/JoyStick/Textures/white_circle.pngを設定してください。
Source Imageにwhite_circleが設定できない場合、
white_circleのInspectorでTexture TypeがSprite (2D and UI)になっているか確認してください。
以上の作業を終えると、On-Screen StickでRaspberry Pi Mouseを操作できます。



















