こんにちはshotaです。このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS2を動かしていきます。
今回はRaspberry Pi 4を搭載したラズパイマウスにデバイスドライバをインストールして、LEDを点灯させたりモータを回したりします。
前回のおさらい
前回はラズパイマウスに搭載したRaspberry Pi 4 Model BにUbuntu 18.04をインストールしました。
またネットワークを設定しWi-Fiに接続できるようになりました。IPアドレスも固定しています。
今回もSSHでログインして作業するため、前回の記事を忘れずにチェックしてください。
作業に必要なもの
今回からは基本ラズパイマウスと作業用のPCさえあればOKです。
- Raspberry Pi Mouse V3
- 商品ページはこちら
- 前回の作業により、Ubuntu 18.04をインストールしたRaspberry Pi Model 4 Bを搭載したラズパイマウスに成長しています。
- 作業用PC
- Ubuntu 18.04のPCを用意しました。WindowsやMac OSでも作業可能です。
デバイスドライバのインストール
デバイスドライバはGitHubに公開されています。
デバイスドライバのREADMEに従ってインストールします。
インストール前の準備
まずはUbuntuの中身を更新します。ラズパイマウスを起動してSSHでログインし、次のコマンドを実行します。
$ sudo apt update $ sudo apt upgrade
次にボーレートの設定を変更します。
次のコマンドを入力してファイルを開き、dtparam=i2c_baudrate=62500の1文を追記します。
$ sudo vim /boot/firmware/config.txt
[all] arm_64bit=1 device_tree_address=0x03000000 dtparam=i2c_baudrate=62500 # The following settings are "defaults" expected to be overridden by the # included configuration. The only reason they are included is, again, to # support old firmwares which don't understand the "include" command.
設定を反映させるため再起動します。
$ sudo reboot
再起動後、SSHでログインし直します。
次のコマンドを入力して、ボーレートが62500になったことを確認します。
$ printf "%d\n" 0x$(xxd -ps /sys/class/i2c-adapter/i2c-1/of_node/clock-frequency)
62500と表示されたらOKです。
デバイスドライバをインストールする
それではデバイスドライバをインストールします。READMEの手順通りに進めます。
まず、パッケージをGitHubからダウンロード(クローン)します。
$ cd ~ $ git clone https://github.com/rt-net/RaspberryPiMouse.git
RaspberryPiMouseというディレクトリが作成されます。そのディレクトリへ移動します。
cd RaspberryPiMouse/
さて、今回使用しているのはRaspberry Pi 4です。
Raspberry Pi 4を使用する場合は、ソースファイルを少し編集します。
次のコマンドでソースファイルを編集します。
$ vim src/drivers/rtmouse.c
54行目辺りに#define RASPBERRYPI 2と書かれた行があるので、その数字を4に書き換えます。
// define the Raspberry Pi version here // Raspberry Pi 1 B/A/B+/A+: 1 // Raspberry Pi 2 B : 2 // Raspberry Pi 3 B/A+/B+ : 2 // Raspberry Pi 4 B : 4 #define RASPBERRYPI 4
保存したら
$ cd utils
でutilsディレクトリに移動します。
その後、
$ sudo apt install linux-headers-$(uname -r) build-essential
でデバイスファイル生成に必要なパッケージをインストールし、
$ ./build_install.bash
を実行したらビルドとインストールが完了です。
デバイスファイルがインストールされるとピッとブザーが鳴ります。
また、念の為再起動してからインストールし直しましょう。
サンプルプログラムを実行する
デバイスドライバをインストールしたので、モーターやLEDを動かせるようになります。
サンプルプログラムを実行して確認しましょう。
詳細はサンプルプログラムのREADMEに記載されています。
まず、サンプルプログラムのディレクトリに移動します。
$ cd ~/RaspberryPiMouse/SampleProgram
そして、下記のようにプログラムを実行します。
LEDを点灯する
$ bash step1.sh
ブザーを鳴らす
$ bash step2.sh
スイッチを押す
$ bash step3.sh
モータを回す
$ bash step4.sh
ライトセンサの値を読み取る
$ bash step5.sh
パルスカウンタの値を読み取る
$ bash step6.sh
次のようにstep6.shを編集することで、符号付きのカウント値を読み取ることができます。
MOTOR_R=/dev/rtmotor_raw_r0 MOTOR_L=/dev/rtmotor_raw_l0 COUNTER_R=/dev/rtcounter_r1 # r0からr1に書き換え COUNTER_L=/dev/rtcounter_l1 # l0からl1に書き換え
次回起動時も自動でデバイスドライバをインストールする
これまでの手順でデバイスドライバのインストールは完了しました。しかし再起動後はもう一度ドライバを読み込まないと動きません。
自動で読み込む方法はいくつかあると思いますが、今回は.bashrcを編集して、起動後(ログイン後)にデバイスドライバを読み込むようにします。
次のコマンドで.bashrcを開き、ファイル末尾に追記します。
$ vim ~/.bashrc
if [ -e /dev/rtmotoren0 ]; then echo "モジュールはインストール済みです" else echo "モジュールをインストールします" ~/RaspberryPiMouse/utils/build_install.bash fi
再起動してSSHでログインすると、デバイスドライバがインストールされブザーが鳴ります。
まとめ
今回は、
- デバイスドライバをインストールしました。
- サンプルプログラムを実行して、LEDやモータを動かしました。
- 自動でデバイスドライバをインストールするため、.bashrcを編集しました。
次回はROS 2をインストールします。