LoginSignup
77
90

More than 5 years have passed since last update.

RaspberryPi でPythonでモータ制御するための情報

Last updated at Posted at 2015-12-21

これも調査中の記事です。

みんなのRaspberry Pi 入門 モーターキット

内容物
DCモーター ※要ハンダ付け
銅線 2本
デュアル・モータードライバ (TB6612FNG)※要ハンダ付け
電池ボックス
ステッピングモータ(SPG27-1702)
トランジスタアレイ(TD62783APG)
ミニサーボモータ
ピンヘッダ 1×40

書籍[「みんなのRaspberry Pi入門 第2版 対応言語:Python」]
みんなのRaspberry Pi入門 第2版

DCモータ、ステッピングモータ、ミニサーボモータと異なる種類のモータを含むセットなので、モータ初心者にとって、それぞれのモータがどういうものかを知ることから始めることができるだろう。

(DCモーター:小学校や中学校の理科の実験に使っているのは、たいがいこれ。電源につなぐだけで回る。(どれだけ回って目的の位置にあるのかどうかは、DCモータには知る手段がない。)
ステッピングモーター:モーターがどの回転位置にあるかを小刻みに制御しているモータ。外乱がなく制御されている系で用いることが多い(ようだ)。

)

Raspberry PiのGPIO制御方法を確認する(回路組み立て編その1)

第24回 Raspberry PiのGPIOを制御する(コマンド編)

第26回 Raspberry PiのGPIOを制御する (Python編)

https://tool-lab.com/make/raspberrypi-startup-26/
「ツール・ラボ」さんの記事はGPIOについて丁寧に書いてくれています。

Raspberry PiでSPG20-1332(注:ステッピングモーター)を回す

GPIOの出力を制御するために
system("echo \"7\" > /sys/class/gpio/export");
といったように、RaspberryPiの特定のデバイスファイルに値をechoで書き込んでいる。

Raspberry piでステッピングモータを制御し、音楽を奏でる

ステッピングモーターST-42BYG020
ステッピングモータードライバキット(の一部)

PythonでGPIOを使う方法で書かれている。

新登場のRaspberry Piロボティクス用ボードのハードウェア性能とソフトウェアサポートを検証!

Gertbot Robotics Board for Raspberry Pi

安価なLinuxボード「Raspberry Pi」、新モデル「B+」で試したい5つのこと

Raspberry Pi GPIO入出力のサンプル(Python, C言語, shellスクリプト)

http://netlog.jpn.org/r271-635/2013/01/raspberry_pi_gpio_test.html
まず、シェルスクリプトをみてみると、GPIOを出力として利用するとは、
/sys/class/gpio/
以下のデバイスファイルに値を書き込むことがわかる。

C言語の階層でみると、チップBCM 2835の固有のIO関数を使うためには、
固有の関数を利用していることがわかる。
GPIO and other IO functions on the Broadcom BCM 2835 chip
C library for Broadcom BCM 2835 as used in Raspberry Pi

Python言語の階層からみると
import RPi.GPIO
RPi.GPIO
がC言語での場合には見えてしまう厄介な処理の部分をだいぶ隠してくれており、扱いやすい形になっていることがわかる。
RPi.GPIOのサイトでは次のような注意を述べています。

Note that this module is unsuitable for real-time or timing critical applications. This is because you can not predict when Python will be busy garbage collecting.

このモジュールはリアルタイムや時間がクリティカルな用途には適していないことに留意してください。
Pythonがガバレージコレクションにいつ忙しくなるのか予測することができないのです。
BCM2835 SOC and Raspberry Pi
に強く依存しているので、他のARMベースのLinuxボードのGPIOでは使えないはずです。

RaspberryPiでフィギュアの制御

RaspberryPiでモータ制御している例は

株式会社ボークス(VOLKS INC.)とスピーシーズ株式会社は、業界標準のボークス社製60cmドールを動くフィギュア技術で可動させた『動くドール:Dollfie(R)ハニー』を開発しました。
(A) Dollfie(R) Honey: 60cm 28DOF Motional doll equipped with LINUX and MikuMikuDance(YouTube画像の1つ)

がありました。
YouTubeのリンクの1つは、台座部分の中身を見える構造でのビデオです。
制御の軸数が多いのをどのように制御しているかが興味深いところです。
開発元のスピーシーズ株式会社のリンクをたどっていくと
http://robo-pro.com/MOFI/strategy.html
にたどりつきました。どのようにワイヤーで人形を制御しているのかが見て取れます。

スピーシーズの記事 2016/09/01 動く「初音ミク」ドール、元AIBO開発者らが制作 9月のイベントで初披露

小型コンピュータ「Raspberry Pi 3」を搭載し、Linuxが動作。MikuMikuDance(MMD)でオリジナルのモーションを作成することもできる。

とのこと。

[RaspberryPiでドローンを操作!?フライトコントローラー「NAVIO+」]

(http://www.borg.media/raspberry-pi-navio/)

NAVIO+はC++とPythonによりプログラミングされており、
ソースコードはこちらのGitHub上で公開されています。

RaspberryPiの販売元のRSコンポーネントからモータ制御用の基板が販売されています。
RaspberryPiに接続して使います。
RaspberryPi本体ではGPIOの電圧が3.3V であり、電源の電圧や電流の供給に限界がありますが、それより大きな電圧を供給できます。

Gertbot Robotics Board for Raspberry Pi

12V power supply

Raspberry財団上のページ
GERTBOT IS HERE!

RTK MOTOR CONTROLLER BOARD KIT FOR RASPBERRY PI
https://docs.google.com/document/d/1Rfw2yCGLgT9BpKVBv3TBlHxGVVSL7cA8nhG0zy4hb0A/edit?pli=1#heading=h.urtsts8c9n0t

SMALL REDUCTION STEPPER MOTOR - 5VDC 32-STEP 1/16 GEARING
https://www.adafruit.com/products/858

Raspberry Pi 3 モデルB


BeagleBone Black の GPIO

BeagleBone Black で遊ぶ - GPIO

BeagleBoneBlack [4] – 拡張コネクタ GPIO 制御 –

BeagleBone Blackシリーズ: Linux GPIOを通して割り込みを取得する

BeagleBone Black のGPIO を pythonから利用する

BeagleBoneBlack Python Lチカ


GPIOは他のARMベースのLinuxボードとどの程度共通なのだろうか?

ArmadilloのGPIO

http://manual.atmark-techno.com/armadillo-4x0/armadillo-460_startup_guide_ja-1.0.5/ch08.html#sec-GPIO
[armadillo ~]# echo 1 > /sys/devices/virtual/gpio/CON9_2/value
といった流儀で値を設定できることは共通らしい。

ArmadilloにPythonをインストールすることは可能らしい
Armadillo-IoT: ユーザーランドにPythonを追加する
https://users.atmark-techno.com/blog/53/1349

この記事ではdebianを使って、ArmadilloにPythonをインストールし、apt-getでPIP(python-pip)を入れて、
PyserialをPIPを使ってインストールしています。

Armadillo-X1 2016年発表


Zynq(Xilinx)

FPGAを利用可能なARMデバイスであるZynqについて調べてみる。
ZynqもLinuxで利用可能である。GPIOの他にも
EMIO(extended multiplexed I/O)
などがある。

Zynq-7000(ZC702)のLinuxでMIOに接続されているLEDを制御
Cのソースコードが記載されている。

[ZYNQ に GPIO 回路を接続し Linux 上で割込みを受け付けてみる(後編)]
http://myokota.hatenablog.jp/entry/2015/08/12/233020

for i in `seq 898 901`; do
echo 1 > /sys/class/gpio/gpio$i/value
done

Zynqを利用したボードの1例です。
ZYBO Zynq-7000 評価ボード

Xillybus and ROS on Ubuntu14.04 on Zybo Part 4 : Zybo上における設定~ROSのインストール


Cyclone V SoC(Altera)

「アルテラ SoC評価ボード HelioにDCモータをつなぐ」

Helioボードの記事 「【其ノ八】 ネットワークアプリでの遠隔 PWM 制御、モーター制御、起動スクリプトの作成方法」

書籍 「ARM Cortex-A9×2!ZynqでワンチップLinux on FPGA」
image

書籍 「FPGAマガジン No.7 ブラシ付きからステッピングまで!初めての制御回路作り
モータ&ロボット×FPGA」

追記:
 RaspberryPIやPythonにかぎった話ではありませんが、
次の書籍は、さまざまな部品についての理解を深めてくれそうです。
書籍「ロボコン部品ガイドブック」オーム社編

未整理の追記:
 サーボモータではPWM(Pulse Width Modulation)が使われている。そのため、PWMでの出力の関係の記事を調査中。

モータ制御に欠かせない技術“PWM”って何? (1/3)
https://www.switch-science.com/catalog/2181/

Adafruit 16チャンネル PWM/サーボ HAT for Raspberry Pi
https://www.switch-science.com/catalog/2181/

Raspberry Pi 2でDCモーターを2つ制御する
http://kaiware007.hatenablog.jp/entry/2015/07/15/014119

Raspberry Pi で GPIO
http://ag.hatenablog.com/entry/2015/07/31/013013

「インターフェース」 が特集を組んでいます。
- 「インターフェース 2016年5月号 人間アシスト/ロボ/EV/ドローンのキー・テクノロジを5,000円キットで初体験! トルク自由自在!最新モータ制御」


Jetson (Tegra board)

> sudo python ~/lab/gpio/advanced_blink.py
として実行させるだけだが,接点スイッチを押している間だけLEDが点滅することを確認できた。

Jetson TX1開発キットのディープラーニング機能

Jetson TX1 でも看板検出やってみた


<付記>
RaspberryPiの場合、USBメモリを差し込むだけで、自動でマウントされる。しかも、USBメモリをunmountするのがGUIから簡単に行える。そのため、RaspberryPiでの開発は、特にpythonスクリプトの場合楽だ。Windowsで動作するスクリプトを作っておき、USBメモリにコピーし、RaspberryPiに差し込むと、RaspberryPi上で動作させるのがとても簡単です。不足しているライブラリは,apt-getで入手すればよいのが大半なので移植性は良好です。そのためには、windows上でspyderを使って事前にpylint しておいて移植性を良好にしておきます。スクリプトはUTF8で保存しておきます。ディレクトリの区切りにr"\"を使わず"/"を使うようにしておきます。プログラムをコンソールで実行させるときに、日本語コードなどの多バイトコードを表示させないようにしておくのが、トラブルをさけるのによさそうです。コンソールの表示のフォントなどの理由により、期待した動作から外れてしまうことを
無難だと考えています。

組み込み系のCPUボードはなかなかボードを入手して動作させる機会が少なくなりがちです。しかも開発環境の情報や、開発事例が十分あるCPUボードは限られてしまいがちです。RaspberryPiは入手しやすく、開発環境がそろっていて、開発事例の情報はweb上に多数あるものです。ですから、組み込みプログラミングを始めてみるにはとても始めやすい基板といえます。

<付記>
ROS(Robot Operating System)について調べてみよう
を書きました。

Pythonでのモータ制御に関心をもっている理由
http://qiita.com/nonbiri15/items/c911e327faec3d43a0b4
を書きました。

Omega2 というWi-Fi内蔵・Linux搭載のコンピューターが気になりはじめました

インターフェース が特集を組んでいます。
「インターフェース 2016年5月号
人間アシスト/ロボ/EV/ドローンのキー・テクノロジを5,000円キットで初体験!
トルク自由自在!最新モータ制御」

77
90
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
77
90