Unityを使ってみる その3(ROS#インストール後のAotHelperに関するエラー)
はじめに
前回の記事でUnityにROS#をインストールし、カメラ映像のSubscribeを試していました。
▼こちらの記事です。
プロジェクトを作成して起動したときは実行できていたのですが、再度プロジェクトを起動したときに問題が起きました。
▼セーフモードで起動し、The name 'AotHelper' does not exist in the current contextというエラーが出ていました。


この状態だとプロジェクトを起動できません。今回の記事ではこのエラーへの対処について紹介します。
▼以前の記事はこちら
別プロジェクトの作成
前回作成したプロジェクトが原因なのかと思い、別のバージョンでプロジェクトを作成してみました。
▼Unity 2022.3 LTSをインストールしました。

▼そのバージョンで、VR Multiplayer Templateのプロジェクトを作成しました。

プロジェクトを起動して、前回の記事と同様の手順でROS#をインストールしました。
▼WindowからPackage Managerを開きました。

▼ROS#を追加しました。

この状態で一度プロジェクトを閉じ、再度起動してみたところ、同じエラーが起きました。
▼セーフモードで起動し、AotHelper関連のエラーがまた起きていました。


どうやら再現性のあるエラーのようです。
エラーへの対処
AotHelperに関するエラーについて調べたところ、情報がありました。
▼以下のページに報告されていた解決策が有効でした。
Newtonsoft.JSONで問題が起きているようでした。
▼古いバージョンだとプリインストールされている場合もあるという記述がありました。ROS#自体、Unity 6には完全に対応していないようです。
https://github.com/siemens/ros-sharp/wiki/User_Inst_Unity3DOnWindows
▼Projectの検索欄でIn PackageのNewtonsoft.Jsonを検索すると、複数あります。

このうち、RuntimeのNewtonsoft.json.dllだけ残して、他のものは削除します。
▼以下のPluginsフォルダ、AOTフォルダに入っていた2つは削除しました。


▼以下のRuntimeフォルダのNewtonsoft.Json.dllだけ残しました。

▼削除後、コンパイルが行われました。

▼その後、プロジェクトを起動することができました!

この状態でプロジェクトを閉じて再度開いても、問題なく起動できるようになっていました。ファイルを削除するのは一度だけでいいようです。
以前作成したプロジェクトへの対処
改めて以前開けなくなったプロジェクトを開いてみました。
▼エラーが起きています。


不要なNewtonsoft.Json.dllを削除しました。
▼以下のRuntimeフォルダのものだけ残しました。

▼問題なく起動することができました!

最後に
一度エラーの対処をしてから、今のところ何回プロジェクトを再起動してもエラーは起きていません。ROS#は前回の記事でもテクスチャが表示されない問題があったりしたので、他にも問題が残っている可能性はあります。
やはりUnityでROSを利用できるほかの手段も試すべきなのかなと思っているところです。

