【smabo第2回】smaboをROS2で通信してみよう

【smabo第2回】smaboをROS2で通信してみよう

image

前回: 【smabo第2回:事前準備2】ROS2(ROS2のインストール、ROS2の基礎)

次回: 【smabo第3回】smaboに腕を取り付けて制御してみよう

smaboトップページ: スマホが入るロボットの作り方【smabo】

お疲れ様です。秋並です。

今回は、smaboをROS2で通信する方法について解説します。

目次

今回使用する機材、パーツなど

パーツ名
商品url
スマートフォン Iphone MAXのような大きなサイズのスマホや、折り畳み式のような分厚いスマホは入らないので注意してください pixel7a(152.0mm×72.9mm×9.0mm) + カバー でぎりぎりちょうどくらいのサイズです。
-
Raspberry Pi
-

今回使用するソフトなど

ubuntu 22.04

ソフト名
url
ROS2 humble

スマートフォン

ソフト名
url
smart_phone_robot (第1回でインストールしたsmabo用アプリ)
🔍
今回は、Raspberry Pi上で作業を行います。

ワークスペースの作成

以下コマンドでROS2用のワークスペースを作成します

mkdir -p ~/smabo_ws/src

リポジトリのclone

gitがインストールされていない場合、以下コマンドでgitをインストールします。

sudo apt update && sudo apt install git

smaboのリポジトリをcloneします。

cd ~/
git clone https://github.com/akinami3/smabo.git

cloneしたリポジトリから「smabo_pkgs」をワークスペースのsrcディレクトリにコピーします

cp -r ~/smabo/smabo_pkgs ~/smabo_ws/src

smabo関連のパッケージ以外に、「unityをROS2で通信するために必要なパッケージ」である「ROS-TCP-Endpoint」もcloneします(スマホとラズパイの通信に使用します)。

cd ~/smabo_ws/src
git clone -b dev-ros2 https://github.com/Unity-Technologies/ROS-TCP-Endpoint.git

ワークスペースのビルド

以下コマンドでワークスペースをビルドします。

cd ~/smabo_ws
colcon build --symlink-install
⚠️
ビルドはワークスペースの直下で実行する必要がある(今回の場合、 smabo_ws )ので注意してください。

次に、以下コマンドでros2コマンドからビルドしたパッケージを起動できるようにします。

source ~/smabo_ws/install/setup.bash

.bashrcにも記述しておきます。

echo "source ~/smabo_ws/install/setup.bash" >> ~/.bashrc

ROS-TCP-Endpointの起動(ラズパイとスマホの通信)

ROS-TCP-EndpointはUnityのアプリをROSで通信するために必要となるパッケージになります。

image

スマホ ↔ラズパイ間の通信を行うために下記コマンドを実行します。

ros2 run ros_tcp_endpoint default_server_endpoint

smaboを起動してROS2で通信

第一回の時にスマホにインストールしたsmaboのアプリを立ち上げてください。

smaboを起動すると、ipアドレスとポート番号を入力する画面が表示されると思うので

  • ip address:ラズパイが接続しているネットワークのip address
  • port : 10000

と入力したのちに「Connect」ボタンをクリックしてください

🔍
ラズパイ側のipアドレスは、以下コマンドで確認することが出来ます
ifconfig

※ コマンドがないという旨のエラーが表示された場合は下記コマンドでパッケージをインストールした後に、もう一度コマンドを実行してください

sudo apt install net-tools

ボタンをクリックし、しばらく待った後に「connected!!!!!!」と表示されれば、接続が完了しています。

image
⚠️
この時、何度か試してみても「not connected」と表示され続ける場合は、ラズパイとスマホが異なるネットワークに接続されている可能性があるので確認してみてください。

smaboの表情を変更する

それでは、「ラズパイ→スマホ」にメッセージを送信し、smaboの表情を変更してみましょう。

image

以下コマンドで、smaboの表情を変更するノードを起動してください。

ros2 run smabo_pkg impression_pub

ノードを起動したら、「0~5の間の整数」を入力することでsmaboの表情を変化させることが出来ます。

スマホのセンサ情報をラズパイで取得する

次に、ラズパイのセンサ情報を「ラズパイ→スマホ」にメッセージとして送信し、ラズパイ側に表示してみましょう。

image

センサ情報を取得するノードはいくつかありますが、ここではジャイロの情報を取得するノードを起動してみましょう。

ros2 run smabo_pkg gyro_sub

ノードを起動すると下記のように、スマホの傾きが表示されます。スマホを傾けると数値も変化するので確認してみてください。

[INFO] [1704039757.886155939] [gyro_sub]: gyro: (-0.449125736951828,-0.1520002782344818,0.8211880326271057, 0.8211880326271057)
[INFO] [1704039757.889649669] [gyro_sub]: gyro: (0.004713805392384529,0.025075498968362808,0.36185866594314575, 0.36185866594314575)
[INFO] [1704039757.893300117] [gyro_sub]: gyro: (0.004701944068074226,0.025074368342757225,0.36185330152511597, 0.36185330152511597)
[INFO] [1704039757.896615057] [gyro_sub]: gyro: (0.004707635380327702,0.025076087564229965,0.3618559241294861, 0.3618559241294861)
[INFO] [1704039757.903426023] [gyro_sub]: gyro: (0.004704895429313183,0.02507251873612404,0.36186060309410095, 0.36186060309410095)
[INFO] [1704039757.933228719] [gyro_sub]: gyro: (0.004674363881349564,0.025092056021094322,0.36184895038604736, 0.36184895038604736)
[INFO] [1704039757.990190356] [gyro_sub]: gyro: (0.004673696123063564,0.0250963494181633,0.361836314201355, 0.361836314201355)
[INFO] [1704039757.998684551] [gyro_sub]: gyro: (0.0046780966222286224,0.02509004808962345,0.36183643341064453, 0.36183643341064453)
[INFO] [1704039758.030754624] [gyro_sub]: gyro: (0.00467138085514307,0.02509021759033203,0.3618309497833252, 0.3618309497833252)
[INFO] [1704039758.063459290] [gyro_sub]: gyro: (0.004669307731091976,0.02509376034140587,0.36183303594589233, 0.36183303594589233)
[INFO] [1704039758.099228125] [gyro_sub]: gyro: (0.004672259092330933,0.02510422095656395,0.3618301451206207, 0.3618301451206207)

最後に

今回は

  • smaboをROS2で通信する方法

について解説しました。

次回は、

  • smaboにアクチュエータ(腕)をとりつけて制御する方法

について解説します。

前回: 【smabo第2回:事前準備2】ROS2(ROS2のインストール、ROS2の基礎)

次回: 【smabo第3回】smaboに腕を取り付けて制御してみよう

smaboトップページ: スマホが入るロボットの作り方【smabo】