20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ROSAdvent Calendar 2021

Day 3

Android端末でROS1/ROS2を動かす(Rvizもあるよ!)

Last updated at Posted at 2021-12-28

※2023.05.02更新

  • git cloneする際にブランチ名を指定するようにした

はじめに

事の発端はちょうど1年前,ROS/ROS2 Advent Calendar 2020 3日目のMeRT(ルット)さんの記事だった.

どうせならROS2でやってみようと思い,UserLand上のUbuntu 18.04にROS2 Dashingをインストールしたところrqt_graphとrqt_plotは動いたので,micro-ROSのデモに絡めてみた.この段階ではrqt系は動いたものの,OpenGLがサポートされていないためrvizやgazeboは動かなかった.

それから程なくしてROS2 DashingがEOLとなり筆者のメイン環境もROS2 Foxyへ移行を済ませた頃,Android端末上でROS2 Foxyを動かせないものかと考えるようになった.そのためにはUserLand上のUbuntuが20.04である必要があったが,UserLand上にインストールできるUbuntuは18.04のままという状態が続いた.

そんな中で出会った新たな選択肢がTermuxであった.

記事概要

Android端末上にROS環境(ROS2 Foxy および ROS Noetic)をインストールしてRvizの動作確認をするまでの手順を説明する.

rviz2.gif

手順

ベースとなるUbuntuをインストールするためにmodded-ubuntuを利用している.これをフォークしてROS2 Foxy および ROS Noeticをインストールするために改変したものをgithubに用意したのでそれを補足しながら説明する.

事前準備

  • Android 7.0以上
  • WiFi環境
  • キーボード
    • マウスもあればなお良い
    • USB接続を推奨(Bluetoothでも動くと思われるが筆者は確認していない)

Android端末へのUbuntu 20.04 GUI環境のインストール

Termuxのインストール

F-DroidからTermuxのAPKをダウンロードしてインストールする.F-Droidそのものをインストールするのではないことに注意.

termux_from_f-droid.png

termux_apk.png

Termux内にUbuntu 20.04をインストール

ここでキーボードとマウスを接続する.Termuxアプリを起動するとCUI環境に入るので,以下のコマンドを順に入力する.

$ pkg update -y && pkg upgrade -y # デバイス内の写真,メディア,ファイルへのアクセスを許可しますかと聞かれたら許可しないでOK.`sources.listや`motd`を`package maintainer's version`に置き換えるか聞かれたら`y`と入力する.
$ pkg install git wget -y
$ git clone -b foxy-and-noetic https://github.com/maehara-keisuke/modded-ubuntu.git
$ cd modded-ubuntu
$ bash setup.sh

※Termuxのリポジトリに障害がある場合など,pkg update -yに失敗することがある.その場合はtermux-change-repoコマンドを試すと良い.操作手順はこちら

スクリプトが終了したらexitで抜けて,Termuxアプリを再起動する.

Ubuntuのセットアップ

Termuxアプリを再起動したら,以下のコマンドを順に入力する.

$ ubuntu # Termux内のUbuntu環境にrootでログインする.
$ bash user.sh # 途中,ユーザー名とパスワードの設定を求められる.

スクリプトが終了したらexitで抜けて,Termuxアプリを再起動する.

GUI環境のセットアップ

Termuxアプリを再起動したら,以下のコマンドを順に入力する.

$ ubuntu # Termux内のUbuntu環境に設定したユーザー名でログインする.以降,このユーザー名でログインすることになる.
$ bash gui.sh # GUI環境をセットアップする.途中,キーボードの設定やタイムゾーンの設定を求められる.

途中,VNCクライアントから接続する際に入力するパスワードの設定を求められる.

※ "Would you like to enter a view-only password (y/n)?"と聞かれたらyを入力して,view-only passwordを設定するのを忘れないこと.設定を忘れたりパスワードを変えたいという際は,スクリプトが終了した後で以下のコマンドを入力して再設定を行うこと.

$ vncpasswd

VNCクライアントのインストール

本稿ではVNCクライアントとしてVNC Viewerを使用する.

VNC Viewerインストール後の設定

接続の作成

connection-settings.png

Address : localhost:1
Name : 任意

画質設定

real-vnc-settings.png

Picture quality : High

※接続が突然切れるようなことがあれば,Mediumに変更すると改善する場合がある.

Xの起動

Termux内のUbuntu環境にログインした状態で,以下のコマンドを入力してVNCサーバーを立ち上げる.

$ vncstart

VNCクライアントを起動する."Unencrypted connection"という注意書きが出たらOKをクリックしておく.

VNC Viewerのメニューがピン止めされている場合は,ピンのアイコンをクリックして解除すると画面を広く使えて便利である.

VNC Viewerのメニューがピン止めされている状態

pinned.png

ピン止めを解除した状態

unpinned.png

Xの終了

VNC ViewerのメニューからXアイコンをクリックしてdisconnectする.

Termux内のターミナルで以下のコマンドを順に入力する.

$ vncstop
$ exit # Termux上のubuntuからログアウト.
$ exit # Termuxを終了.

ROS2 Foxyのセットアップ

Termux内のUbuntu環境にログインした状態で以下のコマンドを入力する.後述するROS Noeticとの共存も可能である.

$ bash ros2-foxy.sh

rviz2による動作確認

Xを起動してVNC ViewerのGUI上でターミナルを立ち上げ,以下のコマンドを入力する.

$ source /opt/ros/foxy/setup.bash
$ rviz2

foxy-rviz2.png

ROS Noeticのセットアップ

Termux内のUbuntu環境にログインした状態で以下のコマンドを入力する.前述したROS2 Foxyとの共存も可能である.

$ bash ros-noetic.sh

rvizによる動作確認

Xを起動してVNC ViewerのGUI上でターミナルを立ち上げ,以下のコマンドを入力する.

$ source /opt/ros/noetic/setup.bash
$ roscore

もう一つのターミナルを開き,以下のコマンドを入力する.

$ source /opt/ros/noetic/setup.bash
$ rviz

noetic-rviz.png

参考資料

  1. ROS/ROS2 Advent Calendar 2020 3日目のMeRT(ルット)さんの記事
  2. micro-ROSデモの可視化にUserLandを利用した例
  3. Termux
  4. modded-ubuntu
  5. F-Droid
  6. VNC Viewer
  7. MAEHARA_Keisukeのポータル記事
20
20
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
20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?