KR260でロボットアームを動かしてみた! (1)
皆さん、こんにちは。新人エンジニアの「ノリさん」です!今回はhttps://www.hackster.io/adam-taylor/kria-robotic-starter-kit-robotic-arm-90b02dを参考にKR260でロボットアームを動かすためのハードウェアデザインを作っていきます!ソフトウェアの作成は次回以降行うので楽しみにしておいてください!
2023-11-01
Step0:ハードウェア要件
- KR260 Robotics Starter Kit (/japan/products/product-highlights/xilinx-kr260)
- KR260用電源(KR260 Robotics Starter Kit に付属)
- USB-A to micro-B ケーブル(KR260 Robotics Starter Kit に付属)
- マイクロSDカード(最低16GB、KR260 Robotics Starter Kit に付属しているものでOK)
- LANケーブル(KR260 Robotics Starter Kit に付属)
- 6軸ロボットアーム (https://www.amazon.co.jp/AMONIDA/dp/B08FBDNY5M)
- サーボモーター (MG996R : 6個、ロボットアームに付属)
- Pmod CON3 : 2個 (https://digilent.com/reference/pmod/pmodcon3/start)
- 3.3 V to 5 V レベルシフタ (https://www.amazon.co.jp/VKLSVAN-Bi-Directional-Conversion-Channel-Converter/dp/B086WWCJGQ/ または https://www.amazon.co.jp/Hailege-Converter-Bi-Directional-Interchange-Raspberry/dp/B08R5MLZH9/ 前者ははんだ付けが必要 )
- ジャンパー線 (https://www.amazon.co.jp/ELEGOO-120pcs-Multicolor-Dupont-arduino/dp/B06Y48V9DL/)
- ブレッドボード (https://www.amazon.co.jp/ELEGOO-Tie-Point-Breadboard-Solderless-Arduino/dp/B06Y4KFCRJ/)
- 5V電源 (https://akizukidenshi.com/catalog/g/gM-14167/)
- 電源アダプタ (https://akizukidenshi.com/catalog/g/gC-08849/)
Step1: VivadoによるPynq用デザインの作成
Vivado を開いて新しいプロジェクトを作成します
ボード選択にてKR260が見つからない場合は、Refreshをクリックして、Robotics Starter Kit carrier card とKria KR260 Robotic Starter Kit をインストールします
次の図のようにConnectionからRobotic Starter Kit carrier を選択します
https://www.hackster.io/adam-taylor/kria-robotic-starter-kit-robotic-arm-90b02d を参考にデザインを作成します
Nextをクリックしていき、次の図のようになっていることを確認してFinishをクリックします
左側のメニューにあるCreate Block Design をクリックしてブロックデザインを作成します
上側のメニューにある+ボタンからZynq Ultra Scale MPSoC をデザイン上に追加し、Run Block Automation → Apply Board Preseにチェック → OKを選択します
+ボタンからTimerをデザイン上に追加し、Run Block Automation → All Automationにチェックが入っていることを確認 → OKを選択します
デザインの整形ボタンをクリックして、次の図のデザインになっていることを確認します
デザイン上でTimerを選択 → Ctrl + c でコピー → ペーストしたい箇所をクリックしてCtrl + vで貼り付けを5回行い、デザイン上のTimerが6個ある状態にします
Run Connection Automation → All Automationにチェックが入っていることを確認 → OKを選択します
pwm0を右クリックしてMake External を選択します
pwm0_0を右クリックして、External Port Properties を選択し、pwm0_0 の名前をpwm_0に変更します
他のpwmの名前も表1に合わせて変更します
表1. axi_timerと名前の対応
Hirarchy → DesignSourrces → bdファイル → Create HDL Wrapper を選択してHDL Wrapperを作成します
Hirarchyタブ → Constraints → constrs1 → Add sources を選択して制約ファイルの追加を行います
追加したxdcファイルを開きます
開いたxdcファイルに次を書き込みます(Pmodのピン番号はhttps://marsee101.blog.fc2.com/blog-entry-5847.htmlを参考にさせていただきました)
set_property PACKAGE_PIN H12 [get_ports pwm0]
set_property PACKAGE_PIN E10 [get_ports pwm1]
set_property PACKAGE_PIN D10 [get_ports pwm2]
set_property PACKAGE_PIN C11 [get_ports pwm3]
set_property PACKAGE_PIN J10 [get_ports pwm4]
set_property PACKAGE_PIN J11 [get_ports pwm5]
set_property IOSTANDARD LVCMOS33 [get_ports pwm0]
set_property IOSTANDARD LVCMOS33 [get_ports pwm5]
set_property IOSTANDARD LVCMOS33 [get_ports pwm4]
set_property IOSTANDARD LVCMOS33 [get_ports pwm3]
set_property IOSTANDARD LVCMOS33 [get_ports pwm2]
set_property IOSTANDARD LVCMOS33 [get_ports pwm1]
左側のメニューにあるGenerate Bitstreamを選択してBitstreamの生成を行います
Bitstreamが作成できたらハードウェアデザインの作業は完了です
感想
今回は初め、ハード開発とソフト開発を両方載せる予定だったのですが、想定以上にボリューミーになってしまったので、分割して載せることにしました。参考にしたハードウェアデザインのページは説明不足なところが多かったので少し苦労しましたね(笑)。次回はPynqでのPWMによるロボットアームの制御を行う予定です。それではまたお会いしましょう。See you next time!

ブログ
AMDによる設計およびデバッグ手法のブログ、およびアヴネット社員によるAMD製品を用いた開発チャレンジのブログです。

Kria
Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。
AMD製品に関連する技術ブログ
- エンジニアブログの再開およびテクニカルウェビナーのご案内
- 初心者のためのPython & Numpy入門
- KR260でIntel RealSenseを動かしてみた!
- Vitis HLSで足し算IPを作ってみた!(プログラミング編)
- KD240でモータ制御してみた!
- KR260でデジタル信号処理してみた! (3)
- KR260でデジタル信号処理してみた! (2)
- KR260でデジタル信号処理してみた! (1)
- KR260でロボットアームを動かしてみた! (2)
- KR260でロボットアームを動かしてみた! (1)
- KR260でROS2を使ってキャリブレーション&マーカー検出してみた!
- KR260とPynqでAIカメラを動かしてみた!
- KR260でROS2 Perception Stack Applicationを動かしてみた!【2】
- KR260でROS2 Perception Stack Applicationを動かしてみた!
- Kria SOMでTPM2.0を動かしてみた!
- VivadoでKR260のハードウェアデザインを作って動かしてみた!
- ROS2 Multi-Node Communications via TSNを動かしてみた!
- AIBOX-ReIDを動かしてみた!