KR260のロボットをゲームコントローラから制御する

本サイトはアフィリエイト広告を利用しています。
AI

KR260とゲームコントローラを使って、DCモータを制御してみました。

ワイヤレスで遠隔からKR260のロボットを制御できるようになりました。

Pyhtonでロボットのアクチュエータを動かす旨を紹介します

 

スポンサーリンク

KR260のロボットをゲームコントローラから制御する

ゲームコントローラからKR260のロボットを動かしてみました。

将来は自動制御しますが、アクチュエータの動作確認用のテストを行っています。

ワイヤレスのゲームコントローラーを使うことで遠隔制御しています。

 

DCモータをロボットのアクチュエータとして使用しています

自作のモータドライバ基板に、KR260のPWMやGPIOを送ることで制御しています。

 

ゲームコントローラーのスティックを動かすことで、ロボットカーのタイヤを動かしています。

PWMによりモータ回転数を制御をしています。

 

ボタンを押すことで、GPIOからロボットアームの動かしています。

プログラム・コントローラの詳細について紹介していきます。

 

ワイヤレス ゲームコントローラー

ワイヤレスのゲームコントローラーを使いました。

エレコム ワイヤレス ゲームパッド JC-U4113SBK です。

PC用ですが、KR260にも問題なく使えました。

 

inputsのインストール

今回KR260のPYNQ、つまりPythonで制御していきます。

ゲームコントローラーのライブラリはinputsを使用しました。

ディスプレイ・GUIがない状態でも動かせるようにしたいためです。

 

実際に動かしたプログラム(.ipynb)は下記のGitHubに置いています。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/jupyter_notebooks/pynq-original-dpu-model/controller-pwm-gpio-test.ipynb

 

この記事では、inputsに関連する箇所をメインに紹介します。

最初にゲームコントローラがいるかを確認させています。

 

ロボットのタイヤモータ箇所です。

コントローラのスティックの押し込み量で、PWMの出力を制御できるようにしました。

押し込み量を8つのセグメントに分割して、正転反転・PWMの出力を切り替えています。

 

ロボットのアーム箇所です。

KR260に設定した、GPIOのレジスタを叩いてモータを動かしています。

指定の時間分GPIOをONするようにしています。

 

実際にコントローラからモータ制御したメインプログラム箇所です。

コントローラの入力に反応して、タイヤの左右両モータ、アームのモータに制御指示しています。

 

 

LEDをゲームコントローラから制御する

最初からモータ制御するのが不安だったため、LEDでテストしました。

またLEDだとPWMのdutyが見えて、制御できているか確認しやすいためです。

動画で紹介しています。スティックの押し込みでLEDのPWMが変わることが分かります。

 

KR260のPMODコネクタに接続したのは自作のLED基板です。

下記GitHubで紹介しています。

 https://github.com/iotengineer22/PCB-KV260-PMOD-TEST

GitHub - iotengineer22/PCB-KV260-PMOD-TEST: PCB-KV260(KR260)-PMOD-INOUT
PCB-KV260(KR260)-PMOD-INOUT. Contribute to iotengineer22/PCB-KV260-PMOD-TEST development by creating an account on GitHu...

 

KR260のPYNQで動かしています。

 

GPIOやPWMを実装したFPGAの.bitファイルをロードして実行しています。

 

スティックの押し込み量でLEDの輝度(PWM)を制御できています。

左側のLED基板でPWMを確認しています。

 

ボタンを押すことで、GPIOのLEDも制御できています。

右側のLED基板でGPIOを確認しています。

 

モータをゲームコントローラから制御する

LEDで動作確認出来ましたので、モータ制御を行います。

タイヤのギアボックスやアームの機構については下記記事を参照ください。

360°カメラを搭載したロボットカーを自作してみた

360°カメラを搭載したロボットカーを自作してみた
AMD Pervasive AI Developer Contest向けて、ロボットカーを自作しました。主にタミヤのパーツを使うことで、改造・拡張しやすいようにしています。電源からアクチュエータ、またカメラの搭載を紹介していきます。360°...

 

DCモータを制御する際に使用した、自作のモータドライバ基板のデータは下記です。

 https://github.com/iotengineer22/PCB-DRV8833-TEST

GitHub - iotengineer22/PCB-DRV8833-TEST: DRV8833-PCB-KiCad-DATA
DRV8833-PCB-KiCad-DATA. Contribute to iotengineer22/PCB-DRV8833-TEST development by creating an account on GitHub.

 

冒頭でも紹介しましたが、動画でも紹介しています。

 

使用しているプログラム、読み込んでいる.bitファイルはLEDの時と一緒です。

 

今回はLEDではなく、(モータドライバ経由で)DCモータを制御します。

 

左スティックを上下させて、左のタイヤモータをPWMで制御させています。

 

右スティックでも同様に、右のタイヤモータを制御しています。

 

ボタンを押すことで、アームのDCモータも制御できていることが分かります。

 

まとめ

KR260とゲームコントローラを使って、DCモータを制御してみました。

ワイヤレスで遠隔からKR260のロボットを制御できるようになりました。

 

今回のKR260で実施した内容は、下記記事で紹介したテストの一部です。

AMD(Xilinx)のFPGAコンテストに参加した感想

AMD(Xilinx)のFPGAコンテストに参加した感想
AMD(Xilinx)とHackster(Avnet)が合同主催する、海外のコンテストに参加していました。AMD Pervasive AI Developer Contest の「Robotics AI」部門です。KR260というFPGAボ...

コメント