RaspbrryPi4にROS2をインストール(セットアップ編):再トライ

Raspberry Pi 4にROS2をインストールしてみる
 参考URL:https://qiita.com/Toshiaki0315/items/8a45a82986a431e3e778

Raspberry Pi 4にubuntu Serverをインストールしてみる
 Ubuntuダウンロード先:https://qiita.com/Toshiaki0315/items/6b50e577a01051525f9d
2020年06月7日時点では、Ubuntu18.04、Ubuntu20.04にバージョンアップしている。(両方ダウンロードして確認してみる)

【参考サイト】
 https://qiita.com/kamy9900/items/d148b0602aaa72aa4fe9 ROS2を使ってみる
 https://qiita.com/kamy9900/items/bc27dee90f9358a31af8 ROS2を使ってみる
 https://qiita.com/nomumu/items/db01bc9e39bf1fb116d5  ROS2でロボット開発ツールを整える
 https://qiita.com/tags/ros2?page=1 ROSの勉強(1-9)まであります。

 https://qiita.com/Toshiaki0315/items/08dfaf70ec11b23fe05b  Ubuntu Server キーボードの日本語レイアウト変更


【インストールメディアの作成】:Ubuntu18.04LTS版
 formatterで、SDフォーマット
 etcherで、イメージ書込み

ubuntu/ubuntuから入り、PW変更要求で「ja3dxa8823」に変更

最新のパッケージ情報を入手
 $sudo apt update

パッケージの更新
 $sudo apt dist-upgrade  カーネルの更新もしてくれる「dist-upgrade」

するとエラーが返る。


これは、最初のコマンドで内部処理中の様で時間をおいて実施してほしいというコメントの様だ。
試しに、リブートしてみた。

するとアップデート中の為、リブートには30分かかりますというメッセージが表示され30分後でないとアップグレードが出来ない事が解る。



不要ファイルの削除

 $ sudo apt autoremove


【ROS2のインストール】
<Setup Locale>
 $ 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                2020年06月07日ここまで実行(日本語キーボード配列は異なるのでキー入力が難しい)
                  有線LAN( eth0 : 192.168.1.22 )で、WiFi設定とかSSHが有効になっていないのでリモートPCからの操作が出来ない。

<Setup Sources>
 $ sudo apt update && sudo apt install curl gnupg2 lsb-release  OK
 $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -  OK

 $ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
 下記の様にシンタックスエラーが出る。(キーボード配列が違い苦労するが、間違いは見当たらない。 -c' の「’」を取ったら督促>になった。)

意味不明だったので[arch=amd64,arm64]と入力したが、次々>が出て終了させた。

参考サイトのubuntuのキーボード配列を日本語レイアウトに変更し、キー入力ストレスを解消します。

【ツールの起動】
 $ sudo dpkg-reconfigure keyboard-configuration

RaspberryPi Config の様な画面が表示されるので、下記の通り選択していきます。
 1.「Generic 105-key (Intl) PC」を選択
 2.「Japanese」を選択
 3.「Japanese」を選択
 4.「The default for the keyboard layout」を選択
 5.「No compose key」を選択

 $sudo reboot

日本語キーボード配列に戻りました。<使いやすい>

正常になったキーボードで上記シンタクスエラーコマンドを再入力しても同様のエラーとなる。(引用符で囲まれていない文字列)


<解決しました。>
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs`main">/etc/apt/sources.list.d/ros2-latest.list'
  ’echo 部 と 最後の list' 部の「’」は、数字の「7」の上の「’」
  ’lsb_release-cs’ 部の「’」は、@の上の「‘」だとコマンドが通りました。  OK


【Install ROS 2 packages】
 $ sudo apt update
 $ sudo apt install ros-dashing-desktop
 $ sudo apt install ros-dashing-ros-base

 ## Environment setup
 ### Sourcing the setup script

 $ source /opt/ros/dashing/setup.bash

【Install argcomplete (optional)】
 $ sudo apt install python3-argcomplete

正常に終了しました。

これでROS2のインストールは終了です。


ここまでの操作は、有線LANでの作業だったので WiFi 設定、SSH設定、IP固定を行います。
 WiFi設定参考URL:https://qiita.com/quailDegu/items/63114ba1e14416df8040 

 IPアドレス固定参考URL:https://www.yokoweb.net/2018/05/09/ubuntu18-network-fix-ip-address/



【 WiFi設定 】
 /etc/netplan/50-cloud-init.yaml の編集を行います。同時にIP固定も行います。
 IPアドレス固定は、「192.168.1.160/24」としました。


 $ sudo netplan --debug generate
 $ sudo netplan apply

設定失敗で、WiFi化もIP固定も失敗しています。
 wlp4s0 を wlan0 としてもNG


解決しました。
下記の様に設定
 ここで注意点があります。下の赤枠部分:カッコで囲まない。

 $ sudo netplan --debug generate
 $ sudo netplan apply

エラー無く終了しました。

WiFiが有効となり、IPアドレスが固定(192.168.1.170)されてるか確認します。

wlan0(WiFi)で、192.168.1.170になっています。
リモート リモートPCから、ping 192.168.1.170 で応答があります。


【 SSHの有効化 】
ただ ssh ubuntu@192.168.1.170 が出来ない。( ssh 機能の有効化の必要 )

 参考URL:https://qiita.com/YoshihiroFukuhara/items/9ff5554fd6a7a7d15863

 $ sudo apt-get install openssh-server
 $ dpkg -l | grep ssh    # インストール完了の確認
 $ ps -ax | grep ssh    # サーバーが動作しているか確認

 < ポートの開放 >
 $ sudo ufw enable   # ファイアウォールの有効化
 $ sudo ufw status   # 現状で開放されているポートの確認
 $ sudo ufw allow 22  # 22番ポートを開放
 $ sudo ufw reload
 $ sudo ufw status   # 22番が開放されたことを確認

 serverは起動していますが、ポートが開きません。キー設定がリモートPC側でうまく機能しません。
 キーは、リモートPCの「/home/jun/.ssh/」内にできますが、ここは普通のディレクトリ表示で見えません。

ufw( Uncomplicated FireWall )いわゆるファイアーオール設定ですが、これだけではNGでした。



再度チェレンジしてみます。