TOPPERS基礎ロボコンセミナー

Similar documents
SWEST 17 mruby の現状と事例紹介 九州工業大学情報工学部田中和明 RubyAssociation 軽量 Ruby フォーラム

EV3_APIの解説.pptx

<4D F736F F F696E74202D20834A815B836C838B835C815B835882CC95E082AB95FB F4B2E B8CDD8AB B83685D>

TWE-Lite R 取扱説明書

AP-RZA-1A シリアルFlashROMの書き込み方法

Raspberry Pi で WEB カメラを使用 会津大学 RT ミドルウェア講習会 2017 The University of Aizu

1 1 Arduino とは Arduino アルドゥイーノ は ワンボードマイコンの一種で オープンソースハードウェアであ り 組み立て済みの基板を購入することもできるほか 誰でも自分の手で Arduino を組み立てる ことができます USBコネクタでPCと接続して利用します デジタルポートとア

EV3RTの概要.pptx

MINI2440マニュアル

インテル(R) Visual Fortran コンパイラ 10.0

USB シリアルケーブルインストールマニュアル ご使用上の注意 ( 必ずお読みください ) ご使用のパソコン, 機器によっては動作しない場合があります. USB シリアルケーブルの抜き差しはケーブルを持たず, 必ずコネクター部分を持ってください. 濡れた手で USB シリアルケーブルの抜き差しはしな

ダウンロード先一覧 USB シリアル変換ケーブル / BSUSRC06 トライバー 製品にドライバ CD が付属していますが 下記のサイトからもダウンロードすることが可能です <Web> 64b

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

CX6_firmup

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

プログラマブル LED 制御モジュール アプリ操作説明書 プログラマブル LED 制御モジュール設定アプリ操作説明書 適用モジュール 改訂番号 エレラボドットコム 1

MS916 バッチ操作ガイド FW バージョン 0.52 向け バッチ操作の基本 MS916 のバッチ操作について バッチ操作では 読取ったバーコードデータはすべて 不揮発性のメモリ (1MB ROM JAN-13 約 50,000 件 ) に保存されます メモリに保存されたデータは任意のタイミング

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

24th Embarcadero Developer Camp

GL100 Main Firmware Update Procedure (rev 3) GL100 シリーズのメインファームウェアアップデート方法 1. メインファームウェアのアップデートの注意事項 本説明書は GL100-N または GL100-WL のメインファームウェアアップデート方法につい

開発環境構築ガイド

ST-LINK/V2-1 への Upgrade V /10/07 ST-LINK/V2-1 USB driver のインストールおよび ST-LINK/V2-1 の Upgrade について説明します ST-LINK/V2-1 USB driver をインストールしてから ST-LIN

S0027&S0028 取扱説明書 1-1 充電をするには 1-2 電源を入れるには 1-3 電源を切るには 1-4 充電が少なくなった場合 1-5 動作切り替え 目次 2-1 動画録画 2-2 静止画撮影 2-3 PC で再生するには 3-1 録画装置を HDMI コードでテレビモニターに繋いで使

P7000_P6000バージョンアップ

GettingStartedTK2

Windows2000/XPインストール手順

エンドポイント濁度測定装置 LT-16 取扱説明書

Windows Graphic Loader for Label Printers

インストールマニュアル

CommCheckerManual_Ver.1.0_.doc

Microsoft Word - USB60BCR_10.doc

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

Microsoft Word - (171118_v4250)ACS_インストールマニュアル.doc

第 7.0 版 利用履歴管理 ETCPRO5 セットアップマニュアル (Ver5.002) カードリーダモデル変更 ( 表示付き 表示なし ) に伴い 改訂 Windows10 対応に伴い 改訂 参考ホームページサイト :

スライド 1

Windows への opensource COBOL 環境の構築手順 0. 前提条件当手順は Windows へ opensource COBOL 環境を構築する手順である 手順確認時の OS と時期は以下の通りである OS Windows 8.1(64bit) 時期 2018/09 1. 構築手

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

nLiteによるドライバの統合 - フロッピーディスク不要のXPインストールCDの作成方法 -

目次 USBドライバダウンロードの手順...2 USBドライバインストールの手順...3 インストール結果を確認する...19 USBドライバアンインストール / 再インストールの手順...21 USB ドライバダウンロードの手順 1. SHL21 のダウンロードページからダウンロードしてください

ERTLテンプレート

PICKIT3オフライン書き込みガイドブック

Microsoft Word - XPC4ソフトマニュアル.doc

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

TOPPERS活用アイデア・アプリケーション開発

Microsoft Word - Mac版 Eclipseの導入と設定.docx

ADempiere (3.5)

G800SE HTMLdocument update

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

 

PowerTyper マイクロコードダウンロード手順

PCL6115-EV 取扱説明書

TECSをサポートする構造設計ツール ZIPC Toy!

BT-2000/2200 システムソフトウェア リリースノート(Ver.R1.5.0)

CR-USB 仕様書 株式会社測商技研 JS カード用データ転送用カードリーダー CR-USB 仕様書 取扱説明書 2012 年 07 月 31 日版 株式会社測商技研 1. 概要 本器は当社製自動観測装置で記録した JS カードデータ

Microsoft Word - BluetoothV21接続手順書3_CM520BT.docx

地図 SD カードを取り外す 最初に ナビゲーション本体から地図 SD カードを取り外します 本操作は地図 SD カードを初めて ROAD EXPLORER Updater に登録するときや パソコンにダウンロードしたデータを地図 SD カードに保存するときに実行してください 1 ナビゲーション本体

ファームウェア書き換え説明書 目次 はじめに... 2 書き換え前に... 2 接続図... 2 書き換え手順... 3 (1) ファームウェアファイルの準備... 3 (2) 接続準備... 3 (3) ファームウェア書き換え準備 (4) ファームウェア書き換え準備 (

PIC

STB3操作マニュアル

KDDI ペーパーレスFAXサービス

Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレート (Windows 版 ) Quick 説明書 はじめにこの度は Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレートをダウンロードして下さり 誠にありがとうございます 本説明書はビルド環境テンプ

< F F D815B B408EED95CA C815B83678FEE95F13F7C3F C815B A896E282A28D8782ED82B93F7C3F57494C4C4

目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定 TP-LINK USB プリンターコントローラーを起動 / 終了するには

monologue Sound Librarian 取扱説明書

MS5145 USB シリアル エミュレーション モードの設定

プロッタドライバインストールガイド プロッタドライバインストールガイド <OPS628>-Windows 7- <OPS628> Windows 7 環境 本説明書は グラフテックのホームページよりドライバをダウンロードして コンピュータにインストールする手順を説明したものです 内容をご確認のうえ

WinCT-AD4212D オペレーションマニュアルVer.1.01

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

電子13-06 エネメータ専用ソフト SAVER CAST for EneMeter Ver3.00設定方法.ppt

目次 1. はじめに 接続先ホスト端末の登録 ホスト端末と接続する... 9 i

1. Borland C++Compiler をインストールする 1.1. Borland C++Compiler をダウンロードする Borland C++Compiler とは Borland 社がフリーソフトウェアとして公開している C 言語と C++ 言語の Windows 用コンパイラです

LANdeVOICE PBSP-SIO (I/O接点付き)

用意するもの Crystal Signal Pi 本体 Raspberry Pi 第一世代 Model B+ 以降 microsd カード microusb ケーブル 2017 年 12 月 19 日 インストール方法 Raspbian のインストール microsd カードに Raspbian を

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

MS104-SH2 USBドライバ(仮想COMポートドライバ)の不具合について

開発環境構築ガイド

Studuino ライブラリ環境設定Windows編

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

Transcription:

ET ロボコン向け TOPPERS 活用セミナー mruby on EV3RT+TECS を使ったアプリ開発環境 小南靖雄 (TOPPERS 個人会員 ) 2018 年 6 月 11 日 1

目次 EV3に対してmrubyで操作できること mruby on EV3RT+TECSの仕組み mruby on EV3RT+TECSのリアルタイム性能 環境構築 mrubyのビルド EV3Way 向けとETロボコン向け設定 二つの開発方法 開発方法 (SD) コンパイル手順 アプリケーションの起動方法 ev3way_sample エラー対処方法 付録 2

EV3 に対して mruby で操作できること ( クラス一覧 ) Balancer Battery Button LCD LED クラスメソッドとして呼び出す Speaker, RTOS, Parameter Motor ColorSensor GyroSensor UltrasonicSensor TouchSensor インスタンス化 (new) が必要及びポート番号の指定が必要 3

EV3 に対して mruby で操作できること ( クラスメソッド ) Balancer ET ロボコン向けバランス制御 (4 ミリ秒周期 ) Battery Button LCD LED Speaker RTOS Parameter バッテリの電流 電圧取得 ボタンの押下状態取得 LCD 表示 LED ライトのカラー設定 音量を調整 トーン出力 自タスクを指定された時間遅延 時刻の参照 自タスクを起床待ち状態にする 各種センサ 各モータのポート番号記録 記録したポート番号取得 4

EV3 に対して mruby で操作できること ( インスタンスメソッド ) Motor ColorSensor GyroSensor UltrasonicSenso r TouchSensor モータのスピード設定 パワー取得 モーター停止 モータを指定角度回転 モータの角位置取得 モータの角位置をゼロにリセット カラーセンサで反射光の強さを測定 環境光の強さを測定 RGB 値を測定 カラーを識別 指定色であるか識別 ジャイロセンサで角速度 角位置を測定 角位置をゼロにリセット キャリブレーション複数回測定した値の平均値取得 超音波センサで距離測定 超音波信号検出 タッチセンサの状態検出 5

mruby on EV3RT+TECS の仕組み EV3RT のスタンドアローン形式として動作 EV3RT で提供されている C 言語ライブラリ mruby の VM を TECS コンポーネント化 (TECS ジェネレータがコンポーネント部分の C 言語コードを自動生成 ) TECS コンポーネントを mruby のオブジェクトとする C 言語コードを自動生成 (TECS ジェネレータの MrubyBridge プラグイン ) mrbgem が内部で行うことと同等な処理をする オブジェクトのメソッドの実体は C 言語関数 6

mruby on EV3RT+TECS の仕組み SD mrbc でスクリプトをコンパイルして C 言語の配列として出力 スクリプトを含むもの全体を C コンパイラでコンパイル 一つのイメージとして SD カードに書き込む Mruby スクリプト TECS コンポーネント (mruby VM 含む ) EV3RT の C 言語関数 SD 7

mruby on EV3RT+TECS の仕組み Bluetooth mrbc でスクリプトをコンパイルして mrb ファイルとして出力 スクリプトを含まないものを一つのイメージにとして SD カードに書き込む SD カードから起動して Bluetooth を介して mrb ファイルを転送して スクリプトを実行 Mruby スクリプト TECS コンポーネント (mruby VM 含む ) EV3RT の C 言語関数 SD 8

mruby on EV3RT+TECS のリアルタイム性能 倒立制御ライブラリの 4ms 毎呼出しの制約 ( 赤線 ) を守れるか? 9

環境構築 パッケージをダウンロードして解凍 - https://www.toppers.jp/download.cgi/mruby-onev3rt+tecs_package-beta2.1.0.tar.gz Windows7 Windows8 Windows8.1 Windows10 Cygwin インストール Ruby GNU Make bison クロスコンパイラ arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors 6-2017-q1-update) 6.3.1 20170215 (release) [ARM/embedded-6- branch revision 245512] https://developer.arm.com/-/media/files/downloads/gnu-rm/6_1-2017q1/gcc-arm-none-eabi-6-2017-q1-update-win32.exe mkimage Windows 用バイナリはパッケージに同梱 Cygwin 及びクロスコンパイラのインストールは EV3RT の開発環境構築を参照してください http://dev.toppers.jp/trac_user/ev3pf/wiki/devenvwin 10

環境構築 : ディレクトリ構造 bin Windows 向け開発環境のバイナリ mkimage を含む doc mruby リファレンス ビルド手順 サンプルプログラムの説明 hr-tecs TOPPERS/HRP2 及び EV3 プラットフォーム サンプルプログラム (hr-tecs/workspace/mruby_app) mruby mruby ver1.2.0 build_config.rb で EV3 用のクロスコンパイルを指定 11

環境構築 : パスの通し方 クロスコンパイラをインストールしたディレクトリに PATH を通す C: Program Files (x86) GNU Tools ARM Embedded 6 2017- q1-update bin フォルダ名は クロスコンパイラのバージョンごとに変わります arm-none-eabi-gcc へパスが通っているかを確認 $ arm-none-eabi-gcc --version arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors 6-2017-q1-update) 6.3.1 20170215 (release) [ARM/embedded-6-branch revision 245512] Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. コンパイラバージョンが表示されない場合は PATH を確認 12

mruby のビルド mruby のビルド (host 用コンパイル ARM 用クロスコンパイル ) パッケージを展開したディレクトリで $ cd mruby $ make mruby ディレクトリで make を実行すると mruby がビルドされる ビルドには ruby 及びbisonのインストールが必要下記の出力がされればビルド成功 13

EV3Way 向けと ET ロボコン向け設定 各種センサ 各モータのポートへの接続 EV3Way と ET ロボコンでは異なるポートに接続する ポートの接続の割り当てを記録するクラス Parameter を用いて そこに記録したポート番号を利用する Makefile の変数 RUNNING_BODY に ev3way または etrobo を指定することで 適切なポートの接続が記録される hr-tecs/workspace/sd/makefile hr-tecs/workspace/bluetooth/makefile #RUNNING_BODY = ev3way RUNNING_BODY = etrobo 14

EV3Way 向けと ET ロボコン向け設定 EV3Way 向 ETロボコン向 タッチセンサポート :port_1 :port_1 カラーセンサポート :port_2 :port_3 ジャイロセンサポート :port_3 :port_4 超音波センサポート :port_4 :port_2 尻尾モータポート :port_a :port_a 右モータポート :port_b :port_b 左モータポート :port_c :port_c TOPPERS プロジェクト認定 15

ET ロボコン 2018 向けデカタイヤ対応 ET ロボコン 2018 で採用されたタイヤについて サイズが大きいため EV3Way や ET ロボコン 2017 以前の倒立制御ライブラリのままでは倒立制御が難しくなった 倒立制御ライブラリのパラメータ変更 倒立制御ライブラリのパラメータをデカタイヤ用に変更 Makefile の変数 RUNNING_BODY_TIRE に normal(ev3way や ET ロボコン 2017 以前のタイヤの場合 ) または big(et ロボコン 2018 のタイヤの場合 ) を指定することで 適切なパラメータ値が設定される hr-tecs/workspace/sd/makefile hr-tecs/workspace/bluetooth/makefile 参考 #RUNNING_BODY_TIRE = normal RUNNING_BODY_TIRE = big 2018 年走行体 EV3way( 二輪倒立 ) について前編 - Qiita TOPPERS プロジェクト認定 16

ET ロボコン 2018 向けデカタイヤ対応 バックラッシュキャンセル処理の追加 タイヤが大きくなり バックラッシュの影響が増えた 今回 バックラッシュキャンセルを モータエンコーダの実測値からバックラッシュの半分の値を引いてから C 言語の倒立制御ライブラリを呼び出すことで実現した このため mruby のクラスメソッド Balancer.control の最後に引数 backlashhalf を追加した Balancer.control(forward, turn, gyro, gyro_offset, angle_l, angle_r, battery, backlashhalf) ノーマルタイヤの場合は引数 Backlashhalf を 0 にする この場合バックラッシュキャンセル処理自体を行わない サンプルプログラムでは Backlashhalf の値を 4 としているが 個体差などもあるため 調整する必要があるかもしれない 参考 2018 年走行体 EV3way( 二輪倒立 ) について後編 - Qiita TOPPERS プロジェクト認定 17

Makefile に追加した変数の値の確認 Makefile に追加した変数 RUNNING_BODY,RUNNING_BODY_TIRE の値を確認するには make にターゲット show-config を指定する hr-tecs/workspace/sd/makefile hr-tecs/workspace/bluetooth/makefile $ make show-config RUNNING_BODY=etrobo RUNNING_BODY_TIRE=big TOPPERS プロジェクト認定 18

二つの開発方法 SD アプリケーションのバイナリファイルもまとめて SD カードへコピーし, 起動する. ( 完成時はこちらを推奨 ) : アプリケーションも SD カードに組み込んでいるため, 安定する :PC と EV3 を USB ケーブルで接続すると SD カードを差したまま読み込み / 書き込みが可能になる Bluetooth mruby のバイトコードをホスト PC ( 開発マシン ) から Bluetooth を用いて転送し, 起動する. :SD カードの抜き差しが不要になり, 開発が効率的 :Bluetooth 機能のある PC や機器が必要 : 現在 同一バイト コードを連続して 2 回転送しないと バイトコードの実行が開始しない : バイトコード実行からバイトコード転送を繰り返して 正常に実行される場合もあるし 転送ができない場合 バイトコード実行の段階で電源断になる場合もある TOPPERS プロジェクト認定 19

SD TOPPERS プロジェクト認定 20

SD: コンパイル手順 EV3RT+TECS EV3 ドライバ Mruby スクリプトのビルド準備 SD カードへのコピー準備 デフォルトでは cygwin が使用されていることを想定の上で E ドライブにコピーされる ( SD カードを挿入した EV3 と PC を USB ケーブル接続すると SD カードを抜き差しせずにコピー出来る ) ドライブを変更するには サンプルコードの Makefile を編集 hr-tecs/workspace/sd/makefile Makefile 内を "SD_DIR" で検索して 変数に SD カードドライブを指定 SD カードドライブのドライブレターに合わせてください ここで指定したディレクトリに EV3 用イメージファイルがコピーされます ここの名前を SD カードのドライブ名に変更 TOPPERS プロジェクト認定 21

コンパイル手順 EV3RT+TECS EV3 ドライバ Mruby スクリプトのビルド パッケージを展開してディレクトリで $ cd hr-tecs/workspace/sd/ $ make tecs GNU Make が tecsgen を実行してくれます $ make depend ファイルの依存関係を抽出します ヘッダファイルなど 読み込まれるファイルを更新していなければ 実行する必要ありません $ make mrb make tecs, make depend は最初に 1 回実行すればよい Mruby スクリプト (*.rb) を修正したり Makefile で Mruby スクリプト名を変更した場合 make mrb を実行すると 確実に mrbc によるバイトコードコンパイルを行った後 全体のビルドを行う TOPPERS プロジェクト認定 22

コンパイル手順 :mruby バイトコード Makefile を編集する (hr-tecs/workspace/sd/makefile) 実行したいアプリケーションを一つ選ぶ TOPPERS プロジェクト認定 23

コンパイル手順 :1make tecs tecs.timestamp が出力されれば成功 TOPPERS プロジェクト認定 24

コンパイル手順 :2make depend TOPPERS プロジェクト認定 25

コンパイル手順 :3make mrb このような出力が出れば成功 下記のようなエラーになる場合は SD_DIR の指定が間違っているもしくは SD カードを認識していない ( ささってない ) TOPPERS プロジェクト認定 26

コンパイル手順 :uimage ビルドの確認 mkimage が生成され uimage がコピーされていれば ビルド成功です SD カードのルートディレクトリに uimage というファイルができます SD カードを EV3 本体に入れる 予めSDカードを挿入したEV3とPCを USBケーブル接続すると SDカード を抜き差しせずにコピーできる TOPPERS プロジェクト認定 27

アプリケーションの起動方法 SD カード入れた EV3 の電源を入れる 中央 (Enter) ボタンで電源オン OS 起動中 中央 (Enter) ボタンで mruby プログラム開始 アプリケーションの実行 LED が赤の間は OS の起動中 LED が緑になれば OS 起動完了 戻る (Back) ボタン長押しでスタート画面へ戻る (Back) ボタン 右ボタン 左ボタンの同時押しで電源断 TOPPERS プロジェクト認定 28

コンパイル手順 : サンプルプログラムの変更の場合 サンプルプログラムの変更後は make mrb だけで良い (make tecs, make depend は一度だけ ) サンプルプログラムの変更 make mrb TOPPERS プロジェクト認定 29

ev3way_sample ET ロボコン用のサンプル 倒立制御しながら ライントレースを行う タッチセンサ (Parameter.touch_sensor_port) カラーセンサ (Parameter.color_sensor_port ) ジャイロセンサ (Parameter.gyro_sensor_port ) 超音波センサ (Parameter.sonar_sensor_port ) しっぽモータ (Parameter.tail_motor_port ) 右モータ (Parameter.right_motor_port) 左モータ (Parameter.left_motor_port) TOPPERS プロジェクト認定 30

ev3way_sample 操作手順 電源を入れる 黒色のライン上にカラーセンサを移動 タッチセンサを押す : 黒色の値を取得 白色の上にカラーセンサを移動 タッチセンサを押す : 白色の値を取得 : しっぽを下ろす ライン上移動 タッチセンサを押す : ライントレーススタート TOPPERS プロジェクト認定 31

ev3way_sample.rb: 初期化 begin LCD.puts "ev3way_sample.rb" LCD.puts "--- mruby version ---" Speaker.volume = 1 forward = turn = 0 # 各オブジェクトを生成 初期化する @sonar = UltrasonicSensor.new(SONAR_SENSOR) @color = ColorSensor.new(COLOR_SENSOR) @color.reflect @touch = TouchSensor.new(TOUCH_SENSOR) @gyro = GyroSensor.new(GYRO_SENSOR) ひとつしかないもの ( ポート番号指定不要 ) は クラスメソッドとして直接呼び出す ポート番号を指定して初期化 ( インスタンス化 ) motor_l = Motor.new(LEFT_MOTOR) motor_r = Motor.new(RIGHT_MOTOR) @motor_t = Motor.new(TAIL_MOTOR) @motor_t.reset_count # 各オブジェクトを生成 初期化する LED.color = :orange TOPPERS プロジェクト認定 32

ev3way_sample.rb: 黒色 白色の取得 # 黒 白色のキャリブレーション black_value = color_calibration LCD.puts "black::#{black_value}" white_value = color_calibration LCD.puts "white::#{white_value}" ライントレースの基準値を計算 threshold = ((black_value + white_value) / 2).round # スタート待機 LCD.puts "Ready to start" def color_calibration(n=10) while true タッチセンサが押されるまで待つ カラーセンサ n 回取得し 平均値を取得 break if @touch.pressed? RTOS.delay(10) end col = 0 n.times { col += @color.reflect} col = (col / n).round Speaker.tone(:a4, 200) RTOS.delay(500) col end TOPPERS プロジェクト認定 33

ev3way_sample.rb: スタート準備 # スタート待機 LCD.puts "Ready to start" while true # 完全停止用角度に制御 しっぽの位置を指定された角度に保つ ( フィードバック制御 ) tail_control(tail_angle_stand_up) RTOS.delay(10) 目標値 現在の値 # タッチセンサが押されるまで待つ break if @touch.pressed? end # 走行モータエンコーダーリセット motor_l.reset_count motor_r.reset_count # ジャイロセンサリセット @gyro.reset # LED: 緑走行状態 LED.color = :green def tail_control(angle) pwm = ((angle - @motor_t.count) * P_GAIN).to_i if pwm > PWM_ABS_MAX pwm = PWM_ABS_MAX elsif pwm < -PWM_ABS_MAX pwm = -PWM_ABS_MAX end if pwm == 0 @motor_t.stop(true) else @motor_t.power = pwm end end TOPPERS プロジェクト認定 34

ev3way_sample.rb: ライントレース # main loop forward = turn = 0 while true start = RTOS.msec # バランス走行用角度に制御 tail_control(tail_angle_drive) # 障害物検知 if sonar_alert forward = turn = 0 else # Line trace end end 障害物まで一定の距離以下になると止まる forward = 30 turn = @color.reflect >= threshold? 20 : -20 サンプルでは 30 に固定 def sonar_alert @sonar_counter += 1 if @sonar_counter == 10 distance = @sonar.distance @sonar_alert_var = distance <= SONAR_ALERT_DISTANCE && distance >= 0 @sonar_counter = 0 end @sonar_alert_var end カラーセンサと閾値と比較しどちらかに曲がるここを変更すると 自前のライントレースが可能 TOPPERS プロジェクト認定 35

ev3way_sample.rb: 倒立制御 # main loop while true バランサの返り値が2つ # 倒立振子制御 APIを呼び出し 倒立走行するための # 左右モータ出力値を得る */ pwm_l, pwm_r = Balancer.control( forward, turn, @gyro.rate, GYRO_OFFSET, motor_l.count, motor_r.count, Battery.mV, BACKLASHHALF) if pwm_l == 0 motor_l.stop(true) else motor_l.power = pwm_l end if pwm_r == 0 motor_r.stop(true) else motor_r.power = pwm_r end RTOS.delay(wait) end C 言語で実装されたバランサを呼び出す ET ロボコン 2018 で採用されたデカタイヤを用いる場合は BACKLASHHALF=4 が適当であろう ただし 走行体毎に調整する必要もあるだろう ノーマルなタイヤの場合は 0 にする ループ内を 4 ミリ秒周期で実行 wait= 3( ミリ秒 ) で delay する (1 ミリ秒 + 3 ミリ秒 =4 ミリ秒 ) 現状 1 ミリ秒程度で処理完了 mruby でも十分制御可能 TOPPERS プロジェクト認定 36

エラーの対処方法 TOPPERS プロジェクト認定 37

mruby プログラム起動時に電源がオフになる場合 物理的にささっているポートとプログラムのポートを確認 例 : プログラムではポート A を使おうとして 物理的にはポート A になにも接続されていない場合 スタックサイズが 4096 バイトの場合にこの症状が発生し スタックサイズを増やすと発生しなくなるという報告がある サンプルプログラムではスタックサイズに余裕を持たせて 81920 バイトにしている TOPPERS プロジェクト認定 38

mruby プログラム実行時に電源がオフに出来ない 戻る (BACK) ボタンの長押し または戻る (BACK ) ボタン 左ボタン 右ボタンの同時長押しをしても 電源オフに出来ない場合があります この場合は EV3 充電式バッテリーまたは乾電池 ( 又は充電池 ) を外して電源断にします TOPPERS プロジェクト認定 39

パッケージ内のドキュメント doc/ev3rt_mruby_api_reference.pdf APIリファレンスマニュアル doc/mruby_on_ev3rt+tecs_buld.pdf 環境設定 doc/mruby_sample.pdf サンプルプログラムの説明 TOPPERS プロジェクト認定 40

問い合わせ先 リンク 質問などは下記の ML に users@toppers.jp EV3RT http://http://dev.toppers.jp/trac_user/ev3p f/wiki/whatsev3rt TOPPERS ET ロボメーリングリスト https://www.toppers.jp/etrobo.html#etrobo -ml TOPPERS プロジェクト認定 41

付録 TOPPERS プロジェクト認定 42

mruby gems 以下の特徴を持つ mruby のライブラリ C や mruby のソースコードを mruby VM から実行する関数として組込める 通常ビルド時に Web からライブラリを追加できる 配布パッケージでは mruby-print を追加済み EV3 シリアル出力をリンクし print, p, puts などを実現しています TOPPERS プロジェクト認定 43

シリアル通信 mruby の puts, print, p は シリアル通信から出力されます シリアルケーブルは EV3 本体の Port1 を使用します ( シリアルに使用するため 現在 Port1 にセンサを取り付けできない制約があります ) コンピュータへの接続には USB-Serial 変換ケーブルおよび EV3-Serial 変換コネクタが必要となります EV3RT の機能として シリアルケーブル接続によるシリアル通信と Bluetooth 接続によるシリアル通信を切り替え可能です (/ev3rt/etc/rc.local.ini) 以降のシリアル通信についての記述は ( 物理的な接続を除いて )Bluetooth 接続によるシリアル通信についても当てはまります TOPPERS プロジェクト認定 44

シリアル通信 動作確認では以下のシリアルケーブルおよびコネクタを使用しました OLIMEX USB シリアル変換ケーブル (3 線式 ) 2015 年 6 月現在 Windows 8 で使用ができません ( ドライバがありません ) Breadboard Connector Kit for NXT(BCK01) TOPPERS プロジェクト認定 45

シリアル通信 上記シリアルケーブルおよび Connector Kit を使用する場合 それぞれ以下が対応します 青 (GND) - GRND (2 or 3) 緑 (TX) - SCL (5) 赤 (RX) - SDA (6) TOPPERS プロジェクト認定 46

/ev3rt/etc/rc.conf.ini の設定 EV3RT の機能として 設定ファイルで SD カードの /ev3rt/etc/rc.conf.ini で動作ログの出力先 ( デバッグポート ) を指定できる [Debug] DefaultPort=UART #DefaultPort=BT #DefaultPort=LCD UART -> シリアル通信 BT -> Bluetooth 接続でシリアル通信 LCD -> LCD に出力 (LCD には LCD クラスの表示メソッド以外にも puts, print, p メソッドでも出力される ) TOPPERS プロジェクト認定 47

Tera Term との接続 Tera Term の設定 ポート :USB のシリアルポート ボーレート :115200 PC と EV3 をシリアルで接続後 EV3 の真ん中のボタンを押して 起動 起動確認 起動時に uimage を直接読み込んで TOPPERS/HRP2 が自動的に起動します TOPPERS プロジェクト認定 48