旧製品:ArduinoKitをご利用の方は、こちらをご覧ください。
https://github.com/CuboRex-Development/cugo-beginner-programming/tree/uno
より発展的な開発をされたい方はこちらのSDKコマンドリファレンスをご覧ください。
https://github.com/CuboRex-Development/cugo-sdk-samples/tree/pico
本リポジトリはクローラロボット開発プラットフォームを利用するためのサンプルコードです。
クローラロボット開発プラットフォームを使ってラジコン走行や自動走行を実現できます。
クローラロボット開発プラットフォームの利用開始までの手順を説明します。
- 公式ページ( https://www.arduino.cc/en/software )へ移動
- DOWNLOAD OPTIONSからご自身のOSのバージョンを選択
- JUST DOWNLOADかCONTRIBUTE & DOWNLOADを選択
- ダウンロードされたらファイルを実行して指示に従いインストール
-
ダウンロードしたファイルを解凍
-
CugoBeginnerProgramming.inoをダブルクリックし、ArduinoIDEを起動
Arduino IDE でRaspberryPiPicoに書き込む場合、IDEにRaspberryPiPicoのボード情報をあらかじめ取得する必要があります。
Arduino IDE バージョン2系(最新版)の場合
-
追加のボードマネージャのURLに以下のURLを入力し、OKを押します。右のウィンドウボタンをクリックすると入力できるようになります。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
"pico"で検索し、”Raspberry Pi Pico/RP2040”を見つけます。”INSTALL”ボタンを押します(すでに入っている場合はUPDATEボタンを押して最新にします)。
-
RPi_Pico_TimerInterrupt.hで検索し、”RPI_PICO_TimerInterrupt”を見つけます。”INSTALL”ボタンを押します(すでに入っている場合はUPDATEボタンを押して最新にします)。
Arduino IDE バージョン1.8.19(レガシー)の場合
-
追加のボードマネージャのURLに以下のURLを入力し、OKを押します。右のウィンドウボタンをクリックすると入力できるようになります。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
"pico"で検索し、”Raspberry Pi Pico/RP2040”を見つけます。”インストール”ボタンを押します(すでに入っている場合は"更新"ボタンを押して最新にします)。
-
RPi_Pico_TimerInterrupt.hで検索し、”RPI_PICO_TimerInterrupt”を見つけます。”インストール”ボタンを押します(すでに入っている場合は"更新"ボタンを押して最新にします)。
Pythonの'encoding'モジュールが見つからないエラーでビルドできない場合
コマンドプロンプトなどのなんらかのShellを起動して以下のファイルを削除してください。
C:\Users\YutaNakamura\AppData\Local\Arduino15\packages\rp2040\tools\pqt-python3\1.0.1-base-3a57aed\
クローラロボット開発プラットフォームには、V3iモデルとV4モデルがあります。各モデルごとに制御パラメータが異なる場所がありますので、確認をしてください。
Arduino IDE上部タブから”CugoCommandMode.h”を選択
下記パラメータを使用しているモデルに合わせます。
cugo-beginner-programming/CugoBeginnerProgramming/CugoCommandMode.h
Lines 13 to 25 in 339cfe4
プログラムが下の図と同じになるように必要に応じてプログラムを書き換え、ご自身のモデルのパラメータが反映されるように調整してください。
V4の場合
”CugoCommandMode.h”は、サンプルプログラムから変更する必要はありません。
V3iの場合
”CugoCommandMode.h”の15行目から19行目の行頭に//
を追記し、21行目から25行目の行頭の//
を削除します。
-
CugoBeginnerProgramming.inoがArduino IDEで開かれていることを確認
-
USBケーブルでパソコンとRaspberry Pi Picoを接続。PCに認識されないときは基板にある”BOOTSEL”ボタンを押しながらPCに挿してください。
-
ツール > ポート からRasberry Pi Picoのポートを選択します。ポートはUSBを接続する前と後を比較して増えたものがRaspberry Pi Picoなので、それを選択します。
USBを接続する前↓
クローラロボット開発プラットフォームでは、安全のため、出荷時にプログラム動作する、コマンドモードを無効化しています。
以下の図に従って、電源が切れていることを確認し、DIPスイッチの2番をON側に倒してください。大変小さなスイッチですので、つまようじなどを用意して操作してください。
詳細は、取扱説明書をご覧ください。
https://drive.google.com/drive/folders/18MQUVMLYS_4JgkeGd2v7dVHmdmFaMaZc?usp=drive_link
クローラロボット開発プラットフォームでは2つのモードが利用できます
ラジコンモードはCugoBeginnerProgramming.inoを書き込み後、付属のコントローラの左スティックを左側に倒すことでラジコンモードが開始します。
ラジコンモードでの操作方法は
- 左スティックの上下操作が左クローラーの前進後進移動
- 右スティックの上下操作が右クローラーの前進後進移動
CugoBeginnerProgramming内の一番下にあるCMD_EXECUTEの関数内をプログラミングすることで自動走行が可能です。
CMD_EXECUTE内では以下のコマンドの実行が可能です。
- 基本コマンド 一覧
コマンド名 | 動作 | 備考 |
---|---|---|
matsu(1000) | 1000ミリ秒待機 | 入力した()内の数字ミリ秒だけ待機する。1000ミリ秒=1秒。 |
susumu(1.0) | 前に1m進む | ()内の数字を変更することで進む距離が変更できる |
modoru(1.0) | 後ろに1m進む | ()内の数字を変更することで進む距離が変更できる |
migimawari45() | 右回りに45度回転 | |
hidarimawari45() | 左回りに45度回転 | |
migimawari90() | 右回りに90度回転 | |
hidarimawari90() | 左回りに90度回転 | |
migimawari180() | 右回りに180度回転 | |
hidarimawari180() | 左回りに180度回転 |
- 応用コマンド 一覧
コマンド名 | 動作 | 備考 |
---|---|---|
susumu(1.0,90) | 上限速度90rpmで1.0m前に進む | ()内に移動距離と上限速度を設定。上限速度は最大180rpmで距離が短いと上限速度に到達しない場合も |
sagaru(1.0,90) | 上限速度90rpmで1.0m後ろに進む | ()内の設定はsusumu(1.0,90)と同様 |
migimawari45(90) | 上限速度90rpmで45度右に回転する | ()内に上限速度を設定。上限速度は最大180rpmで距離が短いと上限速度に到達しない場合も |
migimawari90(90) | 上限速度90rpmで90度右に回転する | ()内の設定はmigimawari45(90)と同様 |
migimawari180(90) | 上限速度90rpmで180度右に回転する | ()内の設定はmigimawari45(90)と同様 |
hidarimawari45(90) | 上限速度90rpmで45度左に回転する | ()内の設定はmigimawari45(90)と同様 |
hidarimawari90(90) | 上限速度90rpmで90度左に回転する | ()内の設定はmigimawari45(90)と同様 |
hidarimawari180(90) | 上限速度90rpmで180度左に回転する | ()内の設定はmigimawari45(90)と同様 |
turn_clockwise(60,90) | 上限速度90rpmで60度右に回転する | ()内に回転角度と上限速度を設定。上限速度は最大180rpmで距離が短いと上限速度に到達しない場合も |
turn_counter_clockwise(60,90) | 上限速度90rpmで60度左に回転する | ()内の設定はturn_clockwise(60,90)と同様 |
サンプルコードはCMD_EXECUTE()の中を変更するとコマンドを読み取り、CuGoが動作します。その他の部分を変更すると正常に動作しなくなります。何を変更してしまって、わけが分からなくなった場合は再DLしてもう一度編集しなおしてください。
- ファイル内のプログラミングの一番下にある下のコードを確認してください。
-
コードを確認する場合はこちらをクリック
void CMD_EXECUTE() { cmd_manager(); // おまじない // ここから↓を改造していこう! susumu(1.0); matsu(1000); migimawari90(); matsu(1000); susumu(1.0); matsu(1000); migimawari90(); matsu(1000); susumu(1.0); matsu(1000); migimawari90(); matsu(1000); susumu(1.0); matsu(1000); migimawari90(); matsu(1000); // ここから↑を改造していこう! cmd_end(motor_controllers); // おまじない }
- コマンドの説明
こちらのコマンドを実行するとクローラロボットが正方形に移動します。
-
問題:クローラロボットが長方形を描く方法を考えましょう。
- ヒント:susumu() のコマンドのカッコ()の中は進む距離を表しています。
- いろいろ試して確認してみましょう正解は詳細例に記載しています。
-
回答はこちらをクリック
回答例はこちら
void CMD_EXECUTE() { cmd_manager(); // おまじない // ここから↓を改造していこう! susumu(0.5); // ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); susumu(1.0); matsu(1000); migimawari90(); matsu(1000); susumu(0.5); // ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); susumu(1.0); matsu(1000); migimawari90(); matsu(1000); // ここから↑を改造していこう! cmd_end(motor_controllers); // おまじない }
-
問題:クローラロボットが速度を変えて進む方法を考えましょう。
- ヒント:susumu() の応用コマンドのカッコ()の中は進む距離と上限速度を表しています。
- いろいろ試して確認してみましょう正解は詳細例に記載しています。
-
回答はこちらをクリック
susumuコマンドの中を変更して、向かい合う辺は同じ距離を進むように変更しよう
void CMD_EXECUTE() { cmd_manager(); // おまじない // ここから↓を改造していこう! susumu(1.5,60); // ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); susumu(1.0,120);// ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); susumu(1.5,40); // ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); susumu(1.0,120);// ★デモプログラミングからの変更箇所 matsu(1000); migimawari90(); matsu(1000); // ここから↑を改造していこう! cmd_end(motor_controllers); // おまじない }
- 疑問点、不明点がある場合は issue を立ててください。