前回: 【smabo第2回:事前準備2】ROS2(ROS2のインストール、ROS2の基礎)
次回: 【smabo第3回】smaboに腕を取り付けて制御してみよう
smaboトップページ: スマホが入るロボットの作り方【smabo】
お疲れ様です。秋並です。
今回は、smaboをROS2で通信する方法について解説します。
目次
- 今回使用する機材、パーツなど
- 今回使用するソフトなど
- ubuntu 22.04
- スマートフォン
- ワークスペースの作成
- リポジトリのclone
- ワークスペースのビルド
- ROS-TCP-Endpointの起動(ラズパイとスマホの通信)
- smaboを起動してROS2で通信
- smaboの表情を変更する
- スマホのセンサ情報をラズパイで取得する
- 最後に
今回使用する機材、パーツなど
パーツ名 | 商品url |
スマートフォン
Iphone MAXのような大きなサイズのスマホや、折り畳み式のような分厚いスマホは入らないので注意してください
pixel7a(152.0mm×72.9mm×9.0mm) + カバー でぎりぎりちょうどくらいのサイズです。 | - |
Raspberry Pi | - |
今回使用するソフトなど
ubuntu 22.04
ソフト名 | url |
ROS2 humble |
スマートフォン
ソフト名 | url |
smart_phone_robot
(第1回でインストールしたsmabo用アプリ) |
ワークスペースの作成
以下コマンドで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で通信するために必要となるパッケージになります。
スマホ ↔ラズパイ間の通信を行うために下記コマンドを実行します。
ros2 run ros_tcp_endpoint default_server_endpoint
smaboを起動してROS2で通信
第一回の時にスマホにインストールしたsmaboのアプリを立ち上げてください。
smaboを起動すると、ipアドレスとポート番号を入力する画面が表示されると思うので
- ip address:ラズパイが接続しているネットワークのip address
- port : 10000
と入力したのちに「Connect」ボタンをクリックしてください
ifconfig
※ コマンドがないという旨のエラーが表示された場合は下記コマンドでパッケージをインストールした後に、もう一度コマンドを実行してください
sudo apt install net-tools
ボタンをクリックし、しばらく待った後に「connected!!!!!!」と表示されれば、接続が完了しています。
smaboの表情を変更する
それでは、「ラズパイ→スマホ」にメッセージを送信し、smaboの表情を変更してみましょう。
以下コマンドで、smaboの表情を変更するノードを起動してください。
ros2 run smabo_pkg impression_pub
ノードを起動したら、「0~5の間の整数」を入力することでsmaboの表情を変化させることが出来ます。
スマホのセンサ情報をラズパイで取得する
次に、ラズパイのセンサ情報を「ラズパイ→スマホ」にメッセージとして送信し、ラズパイ側に表示してみましょう。
センサ情報を取得するノードはいくつかありますが、ここではジャイロの情報を取得するノードを起動してみましょう。
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】
smabo記事一覧