Raspberry Pi 4でRealsense T265を使う

Raspberry Pi 4でRealsense T265を使うための方法をまとめました。
また、ROSで使用する方法もまとめました。

基本的にはintelが提供している[インストールガイド](https://github.com/IntelRealSense/librealsense/blob/v2.42.0/doc/installation.md)の通りに進めるだけになります。

- https://github.com/IntelRealSense/librealsense/blob/v2.42.0/doc/installation.md

# 環境
- Raspberry Pi 4 Model B 8G
    - Ubuntu 18.04
    - ROS melodic
- Realsense T265


# Realsense SDKのビルド
## 必要なパッケージのインストール
2行目は、ubuntuのバージョンによって異なります。今回はubuntu 18用です。

```
$ sudo apt install libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
$ sudo apt install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at
```

## Realsense SDKのビルド
Gitリボリトリをクローンし、最新のリリースをcheckoutします。
記事の執筆時点では最新版は「v2.43.0」ですが、自分は「v2.42.0」を使用しました。

```
$ git clone https://github.com/IntelRealSense/librealsense.git
$ cd librealsense
$ git checkout -b v2.42.0 refs/tags/v2.42.0
```

## パーミッション変更スクリプトとパッチスクリプトを実行
```
$ ./scripts/setup_udev_rules.sh
$ ./scripts/patch-realsense-ubuntu-lts.sh
```

## ビルド
最適化されたSDKをビルドするため、Build typeを`Release`としました。
ビルドには時間がかかるためしばらく待ちます。

```
$ mkdir build && cd build
$ cmake ../ -DCMAKE_BUILD_TYPE=Release
$ sudo make uninstall && make clean && make && sudo make install
```

# Viwerの実行
Realsense T265を接続し、ビューアを起動します。
デバイスを認識しセンサデータが表示されれば成功です。

```
$ realsense-viewer
```

# ROSラッパーのビルド
次にROSでRealsense T265を使用する方法を説明します。
なおROSラッパーをビルドするにあたり、自分で開発しているパッケージと区別するため別のworkspaceを作成しました。
これはただの好みなので、必須ではありません。

```
$ mkdir -p 3rd_ws/src
$ cd 3rd_ws
$ catkin_init_workspace
$ catkin_make
```

```
$ vi ~/.bashrc
source ~/ros/3rd_ws/devel/setup.bash # 追加
```


## ddynamic-reconfigureのインストール
後述のROSラッパーのビルドでエラーが発生したため、事前に１つのパッケージをインストールしておきます。

```
$ sudo apt install ros-melodic-ddynamic-reconfigure
```

## ROSラッパーのビルド
Gitリポジトリをクローンしビルドします。
バージョンはクローンの時点で最新だった「2.2.22」を使用しました。

```
$ cd {ros workspace}/src
$ https://github.com/IntelRealSense/realsense-ros.git
$ cd realsense-ros
$ git checkout -b 2.2.22 refs/tags/2.2.22
```

ビルドはコチラも最適化を有効にするため、Build Typeを`Release`としました。

```
$ cd {ros workspace}
$ catkin_make clean
$ catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
$ catkin_make install
```

`ddynamic-reconfigure`をインストールしていないと、以下のエラーが出ました。

```
Could not find a package configuration file provided by
"ddynamic_reconfigure" with any of the following names:
...
```

## 実行
パッケージに付属のlaunchファイルで起動します。

```
$ roslaunch realsense2_camera rs_t265.launch
```

別ターミナルを立ち上げ、データが正しく出力されているか確認します。

- ROS Topicのリスト確認
/camera/xxx が出力されているtopicです。
Realsense T265の位置情報は `/camera/odom/sample` です。

```
$ rostopic list
/camera/accel/imu_info
/camera/accel/sample
/camera/gyro/imu_info
/camera/gyro/sample
/camera/odom/sample
/camera/realsense2_camera_manager/bond
/camera/tracking_module/parameter_descriptions
/camera/tracking_module/parameter_updates
/diagnostics
/rosout
/rosout_agg
/tf
/tf_static
```

- ROS Topicのメッセージ型確認

```
$ rostopic type /camera/odom/sample
nav_msgs/Odometry
```

- ROS Topicの表示

```
$ rostopic echo /camera/odom/sample
---
header: 
  seq: 7903
  stamp: 
    secs: 1615099037
    nsecs: 892016649
  frame_id: "camera_odom_frame"
child_frame_id: "camera_pose_frame"
pose: 
  pose: 
    position: 
      x: -0.114610008895
      y: -0.0117419790477
      z: 0.317946970463
    orientation: 
      x: 0.932430207729
      y: -0.34159758687
      z: 0.105063930154
      w: 0.0533539503813
  covariance: [0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001]
twist: 
  twist: 
    linear: 
      x: -0.0246414352683
      y: -0.0712390058292
      z: -0.072351145566
    angular: 
      x: 0.11608623321
      y: 0.234681139377
      z: -0.413131162251
  covariance: [0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001]
---
```


# 参考
- [Realsense SDK](https://github.com/IntelRealSense/librealsense)
- [ROSラッパー](https://github.com/IntelRealSense/realsense-ros)
- [realsense-rosのインストールに躓いた話](https://qiita.com/forestsignal/items/9e840956362d1c0be186)