LoginSignup
1
2

More than 3 years have passed since last update.

RaspberryPi4にUbuntu18.04とROSを入れて、モニターレスVNC接続できるようにする

Last updated at Posted at 2021-04-30

ラズパイにROS環境を構築する方法についてはネットの先輩方が様々な良記事を書かれておりますが、
細かいところで躓いたりしたので、誰かの役に立てればと思い、今回記事にしてみました。

1.目的

RaspberryPi4にUbuntu18.04を入れてROS(melodic)を動作させる環境を構築する。
また一応デスクトップ環境での確認も行えるよう、GUIとモニターレスVNCの設定も行う。

2. Ubuntu18.04のインストール

SDカードへのOSイメージの書き込みからROSインストールまでの基本的な流れについては下記サイトが参考になります。

なお今回は、OSイメージは下記サイトでダウンロードできるRaspberry Pi 3 (64-bit ARM) preinstalled server imageを利用しました。

wifiの設定について

netplanを用いてwifi設定を行いますが、参照先サイトの記述だとGUI環境上でwifiや画面共有の設定変更が行えないため、50-cloud-init.yamlrendererのプロパティを追記します。
なおssh等行う時ホスト名を利用するため、今回はIP固定にしておりません。

50-cloud-init.yaml
network:
    version: 2
    renderer: NetworkManager <-追記
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    wifis:
        wlan0:
            access-points:
                YOUR-SSID:                    
                    password: "PASSWORD"
            dhcp4: true
            optional: true

※備考:ホスト名の変更方法

$ hostnamectl set-hostname 新しいホスト名

上記コマンドでホスト名を変更して再起動後、sshでubuntu@新ホスト名でsshが可能になっています。

Ubuntu-desktopのインストール

ネットワークの設定が完了したらGUIのインストールを行います。
Ubuntu公式のチュートリアルでは下記コマンドでインストールを行っていますが、自分の場合インストール完了後に再起動するとGUIは立ち上がりませんでした。。

$ sudo apt install ubuntu-desktop

なので、下記方法でGUIをインストールします。

$ sudo apt install tasksel
$ sudo tasksel install ubuntu-desktop

上記コマンドでインストール完了後、再起動するとGUIが立ち上がるはずです。

3. ROSのインストール

一つ一つコマンドを叩いていくのも面倒なので、ROS講座のスクリプトを真似させていただき、下記のようなシェルスクリプトを用意して実行させます。

ros_install.sh
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654


sudo apt-get -y update
sudo apt-get -y upgrade


sudo apt-get -y install ros-melodic-desktop
apt-cache search ros-melodic

sudo rosdep init
rosdep update


echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/melodic/setup.bash

sudo apt-get -y install python-rosinstall

なお今回インストールするROSは、ラズパイ上でシミュレーションは行わせるつもりはないためros-melodic-desktopを選択しました。
上記スクリプトの処理が終わったら、一度再起動します。

$ sudo reboot

再起動完了後、turtlesim等でROSが動作しているか確認を行います。

$ roscore
//別端末
$ rosrun turtlesim turtlesim_node
//別端末
$ rosrun turtlesim turtle_teleop_key

上記確認で特別問題がなければROSのインストールは完了です。

4.VNCの環境設定

基本的にはsshで作業を行うためGUIは必ずしも必要ではないですが、ラズパイ側のGUIを用いて確認したい事(RealSenceのViewer等)もあったりします。
そこで今回は下記方法でモニターレスのVNC環境を作っていきます。

まず、ラズパイにモニターを繋げた状態でのUbuntu側のVNC設定や、win/macからの接続については、下記サイトの方法にて行うことができます。

ただ、このままではラズパイにモニター無しで繋げた状態でのVNC接続が行えないため、Ubuntu側の自動ログイン設定と、仮想モニターの設定を行います。

ここでの注意ポイントとして、仮想モニターの設定だけだとVNC接続はできません。Ubuntu側はログインしている状態でないとVNC接続できないため、自動ログイン設定を行ってください。
また、仮想モニター設定済の状態だとラズパイにモニターを繋げてもGUIは表示されないため、先に自動ログインの設定をする事をオススメします。
ログイン前の状態からVNCを行う方法もあるようですが、自分の用途としてはログイン済でも問題ないので、今回はここまでとします。

まとめ

以上、ネット上の先輩方の力をお借りしつつ、ラズパイ4上にUbuntu18.04とROS melodicの環境構築を行いました。

当初Ubuntu ServerとしてCLIのみで利用するつもりだったのですが、今後のことも考えて一応GUIも準備しておくか!と考えた結果、
上記にも書いたubuntu-desktopのインストール失敗が原因で、何を考えたのか~OSをraspbianやxubuntuに変えて試してみたりしていたらあっという間に時間が溶けていきました。。(特にraspbianのROSビルド。。)

正直蛇足な部分で時間を消費した感もありますが、これも開発の醍醐味ということで(~~;)

※上記一連の流れでご不明点がございましたら、可能な限り回答したいと思いますので、コメントいただければと存じます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2