ラズパイマウスでROS 2を動かしてみた技術情報・開発日誌

ラズパイマウスにデバイスドライバをインストールする

Raspberry Pi 4 とラズパイマウス ラズパイマウスでROS 2を動かしてみた
Raspberry Pi 4 とラズパイマウス

こんにちはshotaです。このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS2を動かしていきます。

今回はRaspberry Pi 4を搭載したラズパイマウスにデバイスドライバをインストールして、LEDを点灯させたりモータを回したりします。

前回のおさらい

前回はラズパイマウスに搭載したRaspberry Pi 4 Model BUbuntu 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文を追記します。

前回も書きましたが、Vimの操作方法は説明しません。
$ 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

を実行したらビルドとインストールが完了です。

デバイスファイルがインストールされるとピッとブザーが鳴ります。

ブザーが鳴らない場合、ソースコードの書き換えを忘れているかもしれません。#define RASPBERRYPI 4と書き換えましょう。
また、念の為再起動してからインストールし直しましょう。

サンプルプログラムを実行する

デバイスドライバをインストールしたので、モーターや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をインストールします。

タイトルとURLをコピーしました