前回: 【smabo第3回】smaboに腕を取り付けて制御してみよう
次回:【smabo第5回】smaboを移動ロボットにしてみよう
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プリンタで印刷しよう
- パーツを取り付けよう
- 頭パーツ
- 配線しよう
- カメラを制御してみよう
- pythonコードを実行して制御
- ROS2を使って制御
- 超音波センサからの情報を取得してみよう
- pythonコードを実行して制御
- ROS2を使って制御
- smaboの頭を制御してみよう
- 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 | |
(電池充電器) | |
3Dプリンタ |
頭関連パーツ
パーツ名 | 商品url |
SG90(互換品多数あり) | |
Raspberry Pi Camera V2(互換品多数あり) | |
M2×8mmネジ × 8 | |
M2×10mmネジ × 2 | 同上 |
超音波センサ HY-SRF05(互換品多数あり) | |
M1.6ネジ(HY-SRF05用) |
今回使用するソフトなど
ubuntu 22.04
ソフト名 | url |
ROS2 humble |
パーツを3Dプリンタで印刷しよう
smaboリポジトリに格納されている以下モデルを3Dプリンタで印刷してください。
パーツを取り付けよう
次に、印刷したパーツを取り付けます。
頭パーツ
- SG90をsmaboのbodyの内側から「M2×8mm」のネジで固定します。
- head_stand_baseに「SG90に付属しているホーン」を「M2×8mm」のネジで固定します。
- head_stand_camera_ultra_sonicに「Raspberry Pi Camera V2」を「M2×8mm」で固定します。
- head_stand_camera_ultra_sonic, ultra_sonic_pollに「HY-SRF05」を「M1.6ネジ」で固定します。
- head_stand_baseとhead_stand_camera_ultra_sonicを「M2×10mmネジ」で固定します
- 最後に、head_stand_baseをSG90に取り付けます。
配線しよう
次に、配線を行います。
パーツ名 | 商品url |
ブレッドボード(85mm×55mm)
(サイズが大きいとsmaboに入らないので注意) | |
ジャンプワイヤー | |
単三×4 バッテリーボックス | |
充電式単三電池 × 4 | |
サーボモータドライバ PCA9685(互換品多数あり) | |
SG90 × 1(互換品多数あり) | |
超音波センサ HY-SRF05(互換品多数あり) |
下図のように配線してください。
最終的な完成図は以下のようになります。
カメラを制御してみよう
ここからは、カメラを制御する手順について説明します。
事前準備として、必要なパッケージをインストールします。
pip install opencv-contrib-python
pip install flask
pip install ipget
以下コマンドで、/dev/video0
の権限を変更します。
sudo chmod 666 /dev/video0
pythonコードを実行して制御
最初に、ROSを使わずに制御する方法について説明します。
smaboリポジトリの「simple_code」に格納してある「cam_stream_on_flask.py」を実行してみましょう。
cd ~/smabo/simple_code
python3 cam_stream_on_flask.py
ターミナル上に表示されるアドレス(192.168..:5000/)にアクセスするとカメラから取得された画像が表示されます。
ROS2を使って制御
次に、ROS2を使用して制御する手順について説明します。
cd ~/smabo_ws
colcon build --symlink-install
以下コマンドで「カメラから画像を取得するノード」を立ち上げます。
ros2 run smabo_pkg cam_stream
新しくターミナルを立ち上げて、「/imageトピックから購読した画像をflask上で表示するノード」を立ち上げます。
ros2 run smabo_pkg flask_image_display
ターミナル上に表示されるアドレス(192.168..:5000/)にアクセスするとカメラから取得された画像が表示されます。
超音波センサからの情報を取得してみよう
次に、超音波センサを制御する手順について説明します。
pythonコードを実行して制御
最初に、ROSを使わずに制御する方法について説明します。
smaboリポジトリの「simple_code」に格納してある「ultrasonic_sr04.py」を実行してみましょう。
cd ~/smabo/simple_code
python3 ultrasonic_sr04.py
コードを実行すると下記のように、超音波センサで計測した距離(cm)が表示されます。
13.17 cm
13.18 cm
13.21 cm
13.20 cm
13.21 cm
ROS2を使って制御
次に、ROS2を使用して制御する手順について説明します。
cd ~/smabo_ws
colcon build --symlink-install
以下コマンドで「超音波センサからの距離情報を取得するノード」を立ち上げます。
ros2 run smabo_pkg ultrasonic_sensor
コードを実行すると下記のように、超音波センサで計測した距離(m)が表示されます。
[INFO] [1704560652.946915129] [ultrasonic_sensor]: distance: 0.04410195350646973 m
[INFO] [1704560652.951719651] [ultrasonic_sensor]: distance: 0.1263386607170105 m
[INFO] [1704560653.041953099] [ultrasonic_sensor]: distance: 0.12637817859649658 m
[INFO] [1704560653.143156803] [ultrasonic_sensor]: distance: 0.12622010707855225 m
[INFO] [1704560653.242842910] [ultrasonic_sensor]: distance: 0.12665480375289917 m
smaboの頭を制御してみよう
最後に、smaboの頭をキーボードで制御する手順について解説します。
事前準備として、必要なパッケージをインストールします。
pip install readchar
以下コマンドで i2c-1
の権限を変更します。
sudo chmod 666 /dev/i2c-1
ROS2を使って制御
サーボの制御は、第3回でも解説しているため、ROS2を使用して制御する手順についてのみ説明します。
cd ~/smabo_ws
colcon build --symlink-install
「pca9685を制御するノード」を立ち上げます。
ros2 run smabo_pkg pca9685_controller
次に、新しいターミナルを立ち上げて「smaboの頭を制御するノード」を立ち上げます。
ros2 run smabo_pkg head_arrow_key_commander
上記のノードを立ち上げ、"z"キーを入力すると左方向に回転、"x"キーを入力すると右方向に回転します。
さいごに
今回は、
- smaboにカメラと超音波センサを取り付けて制御する方法
解説します。
次回は、
- smaboを移動ロボットにする
について解説します。
前回: 【smabo第3回】smaboに腕を取り付けて制御してみよう
次回:【smabo第5回】smaboを移動ロボットにしてみよう
smaboトップページ: スマホが入るロボットの作り方【smabo】
参考
smabo記事一覧