Anaconda環境のROS・ROS2を再インストール

# 0.前振り

<details><summary>再インストールするまで</summary>

* 開発機のスペック不足からOmniverseは中止して、Hugging Face Transformer環境構築
    * OmniverseランチャーからIsaacSIMを起動するとドバーっとエラー表示。
    * ここでROS2環境が壊れていることに気づく
    * さらに見ていくとROSも駄目だ・・・
    * 会社の偉い方に「Manyan3さん Omniverseの評価どうですか？」・・・できるけど、うごかないっす。

</details>

* ROSがらみはいわゆる導通確認だけできて、ビルドはできない≒壊れている状態。
    * ros xx コマンドもないと言われる状態(ROS2)。
    * catakin xxは動く

***
##　環境
* PC（x86系）Ubuntu20.04 
    * ros はnoetic
    * OmniverseでROS2連携に使うので、とりあえず環境がちゃんとできればよろし！
    * Anaconda上で動かしています。 
    

# 1. ROSのアンインストール

* 参考にさせて頂いた記事　@take4eng さんの記事から環境に合わせ、一部コマンド変更しています。

https://qiita.com/take4eng/items/70f167320ede46e4139c

* ROS アンインストール
    * 私はfoxyとnoeticをつかっていたので、下記の表記です。
    * また、先にoptの実体を削除しておくと怒られないです。

```Ubuntu:ターミナル

sudo rm -rf /opt/ros/foxy/
sudo rm -rf /opt/ros/noetic/

sudo apt purge -y ros-foxy-*
sudo apt -y autoremove

sudo apt purge -y ros-noetic-*
sudo apt -y autoremove

```



:::note info
インフォメーション
* bashrcのsourceの所なども漏れなく消しておきましょう。

:::

**/etc/apt/source.list.d/の整理**
* とりあえず、不要なros絡みの表示は消してしまうか、.list-> .bakにして無効化します。

# 3．ROSのインストール

**インストール実行( @take4eng　さんの記事より)**

* さも私が書いたようになるのはよろしくないので、参照元のインストール１~６まで実行します。
* ７ rosdepの初期化を実行してからでもよいのですが、消し切れなかった以前のnoeticの残骸を削除します。


```Ubuntu:ターミナル

cd /etc/ros/rosdep/source.list.d/
sudo rm 20-default.list

```

:::note info
インフォメーション
* 先に消さないでrosdepを実行すると上記フォルダの表示が被っていると注意されます。

:::

## rosdepの初期化します

```Ubuntu:ターミナル

sudo rosdep init
rosdep update

```

* インフォメーションの様に失敗するようなら、こちらで実行後改めて初期化を。

```Ubuntu:ターミナル

sudo rosdep install -r --from-paths src -i


```

* 8のROSのワークスペースを作成、ビルドはcatkin_makeでなくbuildになっています。 
    * ワークスペースは任意の名称で構いません

```Ubuntu:@take4engさん記事8

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin build

```

* なお、ビルドが失敗してしまう時はsrc以外のフォルダを削除します。 
    * エラーをみるとpython3-empyエラーがでているようです。
    * 下記の @Ponkotsu_TK さんの記事を有難く参考にさせて頂きます。
    
https://qiita.com/Ponkotsu_TK/items/9ff1de9a8c478f7c006b


```Ubuntu:ターミナル

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3


```

* 改めて　catkin buildをして成功を確認します。
* 成功すれば、淡々と@take4engさん記事 9,10を実行し、同じ表示となるはずです。

# 4. ここで一息(2022年10月6日更新) 

* 先輩方の各記事のおかげで無事にROSが回復しました。

:::note info
インフォメーション
* ようやくROS2まで復活しましたので、追記します。

:::

## 5 ROS2はちょっと厄介
***

* しっかり、ROS2の痕跡を消し切ります。1.に記載しました。 
    * 今回はfoxyでしたので、とにかくfoxyなところは消し切ります。
    * 例えば、ワークスペースのsrcフォルダとかいろいろゴミが残っていませんか？
    * source もしっかり削除
    * srcフォルダを削除して、改めて必要なソースgit cloneで持ってきます。

* 基本的な再インストール準備はこちらを参考にしました。

https://qiita.com/RE-yura/items/b37c584555b6b2c322c7


:::note warn
注意
* ロケールを変更したくない場合は実行しないようにします。
* パッケージのインストールコマンドが”Dashing”なのでお使いのものに変更します。
* foxy関連のファイルの削除が不十分だと新たにファイルを入れなおしてもcolcon build に失敗(0個ビルド）とか言われます。

:::

* もともとOmniverseのROS2ｘIsaacSIMと組むのに使っていた環境はこちらでしたので、改めてお世話になります。

https://qiita.com/RE-yura/items/b37c584555b6b2c322c7

## 6. Omniverse 用のROS2パッケージもやっぱり厄介
* よく出てくる〇〇.cmakeファイルがないとかパスが通ってないとか言われます。 
    * colcon buildではmoviet やその他が不足している、またはconflictと警告されてしまいました。
    

```Ubuntu:moveitのエラーの時

sudo apt-get install ros-foxy-moveit*


```

```Ubuntu:sudo apt-get install ros-foxy-*

sudo apt-get install ros-foxy-moveit*


```

:::note info
インフォメーション
* 本当は一つずつ丁寧に行くのがいいと思いますが、素人の力技ですね・・・

:::

:::note  warn
注意その2(22年10月17日追記)
* Setuptoolのバージョンが新しい場合、setup.cfgの記述(例)"install-scripts="をアンダーバーにしてほしいと警告がでます。これをinstall_scriptsの様にすることでcolcon buildが通る様になりました。
* 以前はちょっと前だったので、こんな表示はなかったです・・・

:::


## 7. ようやく元通りに＋今後の課題
* Turtlebot3＋Gazeboがしっかり動くようになりました。
* 開発会社でない素人集団のエンジニアですので、別環境で動かせるようにエクスポートしていかねば・・・・