🐕

Unreal Engine 5: TurtleBot3の環境構築

2022/07/22に公開

概要

Unreal Engine 5でTurtleBot3の環境を用意します。

Rapyuta Roboticsさんのリポジトリで、Unreal Engine 4.27用のExampleが公開されています。
このExampleをBaseにUnreal Engine 5.0で実行できるようにソースコードを変更します。

変更した箇所を反映したソースコードは後ほど公開します(PullReqとして出すかもしれません)。

実行環境

  • インストール実行環境
unit specification
CPU i9-11900H
GPU GeForce RTX 3080 Laptop
RAM 32GB
OS Ubuntu 20.04.3 LTS
    • Nvidia Driver version
    • 510.39.01
  • Unreal Engine version
    • 5.0.0

参考

https://www.rapyuta-robotics.com/ja/2021/10/22/rosconjp2021blog/

手順

Buildスクリプト実行時までは、Rapyuta RoboticsさんのTurtleBot3のExampleのリポジトリのReadmeに従って、コマンドを実行します。
buildする際に、いくつかの変更を加えます。

  1. TurtleBot3のExampleのリポジトリのクローン
  2. setupスクリプトの実行
  3. ソースコードの変更
  4. ビルド
  5. 実行確認

1. TurtleBot3のExampleのリポジトリのクローン

  • リポジトリをクローンします
mkdir ~/ws
cd ~/ws
git clone --recurse-submodules git@github.com:rapyuta-robotics/turtlebot3-UE.git
sudo apt install git-lfs
git-lfs pull && git submodule foreach git-lfs pull

2. setupスクリプトの実行

  • setup用のスクリプトを実行します
mkdir ~/ws
cd ~/ws/turtlebot3-UE
./update_project_files.sh

3. ソースコードの変更

  • 今の状態のソースコードをビルドすると、エラーが発生し、Buildを完了することができません
  • その為、あらかじめソースコードを変更します(変更せずにBuildした際のエラーメッセージを修正します)
  • 変更箇所は主にUnreal Engine 4.27からUnreal Engine 5.0の移行でAPIの内容が変更された箇所になります

Cannot open assembly '/UnrealEngine/Engine/Binaries/DotNET/UnrealBuildTool.exe': No such file or directory.

turtlebot3-UE/Plugins/RapyutaSimulationPlugins/Source/RapyutaSimulationPlugins/Public/Core/RRCamera.h:44:16: error: no matching function for call to 'IsWithinInclusive' verify(FMath::IsWithinInclusive(HeightRangeInCm.X, 0.f, HeightRangeInCm.Y));

  • 上記ヘッダの中で、Unreal EngineのFMathというクラスからメソッドを読んでいる箇所で、FMathが呼ばれていないというエラー
  • ヘッダをincludeしたが、解消されなかったので、コメントアウトで対応

/turtlebot3-UE/Plugins/RapyutaSimulationPlugins/Source/RapyutaSimulationPlugins/Private/Core/RRStaticMeshComponent.cpp:241:35: error: no member named 'bBuildAdjacencyBuffer' in 'FMeshBuildSettings' sourceModel.BuildSettings.bBuildAdjacencyBuffer = false;

  • エラーが出ているコンストラクタに存在しないメンバ変数を使用しようとしているというエラー
  • 4.27から5.0の移行で、該当コンストラクタから上記メンバが削除(もしくはどれかに変っているかも?)されていることを確認し、コメントアウトで対応

turtlebot3-UE/Plugins/RapyutaSimulationPlugins/Source/RapyutaSimulationPlugins/Private/Core/RRStaticMeshComponent.cpp:319:61: error: no viable conversion from 'TVector4<double>' to 'const TVector4<float>'OutMeshDescBuilder.SetInstanceColor(instanceID, FVector4(FLinearColor(mesh.VertexColors[vIdx])));

  • メソッドの引数の型に一致していないというエラー
  • 引数と渡す前に、TVector4でキャストしていたので、この箇所でTVector4fでキャストするように変更して対応

turtlebot3 -UE/Plugins/RapyutaSimulationPlugins/Source/RapyutaSimulationPlugins/Private/Sensors/RR2DLidarComponent.cpp:146:19: error: no member named 'Actor' in 'FHitResult'

4. ビルド

  • ソースコードをビルドします
cd ~/ws/turtlebot3-UE
./make_editor.sh

5. 実行確認

  • UEEditorを起動し、TurtleBotの環境を確認します。
  • UEEditorまでのPATHは適切なPATHに置き換えます
cd ~/ws/turtlebot3-UE
./run_editor.sh $(pwd) ~/ws/UnrealEngine/Engine/Binaries/Linux/UEEditor

Discussion