ロボット製作に適したRaspberry Piの開発環境セットアップ

この記事では、Raspberry Pi 3 MODEL Bを対象に、ロボット製作に適した開発環境のセットアップ手順を紹介します。

このセットアップ手順を実行することで、以下の記事で紹介したようなロボット用のプログラミングが可能になります。

関連記事

ロボット製作に興味はあるけど、以下のような理由からなかなか手が出せないという方が多いのではないでしょうか? ソフトとハード両方の知識が必要で敷居が高かそう 部品をどこで買っていいか分からない お金が掛かりそう […]

ラズパイでロボット製作
広告

この記事で紹介する手順のポイントとしては、以下を挙げています。

  • 簡単なコマンドの実行と設定ファイルの変更のみで可能な点(サードパーティ製のライブラリ(パッケージ)の手動ダウンロード・ビルドが不要)

実際にインストールするプログラミング言語実行環境、および主要なパッケージは以下になります。

  • プログラミング言語: python 3
  • 実行環境: JupyterLab
  • パッケージ: OpenCV, Numpy, pygame, joystick, ds4drv
Raspberry Piのターミナル上で実行するコマンドとしては、GitHubのソース(*.sh hosted with ❤ by GitHub)を挿入しています

1. 前準備(パッケージ情報の更新)


事前にこの手順を実行しない場合、インストールするパッケージ間でバージョンの不整合が発生し、インストール/実行時にエラーが発生する恐れがあります。

2. プログラミング言語、およびユーティリティのインストール


[インストール対象] Python 3, pip3
[目的] Python 3を使用したプログラミング、およびPythonパッケージのインストールを可能とするため

python3-devはPythonコード実行用のインタプリタ、python3-pipはPythonパッケージのインストールなどを行うユーティリティになります。この二つに必要な関連するパッケージも自動でインストールされます。

3. 主要なパッケージのインストール

3-1. 各種通信インターフェース用パッケージ


[インストール対象]  RPi.GPIO, python-smbus, python-serial, spidev
[目的] モータ駆動用ライブラリ(販売元提供)を実行可能な状態とするため

この手順でインストールしたパッケージは全てモータドライバ購入元のWikiに記載されていたものです。全てのパッケージのインストールが必須化は把握できていませんが、開発上特に問題は発生していないため、全てインストールすることを推奨します。

3-2. OpenCV、Numpy関連パッケージ


[インストール対象]  多数
[目的] opencv_pythonを使用したコードを実行可能な状態とするため(opencv_pythonで参照するパッケージを事前にインストールしておく必要がある

3-2-1. 画像関連パッケージ

3-2-2. 動画関連パッケージ

3-2-3. GUI関連パッケージ

3-2-4. 内部計算最適化関連パッケージ

3-2-5. 階層構造データ保持(HDF5)関連パッケージ

3-3. 画像処理、カメラデバイス認識用パッケージ


[インストール対象] opencv_python, numpy
[目的] USBカメラの入力画像取得、および入力画像処理を可能な状態とするため(OpenCVで取得した画像はnumpyの配列として処理するため、合わせてインストールします)

3-4. ゲームパッド(コントローラ)認識、入力解析用パッケージ


[インストール対象]  pygame, joystick
[目的] ゲームパッド(当ブログではPS4コントローラが対象)の認識、および入力情報の解析を可能とするため

3-5. PS4コントローラ接続用パッケージ


[インストール対象] ds4drv
[目的] PS4コントローラとのBluetooth接続、および入力デバイスとして認識可能とするため

4. 通信インターフェースの設定変更


手順3-1でインストールしたパッケージを使用するために、Raspberry Pi本体側で通信インターフェースを有効化します。

4-1. I2C、シリアル、SPI機能の有効化

4-1-1. 「Rapberry Piの設定」を開く

スタートメニュー -> 設定 -> Raspberry Piの設定

open-config-raspberry-pi

4-1-2. インターフェースタブで該当機能を有効化

「Rapberry Piの設定」ウィンドウ -> 「インターフェース」タブ -> 「I2C」「Serial Port」「SPI」の「有効」を選択 -> 「OK(O)」で設定を確定

activation-interfaces

「OK」を押すと再起動が求められるため、再起動してください。

4-1-3. I2C機能の設定ファイル修正

以下のコマンドを実行し、設定ファイルを開きます。

設定ファイルの末尾に以下の2行を追記し、「Ctrl」+「o」で保存し、「Ctrl」+「x」で設定ファイルを閉じます。

modify-i2c-config

広告

5. 実行環境のインストール


[インストール対象] JupyterLab
[目的] Python 3のコードを効率的にプログラミング可能な状態とするため(プログラミングはNotebookkという単位で行います)

Python 3のコードはテキストエディタのみでもプログラミング可能ですが、JupyterLabを使用するメリットのは以下のようなものがあります。

  • 任意のブロック単位でプログラミングとコード実行が可能であるため、特定のコードのみを繰り返し試験・修正することが可能な点
  • Notebookの拡張機能が豊富に取り揃えられており、コード整形や予測変換、見出し・アウトライン作成やタグ付けなどが可能な点

JupyterLabのインストールは以下のコマンドで行います。

Notebookの拡張機能のインストール・有効化は以下のコマンドで行います。

6. プログラミング環境の動作確認

6-1. jupyterlab起動


規定のブラウザ(デフォルトではChromium)が立ち上がり、JupyterLabのトップページが表示されます。

run-jupyter-lab

※Notebook作成以外の機能を使用しない場合は、以下のコマンドでブラウザを起動し、ファイル新規作成or選択した方が効率的に作業を実施できます。

6-2. Notebook作成


JupyterLabのトップページでPython 3を選択すると、カレントディレクトリ上にUntitled.ipynbという名前で新規Notebookが作成されます。プログラミングはブラウザ上で行い、上部のツールバーでブロックの追加/削除や実行、拡張機能の適用などが行えます。

make-jupyter-notebook

6-3. インストール済みパッケージの動作確認


手順3-1でインストールしたパッケージはモータドライバ販売元のPython 3コード内で使用しています。以下のサイトからデモコードをダウンロードし、以下の画像のようにPython 3コード上でimportし、実行エラーが発生しなければ、インストールは問題なく成功しています。

[デモコード]

ダウンロードページ: https://www.waveshare.com/wiki/File:Motor_Driver_HAT_Code.7z

File historyからcurrentのものをダウンロード・解凍し、Motor_Driver_HAT_Code/python/PCA9685をNotebookと同階層にコピーします。
[動作確認用コード]

import-motor-driver-lib

手順3-2、3-3、3-4でインストールしたパッケージ(OpenCVなど)はPython 3コード上でimportして使用します。
以下の画像のようにNotebookからimportし、実行エラーが発生しなければ、インストールは問題なく成功しています。

[動作確認用コード]

import-opencv-pygame-lib

手順3-5でインストールしたパッケージ(ds4drv)は、スタンドアローンのアプリケーションとして実行します。ターミナルを起動し、以下のコマンドを実行し、実行エラーが出力されなければ、インストールは問題なく成功しています。

run-ds4drv

 

関連記事


①以下の2つの記事で紹介している設定を行うことで、クライアントマシン(Windows PCなど)のVisual Studio Codeから、Raspberry Pi上のJupyter Notebookを編集、実行できるようになります。

関連記事

Visual Studio Code(以降はVSCodeと呼称)の拡張機能「Remote Development」を使用すると、クライアントのVSCodeからRaspberry Piのフォルダツリーの閲覧やファイル操作、ターミナルからBas[…]

eye_catch
関連記事

本記事では、Visual Studio Code(以降はVS Codeと呼称する)上で、JupyterNotebookを作成・実行する方法を紹介します。 JupyterNotebookはpythonスクリプトをGUIライクの環境で、小[…]

run_jupyter_in_vscode

 

②ロボット製作よりも簡単で、汎用入出力(GPIO)ピンの学習におススメのLED素子を用いた回路作成とプログラミングの事例を以下の記事で紹介しています。まずは簡単な例で組み込みプログラミングのイメージをつかみたいという方は、こちらの記事も是非ご覧ください。

関連記事

「Raspberry Pi」はLinuxOS相当のOS上でブラウザ操作やプログラミングが直接可能でありながら、汎用入出力(GPIO)ピンを標準搭載しているため「センサー系」「駆動系」との接続、制御が容易に可能なコンピュータです。 その[…]

eye_catch

 

広告