Pirtunit slideshare
-
Upload
openrtm -
Category
Technology
-
view
603 -
download
2
Transcript of Pirtunit slideshare
RaspberryPi 用拡張入出力ボード:PiRT-Unit- RTミドルウエア教育用途への適用 -
〇安藤慶昭(産総研) 関山守(産総研)神徳徹雄(産総研)深澤篤史(ウィン電子工業)片見剛人(ウィン電子工業)
はじめに
• ソフト・ハード融合領域と教育
• RaspberryPiとPiRT-Unit– RT-UnitとRTC-Lite– PiRT-Unitの仕様・特徴
• ROBOMEC2013 RTM講習会での利用
• まとめ
2
ソフト・ハード融合領域と教育
3
ロボット工学、情報工学、メディア工学、先端計測工学、高エネルギー物理学、先進製造分野、メディアアート、etc…
メディアアートにおけるRTミドルウエアの利用 ロボットにおけるRTMの利用 DAQシステムでのRTMの利用 先端計測分野でのRTMの利用
ソフトウェア技術 ハードウェア技術
様々な分野で、ハードとソフトの融合が進み両方の技術を習得した人材が必要とされている!!
RTミドルウエア講習会
• これまでに約40回、600名以上を対象に講習会を開催
• ソフトとハードの技術を短期間で習得することは難しい
• 理想:
– 一人1台のロボット
– すぐに試せる環境
– 十分な時間
4
RaspberryPi• 低価格Linuxボード
– 約3,000円
• debianが動作– ≠ uClinux, busybox– セルフコンパイル可能
• リッチなスペック– CPU: ARM11 700MHz– メモリ: 512MB– ストレージ: SDメモリ
• 多彩なIF,IO– Ethernet,USB,Composite
Video, HDMI– GPIO, SPI, I2C, UART
5
HD
MI
LAN
USB
Video
PWRA
udio
5V power
5V power
Ground
GPIO 14 (TXD)
GPIO 15 (RXD)
GPIO 18 (PCM_CLK)
Ground
GPIO 23
GPIO 24
Ground
GPIO 25
GPIO 8 (CE0)
GPIO 7 (CE1)
3.3V power
GPIO 0 (I2C SDA)
GPIO 1 (I2C SCL)
GPIO 4 (GPCLK0)
Ground
GPIO 17
GPIO 21 (PCM_DOUT)
GPIO 22
3.3V power
GPIO 10 (MOSI)
GPIO 9 (MISO)
GPIO 11 (SCLK)
Ground
1 2
25 26
Raspberry Pi
RaspberryPi• 低価格Linuxボード
– 約3,000円
• debianが動作– ≠ uClinux, busybox– セルフコンパイル可能
• リッチなスペック– CPU: ARM11 700MHz– メモリ: 512MB– ストレージ: SDメモリ
• 多彩なIF,IO– Ethernet,USB,Composite
Video, HDMI– GPIO, SPI, I2C, UART
6
HD
MI
LAN
USB
Video
PWRA
udio
5V power
5V power
Ground
GPIO 14 (TXD)
GPIO 15 (RXD)
GPIO 18 (PCM_CLK)
Ground
GPIO 23
GPIO 24
Ground
GPIO 25
GPIO 8 (CE0)
GPIO 7 (CE1)
3.3V power
GPIO 0 (I2C SDA)
GPIO 1 (I2C SCL)
GPIO 4 (GPCLK0)
Ground
GPIO 17
GPIO 21 (PCM_DOUT)
GPIO 22
3.3V power
GPIO 10 (MOSI)
GPIO 9 (MISO)
GPIO 11 (SCLK)
Ground
1 2
25 26
Raspberry Pi
RaspberryPiとRTミドルウエアを利用することで、ソフトとハードの技術を効率よく習得するための
プラットフォームが実現できるのでは?
RTUnit(2003年~) /RTC-Lite(2005年~)
• ネットワーク型マイコン機器
– small/μRTUnitをRTMで統合
7
small RTUnit
μRTUnit
RTUnit 仕様
MPU Microchip PIC16F877AROM 8kwordsRAM 368 bytesEEPROM 256 bytesクロック max 20MHzA/D 10bit ×8chDIO 24chシリアル 2ch通信 LANTRONIX XPort電源 DC 5V
モデルに基づくコード生成
8
コンポーネント仕様MyComptemp.sensor devicetemp. sensor RTCSTATICPERIODICmode:TimedBooltemp: TimedDouble
name:category:description:comp_type:act_type:InPorts:OutPorts:
Template code generator
C++backend
Javabackend
Pythonbackend
RTC-Litebackend
RTC source for C++
RTC source for Java
RTC source for Python
RTC-Lite source for PIC C
RTC-Lite proxy code
class MyComp: public DataflowComponent {public:virutal onExecute(ec_id);:
private:TimedBool m_mode;TimedDouble m_temp;
};
import RTC.DataFlowComponent;public class MyCompImplextends DataFlowComponent{public ConsoleInImpl(mgr){}
:};
#/usr/bin/env pythonimport RTCclass MyComp(
DataFlowComponent):def __init__(self, manager)::
def onExecute(self, ec_id): :
#include <16f877a.h>#include "rtc_base.c“
int main (void){rtc_connect_proxy();rtc_mainloop();return 0;
}
#/usr/bin/env pythonimport RTCclass Proxy(
DataFlowComponent):def __init__(self, manager)::
def onExecute(self, ec_id): :
同一のRTC仕様からは
言語が異なっていても、同じ(コンポーネントモデルの)RTCが生成される
モデルに基づくコード生成
9
コンポーネント仕様MyComptemp.sensor devicetemp. sensor RTCSTATICPERIODICmode:TimedBooltemp: TimedDouble
name:category:description:comp_type:act_type:InPorts:OutPorts:
Template code generator
C++backend
Javabackend
Pythonbackend
RTC-Litebackend
RTC source for C++
RTC source for Java
RTC source for Python
RTC-Lite source for PIC C
RTC-Lite proxy code
class MyComp: public DataflowComponent {public:virutal onExecute(ec_id);:
private:TimedBool m_mode;TimedDouble m_temp;
};
import RTC.DataFlowComponent;public class MyCompImplextends DataFlowComponent{public ConsoleInImpl(mgr){}
:};
#/usr/bin/env pythonimport RTCclass MyComp(
DataFlowComponent):def __init__(self, manager)::
def onExecute(self, ec_id): :
#include <16f877a.h>#include "rtc_base.c“
int main (void){rtc_connect_proxy();rtc_mainloop();return 0;
}
#/usr/bin/env pythonimport RTCclass Proxy(
DataFlowComponent):def __init__(self, manager)::
def onExecute(self, ec_id): :
同一のRTC仕様からは
言語が異なっていても、同じ(コンポーネントモデルの)RTCが生成される
Proxy Component
Small RT-UnitI/O
RTC-Lite
PC
RTC-Lite protocol
フル規格RTCへフル規格RTCから
PiRT-UnitPiRT-Unit諸元
ADコンバータ 10bit, 4ch, 200S/s
DAコンバータ 12bit, 2ch
PWM出力 1ch, RCサーボモータ用
RS232C D-SUB 9pinコネクタXbeeとジャンパにて切り替え
XBee Xbeeモジュール接続コネクタ
電源入力 5V DC入力RaspberryPiへ電源供給可能RaspberryPiからの電源供給でも動作(例:秋月のアダプタ)
10
PWR
AD
0A
D1
AD
2A
D3 DA0 DA1
PW
M
RS232CDSUB 9pin
PiRT-Unit
XBee
GND5VIn
GND5VIn
GND5VIn
GND5VIn
3.3VSCLSDA
GND
I2C
シリアルポート
Zigbeeモジュール
DA 2chA
D4c
hI2
C
PWM
普通のLinuxから普通に触れる入出力ボード・クロスコンパイル不要・マシン語・アセンブリ言語不要
手軽にセンサ・アクチュエータ等を試せる環境
PiRT-Unit特長
• Xbeeを利用可能– 手軽に無線利用
• Phidgetセンサを利用可能
– 様々なセンサを手軽に利用可能
• チュートリアルとセットアップスクリプト
– 環境構築を支援するプログラムを提供
– http://openrtm.org
11
AD
GND5VIn
Phidgetセンサユニット PiRT-UnitADCコネクタ
RTM講習会での利用ROBOMEC2013(5月22日)
NSNS
localhost(デフォルト)に登録 localhost(デフォルト)に登録
RTSystemEditorに両方のネームサーバを登録
それぞれにネームサーバを立てる
Raspberry Pi+ Kobuki
RaspberryPi+ PiRT-Unit
MinistickSensor
PC
MinistickとKobukiを接続
vel
targetVelocity
RTM講習会での利用ROBOMEC2013(5月22日)
• 課題– Pythonによるプログラミング
– ひな型を提供
– IO読み込みから移動ロボット
の速度ベクトルへの変換コードを実装
• 結果– Pythonは初心者にも容易に
理解できる
– Linux上のCUIでの操作に難あり
– 無線接続が不安定なため接続トラブルが発生
13
まとめ• ソフト・ハード融合領域と教育用プラットフォームとしてのRaspberryPiとPiRT-Unit– セルフコンパイル可能なLinux– センサ等を容易に接続可能なIO拡張ボード
– Webチュートリアル・自動セットアップスクリプト
• ROBOMEC2013 RTM講習会での利用
– スクリプト言語の利用が有用
– Linux等CUIのレクチャーから必要:カリキュラムの改善
– RTミドルウエアによる拡張性、他のシステムとの接続
• PiRT-Unitを利用したチュートリアル作成を予定
– 大学の先生方のご意見をいただければ幸いです
14