前回: 【smabo第2回】smaboをROS2で通信してみよう
次回:【smabo第4回】smaboにカメラと超音波センサを取り付けてみよう
smaboトップページ: スマホが入るロボットの作り方【smabo】
お疲れ様です。秋並です。
今回は、
- 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ワークスペースを再ビルド
目次
- 今回使用する機材、パーツなど
- 共通パーツ
- スタンド関連パーツ
- 腕関連パーツ
- 今回使用するソフトなど
- ubuntu 22.04
- パーツを3Dプリンタで印刷しよう
- パーツを取り付けよう
- 腕パーツ
- スタンド
- 配線しよう
- smaboの腕を制御してみよう
- pythonコードを実行して制御
- 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プリンタ |
スタンド関連パーツ
腕関連パーツ
今回使用するソフトなど
ubuntu 22.04
ソフト名 | url |
ROS2 humble |
パーツを3Dプリンタで印刷しよう
smaboリポジトリに格納されている以下モデルを3Dプリンタで印刷してください。
パーツを取り付けよう
次に、印刷したパーツを取り付けます。
腕パーツ
- simple_handに「SG90に付属しているホーン」を「M2×8mm」のネジで固定します。
- SG90をsmaboのbodyの内側から「M2×8mm」のネジで固定します。
- 最後に、simle_handをSG90に取り付けます。
上記の手順をもう片方の腕に関しても実施してください。
スタンド
スタンドは、組み立て手順が少々複雑なので、最初に完成形を側面からみた図を載せておきます。
- stand_raspiに「M2×8mm」のネジでラズパイを固定します。
- stand_wall, stand_base, stand_raspiを「M2×12mm」のネジで固定します。
- body, stand_poll, stand_baseを「M3×25mm」ネジで固定します。
今後のカスタマイズで取り外すことが多々あるので、手前の2か所だけを固定してもOKです。
配線しよう
腕の取り付けが完了したら、配線を行います。
今回は、以下のパーツを使用します。
パーツ名 | 商品url |
ブレッドボード(85mm×55mm)
(サイズが大きいとsmaboに入らないので注意) | |
ジャンプワイヤー | |
単三×4 バッテリーボックス | |
充電式単三電池 × 4 | |
サーボモータドライバ PCA9685(互換品多数あり) | |
SG90 × 2(互換品多数あり) |
下図のように配線してください。
最終的な完成図は以下のようになります。
smaboの腕を制御してみよう
ここからは、smaboの腕を制御する手順について説明します。
事前準備として、必要なパッケージをインストールします。
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の腕を制御する手順について説明します。
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】
参考
smabo記事一覧