####「○○上で△△を動かすようにしといてね」
と簡単そうに言われても途中でハマりまくるのは非IT民に良くあること。
今回は
##### wslにUbuntuを入れてROSを動かす#####
というゴールに辿りつくまでやったことをメモします。
##結論
####ネットに上がってる実績ある手法を遵守しよう
これに尽きます。
以前に別件でUbuntu18を入れたことはありましたが、ROSを動かすのに良く使われているのはUbuntu16でした。記事を参考にしながらやればUbuntu18でもできるだろう、という安直な考えで取り掛かりましたが、これが大誤算。原点に立ち返ってようやく目的を達成できました。
動作確認できた組み合わせは以下の通りです。
- wsl1
- Ubuntu16
- Xming(Xサーバー)
##はじめに試したこと
条件①(初期条件)
- 初期wsl:1
- Ubuntu18
下記サイトではUbuntu16で行っていましたが、もともと環境のあるUbuntu18でまずは取り掛かってみました。
https://qiita.com/takapen_jp/items/57e083a25ec11778b4cb
調べると、Ubuntu18に対応しているROSはROS melodicであるため、記事のUbuntu16-ROS kineticと異なる点に注意しました。
https://www.cman.jp/network/term/subnet/p3/
上記の場合、robosenseでcatkin_makeしたときにエラーが出てハマりました。
robosenseのディレクトリ構成が悪かったのが要因という可能性もありましたが、心が折れたのでUbuntu16でやり直す方向で進めました。
##wsl1からUbuntu18をアンインストールしてUbuntu16を入れて再トライ
*実はwsl2にUbuntu16を入れたことも試しましたが、そもそも参考記事が少なく途中でハマり挫折したのでwsl1にUbuntu16を入れ直しました
####やったこと
wsl1からUbuntu18をアンインストールし、
下記リンクを参考にwsl2のUbuntu16の登録を解除。
https://qiita.com/rubytomato@github/items/a290ecef2ea86ea8350f
PoweShell上で
wsl --set-default-version
でwsl1をデフォルトに設定する。
この時、wsl -l --version
でアクティブなバージョンを確認したところ何も表示されないという謎現象がありましたが、
wsl1でPCに入っているUbunt16を立ち上げ初期化して正常そうだったのでスルーしました。
その後は記事を参照しながら進めました。
####Xming~ROSのインストール
https://naonaorange.hatenablog.com/entry/2018/11/05/200715
####ROSとRobosense
http://www1.meijo-u.ac.jp/~kohara/cms/technicalreport/ubuntu16-04_ros_install
####shell.startupでXmingをPC起動時に起動するようにしておく
https://torisky.com/wslwindows-subsystem-for-linux%e4%b8%8a%e3%81%a7gui%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99%e3%81%be%e3%81%a7%e3%81%ae%e6%89%8b%e9%a0%86/
これをやらないとXサーバーを立ち上げるのを忘れた際に、Error: Can't open display: :0.0
と出てxeyesを表示できません。(忘れるなよって話ですが、操作するのは人間だもの)
####機器との接続用にIPアドレスを固定しておく
https://www.cman.jp/network/term/subnet/p3/
今回は何も機器に繋いでないので動作確認は$ rviz
が動くかで行いました。
##振り返り
その分野に精通してないと変な挙動があった時に対処できないので、環境構築に関しては、まずは自分で判断してアレンジする部分をできるだけ排除した方が良いと痛感しました。先人の知恵を使い倒しましょう。