えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

ROS Noetic+Jupyterの構築(Ubuntu20.04)

 Jupyter+ROSでデータ分析+組み込み??ColabのFaster R-CNNを移植してみた! - えいあーるれいの技術日記 の続きです。環境構築について書きます。

 Ubuntu20.04で動作確認をするため、クリーンインストールしました。使用したPCは、Odyssey Blue Mini PCです。 Celeron搭載のミニPCの性能を個人的に確認!!(ベンチマーク) - えいあーるれいの技術日記

 プログラムはGithubに上げています。 github.com

 あまり詳しくは書きませんが、インストールの大体の流れを説明します。不足したパッケージについてはその都度インストールをしてください。

  1. Ubuntu20.04 LTSのインストールが終わっているものとします。

  2. いつもの sudo apt update && sudo apt upgrade

  3. ROS Noeticのインストールをします。 http://wiki.ros.org/noetic/Installation/Ubuntu を参考にしてください。

  4. Jupyter-notebookのインストールをします。sudo apt install jupyter-notebook

  5. Pyenvのインストールをします。

    • Ubuntu20.04では、デフォルトではPython3.8.5ですが、Google ColaboratoryではPython3.6.9です。(多分そのままうごきますが、)環境を揃えるためにインストールをします。Anacondaなどを使ってもいいです。

 Pyenvのインストールは以下の通りのコマンドでインストールをしました。

$ sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.pyenv_init
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.pyenv_init
echo 'eval "$(pyenv init -)"' >> ~/.pyenv_init
sudo reboot
#再起動後----------------------------
$ source ~/.pyenv_init
$ pyenv install 3.6.9

 source ~/.pyenv_initでPython3.6.9を読み込むことができます。おそらく環境の切り替えもできると思いますが、まともに使うのはこれが初めてなので、そこらへんはよく分かっていません。

 Python3.6.9が立ち上がれば、Pyenvの環境構築は完了です。

$ source ~/.pyenv_init
$ python
## OUTPUT ----------------------------------------------------------------
## Python 3.6.9 (default, Jan 28 2021, 12:50:15)
## [GCC 9.3.0] on linux
## Type "help", "copyright", "credits" or "license" for more information.
## ------------------------------------------------------------------------

 Python3.6.9にはrospyやcv-bridgeなどがインストールされていないので、追加でインストールします。pipでインストールできます。かなり多くのパッケージがインストールされるので、pip list | grep <パッケージ名>で絞り込んでインストールできているか確認してみてください。import <パッケージ名>でインストール確認をしてみてもいいでしょう。

$ sudo apt install python3-pip
$ pip install --upgrade pip
## Install rospy tools
$ pip install --extra-index-url https://rospypi.github.io/simple cv_bridge tf2_ros
## Check your environment
$ pip list | grep ros
## Output-----------------------
## gazebo-ros               2.9.1
## rosbag                   1.15.9
## ...
## tf2-ros                  0.7.5
## -----------------------------
$ pip list | grep cv
## Output-----------------------
## cv-bridge                1.15.0
## opencv-python            4.5.1.48
## -------------------------------

 環境構築はこれでOKです。

 python3.6.9が読み込まれてるターミナル上でjupyter-notebookを開きます。$ jupyter-notebookでブラウザで開きます。

 Cell->Run Allで実行します。$ roscore$ roslaunchの実行を忘れずに。

f:id:Ray_ar:20210130163704p:plain
Jupyter-notebookの画面

 このプログラムは/camera/color/image_rawを受信します。プログラム自体は、画像に文字を入れるだけの1行のプログラムです。

 わざわざROSのプログラムをJupyer-notebookで開発する理由はありませんが、ネット上の実装を試すときには役立つと思います。

その他のプログラム

 カスケード分類器で顔認識を行うプログラムを移植しています。

元(Google Colaboratoryの実装) : https://colab.research.google.com/drive/1CmZwkzrkap3nvPvUbuYy3NBZPe5jYZls

github.com

f:id:Ray_ar:20210130165427p:plain
顔認識のサンプル

ROSについて

 ROSとはRobot Operating Systemの略称で、ロボット制御に必要なパッケージや環境が揃っているオープンソースプロジェクトです。企業での産業用ロボット開発から個人のホビーロボット開発まで多くの活用例があります。

 ROS関連の書籍も充実しているのでぜひチェックしてみてください。

(画像をクリックすると詳細ページに移動します) (画像をクリックすると詳細ページに移動します)