Skip to content

Arduinoキットの初心者プログラミング体験用のArduinoスケッチです。

License

Notifications You must be signed in to change notification settings

CuboRex-Development/cugo-beginner-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 

Repository files navigation

クローラロボット開発プラットフォーム スタートガイド

旧製品:ArduinoKitをご利用の方は、こちらをご覧ください。
https://github.com/CuboRex-Development/cugo-beginner-programming/tree/uno

より発展的な開発をされたい方はこちらのSDKコマンドリファレンスをご覧ください。
https://github.com/CuboRex-Development/cugo-sdk-samples/tree/pico

1. はじめに

本リポジトリはクローラロボット開発プラットフォームを利用するためのサンプルコードです。 クローラロボット開発プラットフォームを使ってラジコン走行や自動走行を実現できます。
V4メイン

2. 準備

クローラロボット開発プラットフォームの利用開始までの手順を説明します。

2-1. Arduino IDEのインストール

  1. 公式ページ( https://www.arduino.cc/en/software )へ移動
  2. DOWNLOAD OPTIONSからご自身のOSのバージョンを選択
  3. JUST DOWNLOADかCONTRIBUTE & DOWNLOADを選択
  4. ダウンロードされたらファイルを実行して指示に従いインストール

2-2. 学習用ソースコードダウンロード

  1. Codeボタンを選択し、Download ZIPをクリックしてダウンロード image

  2. ダウンロードしたファイルを解凍

  3. CugoBeginnerProgramming.inoをダブルクリックし、ArduinoIDEを起動

2-3. Rasberry Pi Picoの初期設定

Arduino IDE でRaspberryPiPicoに書き込む場合、IDEにRaspberryPiPicoのボード情報をあらかじめ取得する必要があります。

Arduino IDE バージョン2系(最新版)の場合

  1. ファイル > 環境設定を選択
    image

  2. 追加のボードマネージャのURLに以下のURLを入力し、OKを押します。右のウィンドウボタンをクリックすると入力できるようになります。
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
    image

  3. ツール > ボード > ボードマネージャ…を選択 image

  4. "pico"で検索し、”Raspberry Pi Pico/RP2040”を見つけます。”INSTALL”ボタンを押します(すでに入っている場合はUPDATEボタンを押して最新にします)。 image image

  5. スケッチ > ライブラリをインクルード… > ライブラリを管理…を選択 image

  6. RPi_Pico_TimerInterrupt.hで検索し、”RPI_PICO_TimerInterrupt”を見つけます。”INSTALL”ボタンを押します(すでに入っている場合はUPDATEボタンを押して最新にします)。 image image

Arduino IDE バージョン1.8.19(レガシー)の場合

1. ファイル > 環境設定を選択

image

  1. 追加のボードマネージャのURLに以下のURLを入力し、OKを押します。右のウィンドウボタンをクリックすると入力できるようになります。
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
    image

  2. ツール > ボード > ボードマネージャ…を選択 image

  3. "pico"で検索し、”Raspberry Pi Pico/RP2040”を見つけます。”インストール”ボタンを押します(すでに入っている場合は"更新"ボタンを押して最新にします)。 image image

  4. スケッチ > ライブラリをインクルード… > ライブラリを管理…を選択 image

  5. RPi_Pico_TimerInterrupt.hで検索し、”RPI_PICO_TimerInterrupt”を見つけます。”インストール”ボタンを押します(すでに入っている場合は"更新"ボタンを押して最新にします)。 image

Pythonの'encoding'モジュールが見つからないエラーでビルドできない場合

以下の図のようにpythonがうまく実行できないことでコンパイルが通らないことがあります。これはボードマネージャでRP2040をインストールしたのち、 削除してもう一度入れなおした際に発生します。すでに一度RP2040をインストールした後に2回目以降にインストールする際に必要なデータが展開しきれず、必要なものが再配置されないバグが発生していると考えられます。

image

コマンドプロンプトなどのなんらかのShellを起動して以下のファイルを削除してください。
C:\Users\YutaNakamura\AppData\Local\Arduino15\packages\rp2040\tools\pqt-python3\1.0.1-base-3a57aed\

image

上記のファイルを削除したのち、ボードマネージャからRP2040を削除します。 image

再度RP2040をインストールし、コンパイルできるようになったかを確認します。 image

2-4. 制御パラメータの確認

クローラロボット開発プラットフォームには、V3iモデルとV4モデルがあります。各モデルごとに制御パラメータが異なる場所がありますので、確認をしてください。

Arduino IDE上部タブから”CugoCommandMode.h”を選択 image

下記パラメータを使用しているモデルに合わせます。

//cugo仕様関連
// CuGo V4 のパラメータ
#define wheel_radius_l 0.03858d
#define wheel_radius_r 0.03858d
#define tread 0.380d
#define encoder_resolution 600.0d
#define MAX_MOTOR_RPM 130 //モータの速度上限値
// CuGo V3i のパラメータ
// #define wheel_radius_l 0.03858d
// #define wheel_radius_r 0.03858d
// #define tread 0.376d
// #define encoder_resolution 360.0d
// #define MAX_MOTOR_RPM 180 //モータの速度上限値

プログラムが下の図と同じになるように必要に応じてプログラムを書き換え、ご自身のモデルのパラメータが反映されるように調整してください。

V4の場合
”CugoCommandMode.h”は、サンプルプログラムから変更する必要はありません。
image

V3iの場合
”CugoCommandMode.h”の15行目から19行目の行頭に//を追記し、21行目から25行目の行頭の//を削除します。
image

2-5. Rasberry Pi Picoへの書き込み

  1. CugoBeginnerProgramming.inoがArduino IDEで開かれていることを確認

  2. USBケーブルでパソコンとRaspberry Pi Picoを接続。PCに認識されないときは基板にある”BOOTSEL”ボタンを押しながらPCに挿してください。
    image

  3. ツール > ボード > Raspberry Pi Pico/RP2040 > Rasberry Pi Pico を選択 image

  4. ツール > ポート からRasberry Pi Picoのポートを選択します。ポートはUSBを接続する前と後を比較して増えたものがRaspberry Pi Picoなので、それを選択します。
    USBを接続する前↓
    image

USBを接続した後↓
image

  1. 矢印ボタン " → "を選択し、マイコンボードへ書き込むを実行
    image

  2. ボードへの書き込みが完了しましたの記載があれば書き込み完了です。

2-6. LD-2のコマンドモードを有効化

クローラロボット開発プラットフォームでは、安全のため、出荷時にプログラム動作する、コマンドモードを無効化しています。
以下の図に従って、電源が切れていることを確認し、DIPスイッチの2番をON側に倒してください。大変小さなスイッチですので、つまようじなどを用意して操作してください。
詳細は、取扱説明書をご覧ください。
https://drive.google.com/drive/folders/18MQUVMLYS_4JgkeGd2v7dVHmdmFaMaZc?usp=drive_link

image

3. 使用方法

クローラロボット開発プラットフォームでは2つのモードが利用できます

3-1. ラジコンモードの利用

ラジコンモードはCugoBeginnerProgramming.inoを書き込み後、付属のコントローラの左スティックを左側に倒すことでラジコンモードが開始します。
controller

ラジコンモードでの操作方法は

  • 左スティックの上下操作が左クローラーの前進後進移動
  • 右スティックの上下操作が右クローラーの前進後進移動 

になります
radiocontrol

3-2. プログラムモードの利用

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)と同様

4. サンプルコード解説

4-0. サンプルコードの使い方

サンプルコードはCMD_EXECUTE()の中を変更するとコマンドを読み取り、CuGoが動作します。その他の部分を変更すると正常に動作しなくなります。何を変更してしまって、わけが分からなくなった場合は再DLしてもう一度編集しなおしてください。 image

image

4-1. サンプルコードの実行

  1. ファイル内のプログラミングの一番下にある下のコードを確認してください。
  • コードを確認する場合はこちらをクリック
    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);      // おまじない
    }
  1. コマンドの説明
    こちらのコマンドを実行するとクローラロボットが正方形に移動します。

4-2. サンプルコードの変更

4-2-1. 長方形を描くには

  • 問題:クローラロボットが長方形を描く方法を考えましょう。

    • ヒント: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);      // おまじない
    }

4-2-2. 速度を変えるには

  • 問題:クローラロボットが速度を変えて進む方法を考えましょう。

    • ヒント: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);      // おまじない
    }

5. お問い合わせ先

About

Arduinoキットの初心者プログラミング体験用のArduinoスケッチです。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published