開発環境づくり１::Raspberry Pi4 + Ubuntu22.04 + ROS2 Humble でロボット作り（その２）

# 開発環境を作ろう！

## 快適な開発環境
ラズパイロボットにモニタを繋げてキーボードを繋げて。。。
それはそれでロマンがありますが、どうしても手間がかかります。
ラズパイも普段使っているパソコンに比べたら非力なので、開発環境は外部で持つのがストレスフリーですね（個人的な意見です

とはいえ、ちょっとした作業はラズパイからでも出来るように、リモート接続して操作できるようにしてみます。

## インストール＆初期設定
最初はモニタ＆キーボード＆マウスを繋がないと初期設定もできないので、つないだ状態でセットアップを終わらせます。
※SDカードにUbuntu Desktop 22.04(64-bit）を書き込み済みの想定

つないだ状態で起動すると、GUIでOSのセットアップが走りますので、セットアップを完了させます。
※このあたりは説明端折ります。

無事Ubuntuが起動したら、ターミナルをひらいて
```bash
$ sudo apt update
```
と
```bash
$ sudo apt upgrade
```
を実行して、アップデートを終わらせます。
次にraspi-configを入れます。（入れておくと便利です）
```bash
$ sudo apt install -y raspi-config
```
raspi-configをいれたら、以下のコマンドで設定画面を出します
```bash
$ sudo raspi-config
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/2bdba1a9-f6cf-0233-d000-497097e96e7d.png)
上記のような画面になるので、
```
3 Interface Options
```
から、
```
I1 Legacy Camera
I2 SSH
I3 VNC
I5 I2C
```
をEnableに切り替えます。
そのあと、再起動が必要になるので
```bash
$ sudo reboot
```
で再起動します。（GUIのRestart... を押してもどちらでも大丈夫です）

再起動したら、次はUbuntu側の設定をします。
左下のメニューボタンから、検索窓に settings と入力して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/da1002d2-38a7-b148-03d4-2db9f3d9cd86.png)
Settings画面を開きます。

Sharingから、Remote Desktop をクリックして
以下の画面のように有効化し、User NameとPasswordの入力をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/c8b327a9-5b12-52c2-5dc3-ce17477ce910.png)

:::note warn
画像では、Enable Lagacy VNC Protocol が有効になってますが、有効にしなくても大丈夫です。
:::

:::note alert
初回設定時は、Keyringに登録するパスワードを聞いてきますが、パスワードを空にして登録してください。
パスワードを入れると、上記設定画面のPasswordが毎回変化してログインできなくなります。
参考URL: https://askubuntu.com/questions/1403943/22-04-remote-desktop-sharing-authentication-password-changes-every-reboot
:::


上記設定が終わったら、次はterminalでconfig.txtを修正します。
ターミナルを開いて
```bash
$ sudo nano /boot/firmware/config.txt
```
と入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/0b9d5323-60f4-7302-c8d6-d3ba0cfb1199.png)
[pi4]の下に
```
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82
```
を追加して、Ctrl+Xで保存終了してください。
上記は、モニターを付けなくてもリモート接続できるようになる＆画面サイズを決める設定です。
hdmi_groupやhdmi_modeについては以下のリンクをご参考ください。サイトの真ん中ら辺にhdmi_groupとhdmi_modeの一覧があります。
https://www.raspberrypi.com/documentation/computers/config_txt.html

設定が終わったら、再起動して一旦ラズパイ側の設定は終わりです。

## リモートデスクトップアプリの導入
WindowsやMacからラズパイへリモート接続する場合、Microsoft Remote Desktopを使うとかんたんに接続できます。

Macの場合はAppStoreからインストール可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/deb57bfb-ee96-851f-f9db-98a680fb8f08.png)


Windowsの場合は最初から入ってますので、リモートデスクトップ接続を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/16a3c1c8-79e0-0953-48fe-dab13f5eef5e.png)

ログインする際に、ホスト名（またはIPアドレス）・ユーザー名・パスワードを入力して接続します。

ホスト名は先述のRemote Desktopに表示されていた Remote Desktop Addressの ms-rd://の後ろに書かれている名前を使います。（私の場合は minitan.local で繋がります）

接続できたら、ラズパイのモニタを外してもう一度つながるかテストしてみてください。

## SSH
Ubuntu Desktop 22.04.1 LTS(64-bit)には、インストール時にSSHは入っていませんので、SSHを入れます。
せっかくなので、リモート接続した状態でターミナルを開いて以下のコマンドを入れてみましょう。

```bash
$ sudo apt install -y openssh-server
```

インストールしたら、再起動後も有効になるようにします。
```bash
$ sudo systemctl enable ssh
```
以下のコマンドで現在の状態を確認します。
```bash
$ sudo systemctl status ssh
```
以下のような画面 Active: active とでてたら起動していますのでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/b72d50b9-da61-33b3-22f0-81637db00e1e.png)
Active: inactive と出ていた場合は、以下のコマンドで起動しましょう
```bash
$ sudo systemctl start ssh
```

これでSSHも入りました。

macの場合はターミナル、windowsの場合は[Windowsターミナル](https://learn.microsoft.com/ja-jp/windows/terminal/tutorials/ssh)などでSSH接続してみましょう。

Macの場合はターミナルから
```bash
$ ssh username@[ホスト名]
```
でSSH接続できます。
usernameの部分はご自身で設定したユーザー名、[ホスト名]の部分はリモート接続で使用したホスト名（私の場合はminitan.local）を使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51900/47327415-5b78-7555-9423-a1a0bc05ab4f.png)
無事接続できたら、SSHの設定は完了です。
次はPC側の環境作りですが、長くなったので[開発環境づくり２](https://qiita.com/shoichi4411/items/c775d3c3c040742e9925)につづきます。

## 目次

* [[←前回]Raspberry Pi4 + Ubuntu22.04 + ROS2 Humble でロボット作り（その１）](https://qiita.com/shoichi4411/items/c0f490ee8f9f22f02666)
* [[次回→]開発環境づくり２::Raspberry Pi4 + Ubuntu22.04 + ROS2 Humble でロボット作り（その３）](https://qiita.com/shoichi4411/items/c775d3c3c040742e9925)