raspberrypiからルンバを操作する(1)」の続きです。前回までで、Raspberry piにROSをインストールして起動するところまでできました。
今日はraspberry piからルンバを動かすところまでをやっていきたいと思います。

今回は以下のエントリーを参考にさせていただきながらセットアップしてみました。
ルンバをRaspberry Piを使ってROSでコントロールできるように改造してみた(半田付け無しでOK)

2.raspberry piからルンバを操作

2.1. ルンバを操作するROSパッケージのセットアップ

raspberry piにルンバを操作するROSパッケージ(create_autonomy)をインストールしていきます。Read meの通りに行いました。

2.1.1 ビルドシステムのインストール

$ sudo apt-get install python-rosdep python-catkin-tools

2.1.2. コンパイル

ワークスペースの作成

$ cd ~
$ mkdir -p create_ws/src  
$ cd create_ws  
$ catkin init  

リポジトリのクローン

$ cd ~/create_ws/src
$ git clone https://github.com/AutonomyLab/create_autonomy.git  

インストール

$ cd ~/create_ws
$ rosdep update  
$ rosdep install --from-paths src -i  

ビルド

$ cd ~/create_ws
$ catkin build

USB Permissions

$ sudo usermod -a -G dialout $USER

ログインしなおすと設定した権限が有効になります。

2.2. ルンバとraspberry piの接続

ルンバとraspberry piはシリアルインタフェースを使用して通信します。接続にはシリアルUSB変換アダプタを使用しました。

USB-UART変換 [U2UART2102-6PMCU]

ルンバ側にはルンバオープンインタフェースという接続口があるのでそこと、シリアルUSB変換アダプタ経由でraspberry piに接続をします。

ルンバのインターフェース資料を参考に、GND、RXD、TXDを接続します。

必ず、部品をつなぐときは電源が入っていない状態で行います。この時点では発生しませんでしたが、途中電源入れっぱなしの状態でつないでしまい、部品から煙があがりました。煙の出た部品は壊れて動かなくなります。

iRobot® Roomba 500 Open Interface (OI) Specification

ルンバと変換アダプタを正しくつないだら、変換アダプタをraspberry piにもつなぎます。

2.2. 動かしてみる!

raspberry piにログインしてルンバを動かしてみます。複数ターミナルでの操作を行うのでbyobuを使います。

2.2.1. ルンバの電源をいれる

Cleanボタンを押して、ルンバの電源を入れます。

2.2.2. ROSの起動

$ byobu
$ cd create_ws
$ source ~/create_ws/devel/setup.bash
$ roslaunch ca_driver create_2.launch

正常につながれば、電子音「プッ」というが鳴って、raspberry piのターミナル上にバッテリー残量が表示されます。

2.2.3. ルンバへの動作命令を送る

ルンバへ回転する命令を送ります。「2.2.2. ROSの起動」で開いたターミナルはそのままにして、新しいターミナルから命令を送ります。

$ source ~/create_ws/devel/setup.bash
$ rostopic pub /cmd_vel geometry_msgs/Twist -r 60 -- '[0, 0, 0]' '[0, 0, 0.5]'

Ctrl + Cで止まります。動作確認が済んだら、「2.2.2. ROSの起動」の方も止めます。

まとめ

先述のブログをかなり参考にさせていただいて、なんとかraspberry pi経由でルンバを動かすことができました。ただ、動画のようにraspberry piの電源が固定だとルンバを動かせても移動ができません。また、ジャンパーケーブルはやはり抜けやすくルンバ回転中一度抜けてしまい、ルンバがずっと回り続けてしまうということもありました。これは、raspberry piの電源を固定にしていた影響でraspberry piのUSBケーブルがジャンパーケーブルに引っかかって抜けたことが原因なので、raspberry piの電源を固定にしなければ起こらないかとは思います。このあたり、引き続きブログを参考にしつつ直していきたいと思います。

最近のエントリー

404 WASP not found

第12回 「パーソナルサーバ」について考える

Jar Gardenに植物を植える

新しいお友達

Google翻訳、ChatGPT、Gemini...

Node.jsでGemini 1.5 FlashをAPI経由で使う

今日は「ぴろろんの日」

Node.jsでGPT-4oをAPI経由で使う

遠隔手話通訳実験

LLMと戯れてみる

新刊情報の収集

最近のできごと

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す