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

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

image

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

次回:【smabo第4回】smaboにカメラと超音波センサを取り付けてみよう

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

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

今回は、

  • smaboで腕を制御する方法

解説します。

image
🔍
smaboリポジトリに新しいコード等を追加しているので、リポジトリを最新の状態に更新した状態で作業してください。
  • 更新手順(ラズパイ側で実行)
  • cd ~/smabo
    git pull origin main # リポジトリのmainブランチを最新に更新
    cp -r ~/smabo/smabo_pkgs ~/smabo_ws/src # ROS2ワークスペース内のパッケージを最新に
    cd ~/smabo_ws
    colcon build --symlink-install # ROS2ワークスペースを再ビルド

目次

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

🔍
「互換品多数あり」の商品に関しては、もっと安い商品があるので、品質とのバランスを考えて互換品の購入も検討してみてください

共通パーツ

パーツ名
商品url
スマートフォン Iphone MAXのような大きなサイズのスマホや、折り畳み式のような分厚いスマホは入らないので注意してください。 pixel7a(152.0mm×72.9mm×9.0mm) + カバー でぎりぎりちょうどくらいのサイズです。
-
Raspberry Pi
-
モバイルバッテリー サイズが大きいとsmaboに入らないので注意。 URLのAnker PowerCore Fusion 5000がちょうどいいくらいのサイズになります。
L字ケーブル モバイルバッテリーとラズパイを接続するために使用します。 smaboにラズパイを入れた状態だと、L字型のケーブルでないと収まらないので注意してください。
ブレッドボード(85mm×55mm) (サイズが大きいとsmaboに入らないので注意)
ジャンプワイヤー
単三×4 バッテリーボックス
充電式単三電池 × 4
(電池充電器)
サーボモータドライバ PCA9685(互換品多数あり)
3Dプリンタ

スタンド関連パーツ

パーツ名
商品url
M2×8mm ×4
M2×12mm ×4
M3×25mm ×4

腕関連パーツ

パーツ名
商品url
M2×8mm ×8
SG90 × 2(互換品多数あり)

今回使用するソフトなど

ubuntu 22.04

ソフト名
url
ROS2 humble
🔍
今回は、Raspberry Pi上で作業を行います。

パーツを3Dプリンタで印刷しよう

smaboリポジトリに格納されている以下モデルを3Dプリンタで印刷してください。

🔍
3Dプリンタによる印刷については、こちらのページの「3Dプリンタで印刷してみよう」を参考にしてください。

パーツを取り付けよう

次に、印刷したパーツを取り付けます。

腕パーツ

  1. simple_handに「SG90に付属しているホーン」を「M2×8mm」のネジで固定します。
  2. image
  1. SG90をsmaboのbodyの内側から「M2×8mm」のネジで固定します。
  2. 内側からみた図
    内側からみた図
    外側からみた図
    外側からみた図
  1. 最後に、simle_handをSG90に取り付けます。
  2. image

上記の手順をもう片方の腕に関しても実施してください。

スタンド

スタンドは、組み立て手順が少々複雑なので、最初に完成形を側面からみた図を載せておきます。

image
  1. stand_raspiに「M2×8mm」のネジでラズパイを固定します。
  2. 🔍
    ラズパイを頻繁に取り外ししたい場合は、手前の2か所だけを固定してもOKです
    image
  1. stand_wall, stand_base, stand_raspiを「M2×12mm」のネジで固定します。
  2. 背面からみた図
    背面からみた図
    側面からみた図
    側面からみた図
  1. body, stand_poll, stand_baseを「M3×25mm」ネジで固定します。
  2. 🔍

    今後のカスタマイズで取り外すことが多々あるので、手前の2か所だけを固定してもOKです。

    内側からみた図
    内側からみた図
    側面からみた図
    側面からみた図

配線しよう

腕の取り付けが完了したら、配線を行います。

🔍
直接ラズパイとSG90を接続する方法もありますが、今回は「サーボモータドライバ PCA9685」を使用する方法について解説します。

今回は、以下のパーツを使用します。

パーツ名
商品url
ブレッドボード(85mm×55mm) (サイズが大きいとsmaboに入らないので注意)
ジャンプワイヤー
単三×4 バッテリーボックス
充電式単三電池 × 4
サーボモータドライバ PCA9685(互換品多数あり)
SG90 × 2(互換品多数あり)

下図のように配線してください。

image
🔍
ラズパイのGPIOピンの割り当ては下図の通りになります。

最終的な完成図は以下のようになります。

image
🔍
ブレッドボードはstand_wallに張り付けてもらってもよいですが、 私の場合は、すぐに取り外せたほうが作業しやすいので、ブレッドボードの真ん中の凹んでいる部分に輪ゴムを引っかけてstand_wallに固定しています。

smaboの腕を制御してみよう

ここからは、smaboの腕を制御する手順について説明します。

image

事前準備として、必要なパッケージをインストールします。

sudo apt update -y && sudo apt install -y \
python3-rpi.gpio
pip install adafruit-pca9685

次に、以下サイトを参考にsudoなしで RPi.GPIO パッケージを使うためのセットアップを実施してください。

【ラズパイ+ubuntu】sudoなしでadd_event_detectを使うとfailed to add edge detectionエラーが出るときの解決方法 #Ubuntu - Qiita

最後に、以下コマンドで /dev/i2c-1 の権限を変更します。

sudo chmod 666 /dev/i2c-1

pythonコードを実行して制御

最初に、ROSを使わずに制御する方法について説明します。

smaboリポジトリの「simple_code」に格納してある「move_hand.py」を実行してみましょう。

cd ~/smabo/simple_code
python3 pca9685_simple_hand.py

プログラムを実行し、「-90~90度」の間の整数を入力すると、smaboの腕を指定した角度に動かすことができます。

ROS2を使って制御

次に、ROS2を使用してsmaboの腕を制御する手順について説明します。

🔍
新しくコードを追加した場合は、以下コマンドでROS2ワークスペースをビルドしなおしてください。
cd ~/smabo_ws
colcon build --symlink-install

以下コマンドで「pca9685を制御するノード」を立ち上げます。

ros2 run smabo_pkg pca9685_controller

次に、新しいターミナルを立ち上げて「smaboの腕を制御するノード」を立ち上げます。

ros2 run smabo_pkg simple_hand_angle_commander

上記のノードを立ち上げ、「-90~90度」の間の整数を入力すると、smaboの腕を指定した角度に動かすことができます。

さいごに

今回は、

  • smaboで腕を制御する方法

解説します。

次回は、

  • smaboにカメラ、超音波センサを取り付ける方法

について解説します。

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

次回:【smabo第4回】smaboにカメラと超音波センサを取り付けてみよう

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

参考