D-Robotics RDK X5をTurtleBot3に載せてみました

D-Robotics RDK

D-Robotics RDK X5TurtleBot3に載せてみました。以前にRDK X3をTurtleBot3に載せたことはありますので基本的にはその手順で問題ないのですが、RDK X5での違いや気づいたところを中心にまとめました。

ソフトウェアのセットアップ

TurtleBot3にRDK X5を取り付ける前にRDK X5のソフトウェアをセットアップしました。今回は以下のイメージファイルをダウンロードし、32GBのmicroSDカードに書き込みました。

/downloads/os_images/rdk_x5/rdk_os_3.2.3-2025-7-9/rdk-x5-ubuntu22-preinstalled-desktop-3.2.3-arm64.img.xz

RDK X5が起動するまでの手順は以下のページを参照してください。

1.2.2 RDK X5 | RDK DOC
在使用RDK X5开发板前,需要做下述准备工作。

次にTurtleBot3用のソフトウェアをセットアップしていきます。これはTurtleBot3 公式マニュアルのQuick Start Guideにまとまっています。ROS2 humbleを使います。

ROBOTIS e-Manual
e-Manual wiki

RDK X5のセットアップは、3.2 SBC Setupに従って作業を進めます。RDK X5ではUbuntu 22.04のイメージが配布されていますので、3.2.5 Install packages on Raspberry PI の 1. Install ROS2 Humble Hawksbill までの手順はスキップできます。このため、2. Install and Build ROS Packages から作業を進めていきます。変更すべき点はルンバを動かしたときと同様にrosをtrosにします。

他はそのまま実行すればturtlebot3用パッケージのビルドが始まります。

無事ビルドが完了しました。

RDK X5の取り付け

標準で実装されているRaspberry Pi 4を外して、RDK X5を取り付けます。ねじ穴の位置は同じですのでそのまま交換できます。RDK X3のときは放熱を考えて、専用ケースを取り付けた状態で固定しましたが、今回はRaspberry Pi 4B用 ヒートシンクを取り付けることで発熱は問題なさそうということが分かっているので、専用ケースは使わずに実装しました。

RDK X5の電源供給ですが、TurtleBot3にはモータードライバが実装されているマイコン基板 OpenCRボード があり、そこからRaspberry Pi 4の拡張コネクタを介して電源を供給しています。RDK X5もRaspberry Pi 4と同様の拡張コネクタがありますので同様に接続できます。

次にRDK X5のカメラモジュールをRaspberry Piカメラ用のフレーム Pi-Camera Frame Setに取り付けようとしたところ、ねじ穴が一致しません。

図面を確認したところ、穴の位置が1mm違います。左の図面はRDK X5専用カメラモジュールで右側はRaspberry Piカメラモジュールです。横方向の穴の間の寸法は両方とも21.0mmですが、縦方向の穴の間の寸法はRDK X5は13.5mm、Raspberry Pi Cameraは12.5mmで1mmの差があります。このため取り付け穴が合いませんでした。

RDK X3のカメラモジュールはそのまま取り付けできたのですが、今回はやむなく上側のネジだけで固定しました。あまり良い取り付け方法ではないので、後ほど3Dプリンタで専用ホルダーを作ってみようと思います。

カメラモジュール以外は特に問題なくRDK X5の取り付けが完了しました。

TurtleBot3を起動する

TurtleBot3を動かす手順はTurtleBot3の公式マニュアルにある 3.5 bringupに従います。

ROBOTIS e-Manual
e-Manual wiki

リモートPCからRDK X5にログインして起動します。

これでTurtleBot3が起動しました。

別のターミナルでトピックを確認します。

TurtleBot3公式マニュアルと同じtopicが表示されることが確認できます。

teteopでの手動操作

TurtleBot3公式マニュアルの 3.6.1 Teleoperation にしたがって手動操作を行ってみます。

ROBOTIS e-Manual
e-Manual wiki

turtlebot3_teleopを起動します。

このように表示された状態で、キーボードのa/w/x/dを入力するとその方向に動きます。停止はsです。

これで車輪を動かす基本的な動作の確認はできました。

カメラの確認

次にTurtleBot3に搭載したRDK X5カメラ IMX219カメラの確認をします。ROS2 humbleを使用している例がRDK X5ドキュメントの5.2.1 Image Captureにありますのでこれにしたがって操作します。

5.2.1 数据采集 | RDK DOC
USB图像采集

新しいターミナルでRDK X5にログインし、以下のコマンドを入力します。このmipi_camノードはMIPIカメラのデータを/mbmem_imgというトピックで配信するものです。

この状態でもう一つ新しいターミナルからRDK X5にログインし、以下のコマンドを入力します。hobot_codec_encodeノードは/mbmem_imgトピックを/image_jpegトピックにエンコードしてくれます。

最後にもう一つ新しいターミナルからRDK X5にログインし、次のコマンドを入力します。このwebsocketノードは/image_jpegを購読して、RDK X5のWebサーバで画像を表示するものです。

この状態でRDK X5のIPアドレスのポート8000にブラウザでアクセスすればリアルタイムで画像が表示されます。これでカメラ画像を見ながらteleopでロボットを動かすこともできます。

LiDARの確認

TurtleBot3にはLiDARが標準で搭載されています。トピック一覧をみると/scanというトピックがありますが、これがLiDARのデータです。

rviz2で可視化することができます。以下のようにコマンドを入力します。

rviz2

Rviz2のウインドウの左下にあるAddのボタンをクリックし、LazerScanプラグインをクリックし、Topicに/scanを指定することで以下のような表示になります。LiDARで認識しているモノが点線で表示されます。これでロボットの周りにどのようなモノがあるのかを認識できます。

IMUの確認

最後にTurtleBot3の重要なセンサーであるIMUと地磁気センサーの確認をします。これは/imuと/magnetic_fieldの2つのトピックが配信されているのでこれをRviz2で可視化します。

Rviz2のウインドウの左下にあるAddのボタンをクリックし、Imuプラグインをクリックし、Topicに/imuを指定します。さらに、Magプラグインをクリックし、Topicに/magnetic_fieldを指定するとロボット本体の向きと傾きと地磁気の方向が表示されます。これによりロボット自身がどのような姿勢でどちらに向いているのかを知ることができます。

実際の動きがわかるように動画も載せておきます。

ノードとトピックの関連図を作る

たくさんのノードやトピックがでてきたので複雑になってきました。rqt_graphコマンドでノードとトピックの関連図ができます。

rqt_graph

楕円がノードで四角形がトピックです。

様々なノードとトピックが関連して動作していることが確認できます。

まとめ

TurtleBot3にRDK X5を載せることでOriginBot Proに近いロボットカーができました。また、TurtleBot3の公式マニュアルに載っている基本動作までは確認できました。次回はRDK X5の機能を活かしたOriginBot Proで動かしている様々なアプリケーションを試していきます。

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