LoginSignup
0
2

More than 3 years have passed since last update.

Raspberry Pi4にシュミレーターの開発・実行環境を構築する

Last updated at Posted at 2020-01-02

はじめに

前回の記事機械学習の初心者が某ゲームの防御貫通率を機械学習で算出してみるの続きです。

  1. 各種データの収集と戦闘に使用される各種パラメータの算出
  2. 【本記事の内容】シュミレーターの開発・実行環境の構築
  3. 戦闘プログラムの再現
  4. 各キャラクターの作成
  5. キャラクターと最低限のステータスを入力すると戦闘を再現できるWebコンテンツ
  6. 相手と自分のPT情報を入力すると、勝つために必要な今後の行動(強化・キャラ取得)が表示されるシュミレーター

シュミレーターの開発・実行環境にRaspberry Pi4を選択した理由

マシンパワーが必要なモデルは事前に作成し、AWSのLambdaで構築済みモデルをロードして動かそうと考えていました。
しかし、色々調べた結果、Lambdaの起動とモデルのロードに時間がかかるため、適切ではないと判断しました。

機械学習やDeep Learningが扱える安価な環境やマシンが無いかと探したところ、ちょうどRaspberry Pi4が発売されていました。
シュミレーターだけではなくAI+IoTの環境としても使えると思い、Raspberry Pi4を選択しました。

本記事で使用するハードとOS

  • 環境を構築するハード:Raspberry Pi4
  • 環境にインストールするOS:Rasbian Buster
  • 環境構築の準備をするOS:Mac(Catalina)

Raspberry Pi4ですが、電源の差し込み口がマイクロUSBからUSB-Cに変更されています。
また、Raspberry Pi3以前に比べてCPUの発熱量1が上がっています。
Raspberry Pi4用の電源とファンが着いたケースを一緒に購入した方が良いと思います。

Raspberry Pi4のヘッドレスセットアップ

Raspberry Pi4のCPUは64bitですが、Rasbianはまだ64bit対応をしていません。
そのため、64bitに対応しているUbuntu Serverをインストールしようと試みましたが、ヘッドレスセットアップに対応していませんでした。

仕方ないので、ヘッドレスセットアップに対応しているRasbianをインストールします。

Etcherのインストール

SDカードにOSイメージを書き込むため、Etcherの公式ページからEtcherをダウンロードし、インストールします。

Rasbian Busterイメージのダウンロード

Rasbian公式ページのダウンロードサイトから、Rasbian Busterのイメージをダウンロードします。

Etcherを使用し、SDカードにUbuntu Serverイメージを書き込み

Etcherを使用し、Ubuntu ServerのイメージをSDカードに書き込みます。
直感的でわかりやすいUIなため、操作方法は割愛します。

ヘッドレスセットアップに必要なファイルの作成

前項で作成したSDカードをマウントし、ヘッドレスセットアップに必要な下記の2ファイルを作成します。

  • wpa_supplicant.conf
  • ssh

wpa_supplicant.confの作成

Raspberry Pi4をWiFiでネットワークに接続するために必要なファイルです。
Raspberry Pi4を有線LANで接続できる環境の人は作成不要です。

ファイルの内容は以下です。

wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        scan_ssid=1
        id_str="<接続名>"
        ssid="<WiFiのSSID>"
        psk="<WiFiに接続する際のパスフレーズ>"
}

家と外出先で接続先のWiFiを切り替える場合、下記のようにnetworkを複数設定します。
priorityの数値が小さい順に接続されます。

wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        priority=2
        scan_ssid=1
        id_str="<接続名>"
        ssid="<WiFiのSSID>"
        psk="<WiFiに接続する際のパスフレーズ>"
}

network={
        priority=1
        scan_ssid=1
        id_str="out"
        ssid="<WiFiのSSID>"
        psk="<WiFiに接続する際のパスフレーズ>"
}

作成した上記のwpa_supplicant.confファイルをSDカードの直下に書き込みます。

sshの作成

Macのターミナルを起動し、下記のコマンドを実行しSDカードの直下にsshの空ファイルを作成します。

touch /Volumes/<SDカードのマウントポイント>/ssh

Raspberry Pi4の起動

これまでの手順で作成したSDカードをRaspberry Pi4に挿し込み、起動します。

SSHでRaspberry Pi4にログイン

Macのターミナルを起動し、下記のコマンドを実行しRaspberry Pi4に接続します。
Rasbian OSの初期ユーザーとパスワードはpi/raspberryです。

ssh pi@<Raspberry Pi4のIPアドレス>

Raspberry Pi4のIPアドレスがわからない場合、下記のコマンドでIPアドレスを特定します。
nmapはMacの標準コマンドではないため、ポートスキャンツールnmapについてなどを参考にnmapをインストールします。

nmap -sP <ネットワークアドレス>/24

以降の記載は全てログイン先のRaspberry Pi4上で実施します。

パスワードの変更

下記コマンドでパスワードを初期パスワードから変更します。

passwd

ホスト名の設定

DHCPの接続ではIPアドレスが変更される可能性があります。
SSH接続の時、ホスト名でログインできるように下記のコマンドでホスト名を設定します。

sudo raspi-config

設定メニューが表示されます。
2 Network OptionsN1 Hostnameと選択します。
ホスト名の入力画面が表示されます。ホスト名を入力し、<OK>を選択します。

以後、設定したホスト名.localでRaspberry Pi4へSSH接続が可能です。

環境構築

開発とシュミレーターの実行に必要な環境を整えます。

pipでキャッシュファイルを残さないように設定

キャッシュファイルが残っている場合、pipでのインストールでエラーが発生することがあります。
pipの設定ファイルに下記内容を追記し、キャッシュを無効化します。

/etc/pip.conf
[global]
no-cache-dir = false

機械学習・Deep Learningで必要なPythonのライブラリをインストール

Pythonの各種ライブラリをインストールします。
aptでインストールが可能なものはaptでインストールし、aptでインストールできないものはpip3でインストールします。

sudo apt install python-dev libatlas-base-dev gfortran
sudo apt install python3-numpy
sudo apt install python3-scipy
sudo apt install python3-pandas
pip3 install --no-cache-dir h5py
pip3 install tensorflow --no-cache-dir
pip3 install scikit-learn

Mac上のVSCodeからリモート開発で必要なjediをインストール

Mac上のVSCodeからリモート接続して開発する場合、jediが必要になります。
jediを下記コマンドでインストールします。

sudo apt install python3-jedi  

AFPでファイル共有サーバーを構築

Raspberry Pi4上に各種ファイルをアップロードする際、簡単にアクセスできるようnetatalkを下記コマンドでインストールします。

sudo apt install netatalk

初期設定のままでは接続ができません。
設定ファイルを下記の内容で更新します。

/etc/netatalk/afp.conf
 [Homes]
 basedir regex = /home

Mac側でFinderを起動し、移動サーバーへの接続と選択し、設定画面を表示します。
上部の接続先入力欄にafp://<Raspberry Pi4のホスト名>.localを入力し、接続をクリックします。
パスワード入力画面が表示されるため、pi/<変更後のパスワード>を入力して接続します。

接続完了後、Finderウィンドウの上部にあるpi's homeをFinderのサイドバーの場所部分にドラッグアンドドロップします。

MySQL(mariadb)のインストール

シュミレーターでMySQLの使用を予定しています。
MySQL(mariadb)を下記コマンドでインストールします。

sudo apt install mariadb-server

下記コマンドで初期セットアップを実施します。

sudo mysql_secure_installation

対話形式のメニューが開始されます。全てyを選択します。

〜中略〜
Set root password? [Y/n] y
New password: <設定したいパスワード> 
Re-enter new password: <設定したいパスワード>
Password updated successfully!
Reloading privilege tables..
 ... Success!
〜中略〜
Remove anonymous users? [Y/n] y
 ... Success!
〜中略〜
Disallow root login remotely? [Y/n] y
 ... Success!
〜中略〜
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
〜中略〜
Reload privilege tables now? [Y/n] y
 ... Success!

DBのユーザーを作成します。ユーザー名はRaspberry PiのOS上に存在するアカウントを入力する必要があります。

sudo mariadb
CREATE USER 'pi'@'localhost' IDENTIFIED BY '<パスワード>';

データベースも作成し、先程作成したユーザーに全権限を付与します。

CREATE DATABASE <データベース名>;
GRANT ALL ON <データベース名>.* TO 'pi'@'localhost';

Django(Webサーバー)のインストール

機械学習・Deep LearningではPythonを使用するため、WebサーバーもPythonで動作するDjangoを使用します。

インストール

sudo apt install python3-djangoでインストールされるdjangoのバージョンは1.x系で古いため、2.x版をGitHubより取得してインストールします。

pip3 install git+https://github.com/django/django.git@stable/2.2.x  

REST APIのサーバーとしても使用するため、DjangoのREST API用のフレームワークを下記コマンドでインストールします。

pip3 install djangorestframework  
pip3 install django-filter  

インストール結果確認

Djangoのインストール状態を確認するため、試験用にWebサイトを下記コマンドで作成します。

django-admin startproject mysite

上記コマンドを実行すると、コマンドを実行したフォルダにmysiteが作成されます。
作成されたmysite配下にWebサーバーのプログラムやコンテンツを配置します。

受け付けるホスト名の変更

デフォルト設定では127.0.0.1に対してのアクセス以外は拒否されます。
Macからのリクエストを受け付けるため、ホスト名を設定ファイルに記載します。
作成されたmysiteに移動し、下記内容でファイルを更新します。

mysite/settings.py
ALLOWED_HOSTS = ['localhost', '<Raspberry Pi4のホスト名>.local']

サーバーの起動

下記コマンドでWebサーバーを起動します。

python3 manage.py runserver <Raspberry Pi4のホスト名>.local:8000  

Macでブラウザを起動し、URLにhttp://<Raspberry Pi4のホスト名>.local:8000を入力します。
下記画面が表示されれば、Djangoのインストールは正常に完了しています。

スクリーンショット 2020-01-02 18.20.03.png

最後に

今回の記事は以上です。
次回は「4. キャラクターと最低限のステータスを入力すると戦闘を再現できるWebコンテンツ」のブラウザからアクセスできるところまでを記事にする予定です。


  1. CPUの温度はファン付きのケースでも、アイドル状態で30℃、後述のインストールなどの作業時には40℃になります。 

0
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
0
2