2023年 SPRESENSE活用コンテスト への道② ーマルチコアー

Home > Advent Calendar > 2023年 SPRESENSE活用コンテスト への道② ーマルチコアー
すき 0
うんこ 0

HomeMadeGarbage Advent Calendar 2023 |4日目

2023年 SPRESENSE活用コンテスト への応募に向けて前回は本連載を開始しました。

2023年 SPRESENSE活用コンテスト への道① ーキックオフー

 

 

シリアルサーボSTS3032

前回はDYNAMIXELシリーズ XL330-M077-T を SPRESENSEのUART2ピンによるシリアル通信で動かしてみました。

ここではFeetech社のシリアルサーボ STS3032 をSPRESENSE で動かしてみます。
ArduinoライブラリSCServo (秋月の販売ページでもダウンロード可能)を使用してUART2で制御しました。

STS3032で足をバタバタさせています。
XL330の時と同様に自作のシリアル変換基板を挿入しています。

STS3032 もXL330 と同様にSPRESENSE で動かすことができました。

AudiostockでBGM・効果音を販売中!

シリアルサーボの並列制御

最終完成品のロボットでは2種のサーボ (XL330,  STS3032)をそれぞれ独立に制御したいと考えています。
具体的にはXL330でタイヤを回転させて、STS3032でロボットの足を制御したいのです。

この並列処理のためにマルチコアを使用する必要があるのはもちろん2種のシリアルサーボと通信するために2個のUART信号ラインが必要となります。

しかしSPRESENSEにはUSB通信用UART以外にはUART2しかありません。。。
UARTラインの増設のためにGPIOを用いるSoftwareSerialという手法がありますがXL330,  STS3032の公式ライブラリはハードウェアシリアルにしか対応していません。

XL330,  STS3032のいずれかをソフトウェアシリアルに対応するべくコード作成の必要に駆られ、凄くめんどくさくなって  ふて寝してしまいました。。

ふて寝から覚めると。。。

果報は寝て待てとはこのことでしょうか。
ふて寝から覚めてX(旧Twitter) を眺めているとFeetechサーボ用のデータ書き込みコードが公開されておりました!

こちらの記事ではESP32からサーボに直接制御用データの書き込みをして受信はしない構成の為、 変換基板の必要のなく手軽にFeetechサーボを楽しむ方法が紹介されています。

STS3032での足制御の際には特にフィードバックの必要はないと考えており、こちらの送信だけの構成で全く問題ないので早速活用させていただきました。

ここではSPRESENSEのGPIO D7ピンをソフトウェアシリアルの送信ピンとして、記事を参考に直接STS3032にデータ送信して制御しています。

これで2種のサーボをUART2とソフトウェアシリアルの2系統で制御する環境が整いました。

マルチコア

ついに2種のサーボのマルチコア並列処理を実施します。

SPRESENSEには6つのCPUコアが搭載されており、Arduino IDE環境でもマルチコアのためのライブラリや記述方法の用意がされています。

以前にSPRESENSEのマルチコアを活用してバーサライタを作製しております。
各コアのコードをそれぞれ書いて書き込み時にコアを選択するというなかなか面白い記述方法です。

SPRESENSE のマルチコアプログラミングで バーサライタ

動作

以下のような構成で2種のシリアルサーボの並列制御が達成されました。

  • Mainコア:ホイール用サーボ XL330をUART2で制御
  • Subコア1:足用サーボ SCS3032をsoftwareserial (GPIO D7)で制御

おわりに

ここでは本連載の第一関門になるであろうと考えていた”2種のサーボの並列制御”を実現することができました。

今後もSPRESENSEのハード的制約などでいろいろな障壁が襲い掛かってくるような気がしてなりませんが、最終目標であるチョベリグ卓上ロボットの実現に向けて頑張りたいと思います (極力苦手なプログラミングで悩まない方向で。。)。

現状の課題を以下に挙げます。

  • IMUセンシング
  • コア間のスムーズなデータ共有
  • リアルタイム無線通信

次の記事

2023年 SPRESENSE活用コンテスト への道③ ーBLE通信ー

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください