はじめに
お久しぶりです。
NEXTSCAPE Chief Technology Office の茨木です。
昨年は趣味で作っていた時計について書きました。
自己満実装が弊社メンバーの一部に大ウケしていましたが、今年もなんかやってくれと依頼されてしまいました... 前回はほぼ完成していたので、そのまま記事化すれば良かったのですが、今は完成レベルのネタも無いので、コンセプト検証レベルの様子をお届けしようと思います。
本記事は、NEXTSCAPE Advent Calendar 2025 の23日目の記事です。
ということで、
今回は麦茶を淹れてみようと思います。
動機
夏は麦茶! 異論は認める。
水出しも試しましたが、やっぱりヤカンで沸かした麦茶が一番うまい。
もうクリスマスだよって? 夏からずっと温めていた工作ネタなんです。
しかし、ヤカン麦茶は手間がかかるのです。
- お湯を沸かす
- 麦茶パックを投入
- 10分待つ
- かき混ぜる(抽出された濃い液は麦茶パック内にある)
- 麦茶パックを除去
- 冷却
10分の待ち時間が厄介ですね。必要以上に放置すると渋みや苦味が増してダメです。何もせず待ってるわけにもいかず、キッチンタイマーか Alexa に頼んで10分、キッチンに舞い戻るワケです。アァ、メンドクサイ...
なお、冷却は耐熱性のあるポットを用いてアツアツのままでも冷蔵庫に入れてしまえば良いです。
ソリューション
いろいろ作って自動化しちゃいましょう。
- 10分経ったら
- 麦茶パックを上げ下げして
- ヤカンから外す
とすると
- 10分経ったら
- スクリプトを Sleep
- 麦茶パックを上げ下げして
- 糸をステッピングモーターで巻く
- ヤカンから外す
- サーボモーターで位置を変える
という実装が思いつきますね。
製造
ハードウェア
電子部品系
Raspberry Pi 4
┣ A4988 ステッピングモータードライバー
┃ ┗ ステッピングモーター
┗ SG90 ミニサーボモーター
今回、新規調達したのはサーボモーターくらいですね。他はどこのご家庭にもある在庫から流用しました。この他にも、サーボモーターとステッピングモーターの電力として 5V, 12V のACアダプターも必要ですが、同じく在庫がある事でしょう。

ケース、リール、アーム
モデルを作って3Dプリントしました。どこのご家庭にもある3Dプリンターで...

ソフトウェア
制御基盤には ROS 2 を採用しました。サーボモーターとステッピングモーターの制御ということであれば、それはもう簡易なロボットです。
ROS 2
ROS 2の構成は以下のとおり。サーボモーターとステッピングモーターそれぞれのノードを作り、シェルスクリプトからトピックを投げ込んで動かすだけの簡易なものです。
+--------------------------------------------------+
| User / App |
| (CLI, Script, GUI, Controller Node) |
+----------------------+---------------------------+
|
| ROS 2 Topic
|
+--------------+--------------+
| |
| |
v v
+----------------------+ +----------------------+
| servo_node | | stepper_node |
|----------------------| |----------------------|
| Sub: /servo/pulse_ms | | Sub: /stepper/steps |
| Type: Float32 | | Type: Int32 |
|----------------------| |----------------------|
| PWM生成 (lgpio) | | STEP/DIR制御 (lgpio) |
+----------+-----------+ +----------+-----------+
| |
| |
v v
+----------------------+ +----------------------+
| SG90 Servo | | A4988 + Stepper |
| (50Hz PWM Control) | | (STEP/DIR Driver) |
+----------------------+ +----------------------+
※ ROS 2 を解説する記事ではないので、その辺りはバッサリと省略。
実装
実装工程は AI (ChatGPT 5.2) にお任せしました。
余談ですが、潮流的に Advent Calendar にはAI関連の投稿が多くなる事は想像していて、自分の記事でAIには触れるまい、と思っていたのです。けれども、今回の実装は完全に AI によるものなので、断念して触れておく事にします。
以下の様なプロンプトから始めます。
- Raspberry Pi 4 または 5 を使用します。
- ROS 2 を動かします。
- そのため、おそらく OS は Ubuntuになります。
- ROS で制御したいもの
- サーボモーターSG90を制御したいと考えています。
- ステッピングモーターを制御したいと考えています。
- ステッピングモーターは A4988 により制御します。
そうすると、AIが以下のような感じで順次案内してくれます。
- Ubuntu Server 22.04 をインストール
- ROS 2 Humble をインストール
- ROS 2 動作確認
- ROS 2 ワークスペース作成
- ノード実装
- ビルド~実行
必要な操作もコマンド付きで案内されます。その手順に従って作業するだけです、コピペです。エラーが出たらエラーメッセージを丸ごと AI に戻すと、対処方法まで考えてくれました。ROS ノード実装についてはコードも生成され、AI が生成したコードが100%そのまま動いたのはちょっとした驚きでした。
(参考) AIに指示した流れ
以下に、モーターの制御ができるまでに AI に指示した内容だけ列挙してみます。これだけの指示でとりあえず動かせる実装が出来上がりました。
SDカードに ubuntu 22.04 を書き込み、apt upgrade まで終えました。
SSH ログインをしたいですが、設定は必要ですか?
No supported authentication methods available (server sent: publickey)
まだエラーが続きます。
No supported authentication methods available (server sent: publickey)
リモートからsshログインできました。
次はROS2のインストールでしょうか?案内してください。
`ros2 run demo_nodes_cpp talker` したところ "Package 'demo_nodes_cpp' not found"
ubuntu@ubuntu:~$ ros2 --version
usage: ros2 [-h] [--use-python-default-buffering] Call `ros2 <command> -h` for more detailed usage. ...
ros2: error: unrecognized arguments: --version
テスト動きました。
ubuntu@ubuntu:~$ sudo apt install -y pigpio python3-pigpio
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package pigpio is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'pigpio' has no installation candidate
ubuntu@ubuntu:~$ ls -l /dev/gpiochip*
crw-rw---- 1 root dialout 254, 0 Aug 26 15:23 /dev/gpiochip0
crw-rw---- 1 root dialout 254, 1 Aug 26 15:23 /dev/gpiochip1
✅ ros2 run servo_lgpio servo_node が起動できた
✅ ros2 topic pub でサーボが動いた
次、行きましょう。
動きました。
ステッピングモーターの制御ですが、動かさない間はスリープしていますか?
ros2 run
最後に動いている雰囲気をお届けして、記事を締めたいと思います。
思いつきのコンセプト検証でした。ROS 2、サーボモーター制御、ステッピングモーター制御などもやってみたかった。
そして、これを実用化するにはヤカンの蓋の開け閉めを解決する必要があります。開けっぱなしで放置というのはよろしくない。この点はまだノーアイディア、だけど、もう、アーム型ロボットを持ち出すしかないんじゃないかなぁ...


