TinkerOSにROS2 はまだ早い…

# 0.TinkerOS とTinker Board振り返り
- Tinker Boardのハードは以下記事の2sを使用しています。

https://qiita.com/Manyan3/items/4010428705a6e26a8a3b

* 2023年2月現在 TinkerOSはDebian10ベースなのでFoxy使用します。
* ROSの公式ガイドによるとTier3（使用可ぐらいのイメージ）でソースでのインストールができるとされています。
    * 基本Ubuntu推奨なので、Ubuntuが使えるラズパイよりハードル上がりますね!?
    * ハード的にはラズパイ4ぐらいでありかならAndroidが使えたりユニークなエッジコンピュータ
    

<details><summary>余談です</summary>

* お仕事的にこの手の機材を使うのですが、どうも某社さんのモノご執心（　＾ω＾）・・・
* ニッチ担当なので面白いTinker Boardでやってみましょう。
* Androidは詳しい方が使ってくれるので、あえて触れません。

</details>       

# 1.公式通りにセットアップしてみます。

:::note info
結果
公式のままではインストールできないことが分かり、以下手探りで進めています。
:::


* ROS2のリリースと対応OSリスト

https://www.ros.org/reps/rep-2000.html#foxy-fitzroy-may-2020-may-2023

* ROS2 Foxy ソースセットアップ

:::note info
インフォメーション
TinkerOS（Debian10 Buster）はソースからのインストールのみだと分かります。

:::

## Foxyのインストール

:::note warn
先に結論・・・
もともと素のDebian自体のサポートが Tier3（ほぼ自力でコツコツやれ風）で、
とくにTinkerOSのベースが9ということでROS2はほぼ無理な状況でした。
:::


https://docs.ros.org/en/foxy/Installation/Alternatives/Ubuntu-Development-Setup.html

* どうもUbuntuに最適化されているようで、一部エラーは出ますがロケールは変更できます。

```Tinker:ターミナル画面

locale  # check for UTF-8

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale  # verify settings

```
### リポジトリ追加

```Tinker:ターミナル画面

sudo apt install software-properties-common
♯ sudo add-apt-repository universe

```

:::note warn
注意
コメントアウトしたリポジトリはUbuntuのもので使えません。

:::

* 代わりにこちらのDebian10用のリポジトリを追加してみました（任意）

https://gist.github.com/ishad0w/6ce1eb569c734880200c47923577426a


### 【公式より】各種ツールの追加（Install development tools and ROS tools）

```Tinker:ターミナル画面

sudo apt update && sudo apt install -y \
  libbullet-dev \
  python3-pip \
  python3-pytest-cov \
  ros-dev-tools　♯こちらがインストール不可

# install some pip packages needed for testing
python3 -m pip install -U \
  argcomplete \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest
# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev
# install Cyclone DDS dependencies
sudo apt install --no-install-recommends -y \
  libcunit1-dev

```

:::note warn
注意
ros-dev-toolsがインストールできませんね。

:::

:::note warn
困った点
ビルド関連が軒並み入りませんので、続いてラズパイ・公式合わせて入れていきます。

:::

### ビルド用にいくつか流用（Google’s Coral Edge TPU Dev Board）

* こちらよりアイディアを借用します。また、公式よりcolconもインストール

https://medium.com/swlh/how-to-run-ros-2-foxy-on-googles-coral-edge-tpu-dev-board-319c893526a4

```Tinker:ターミナル画面

pip3 install ros_cross_compile vcstool
#失敗するなら
sudo apt install vcstool

sudo apt install python3-colcon-common-extensions

```

### CMAKEバージョンアップ
* 素のTinkerOSではCMAKEのバージョンが低く、colcon buildに失敗しました。
* 手順はsuudai nさんの手順を参考にさせていただきました。

https://zenn.dev/suudai/articles/8b484ac39fde38

### ament コンポーネント追加
* これもUbuntuのようにパッケージでは提供されていないので、下記で依存関係を見ながら追加していきます。

https://packages.debian.org/sid/devel/



<details><summary>残骸一覧</summary>

* とりあえず残しておきます。


```Tinker:ターミナル画面

#ざっとUbuntuのレベルまで入れていくとこれくらいになります。

♯pip で入るもの

Package                    Version
-------------------------- ---------
ament-copyright            0.13.2
ament-cppcheck             0.13.2
ament-cpplint              0.13.2
ament-lint                 0.13.2
ament-package              0.15.1
ament-pep257               0.13.2
ament-uncrustify           0.13.2
ament-xmllint              0.13.2

colcon-argcomplete         0.3.3
colcon-bash                0.4.2
colcon-cd                  0.1.1
colcon-cmake               0.2.27
colcon-common-extensions   0.3.0
colcon-core                0.12.1
colcon-defaults            0.2.8
colcon-devtools            0.2.3
colcon-library-path        0.2.1
colcon-metadata            0.2.5
colcon-notification        0.2.15
colcon-output              0.2.13
colcon-package-information 0.3.3
colcon-package-selection   0.2.10
colcon-parallel-executor   0.2.4
colcon-pkg-config          0.1.0
colcon-powershell          0.3.7
colcon-python-setup-py     0.2.8
colcon-recursive-crawl     0.2.1
colcon-ros                 0.3.23
colcon-test-result         0.3.8
colcon-zsh                 0.4.0


flake8                     5.0.4
flake8-blind-except        0.2.1
flake8-builtins            2.1.0
flake8-class-newline       1.6.0
flake8-comprehensions      3.10.1
flake8-deprecated          2.0.1
flake8-docstrings          1.7.0
flake8-import-order        0.18.2
flake8-quotes              3.3.2


```


</details>     


# 2.ROS2は新バージョンまで待ちます!!
### 作業終了の原因 
* Debian公式にやりかけ？がのこっているのがROLLING でかつ11である点。
* ROSがoptフォルダに入らない、colconに失敗してしまう（コンポーネント不足は見えていましたが）
* VCSで前段階までもっていくことは可能…
    * まあ、この記事が出ている時点で元OS的にもちょっと無理っぽいところがみられますね。
    * なお、ROS1についての記事です。


https://wiki.debian.org/DebianScience/Robotics/ROS/OnBuster

### ROS2適応表{簡易版、触ったことのある機種のみ）    


| 製品・項目| ラズパイ系 | Tinker{Debian) | Jetson |
|:-----------|------------:|:------------:|:------------:|
| ROS1       | 　　OK※        | まあOK         | OK!         |
| ROS2     | 　OK※ | 厳しい       | OK!         |
| 備考       | Ubuntuでお願いします        | ソースでも厳しい！    | バイナリで簡単     |


### 次にTinkerへの使命
* 泥あそびがうまくなりたい（自分が）
* デビさんでラズパイのちょこちょこっとしたものを動かしてみる。



:::note warn
注意
2023年初春時点でのレポートで無事に動作するようでしたら更新します。
:::