狠狠撸
Submit Search
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
?
13 likes
?
7,294 views
Teng Tokoro
Follow
2019/1/19に开催したマイクロマウスのための惭础罢尝础叠/厂颈尘耻濒颈苍办讲座の第1回资料です.惭础罢尝础叠の基本操作と,ログデータ可视化のためのプロットを主に扱っています.
Read less
Read more
1 of 66
Download now
More Related Content
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
1.
マイクロマウスのための MATLAB/Simulink講座 (1) MATLAB入門 Teng Tokoro (@tokoro10g)
2.
この講習会について MATLAB/Simulink を使用して 経験と勘 →
データと解析 への移行を目指します. シミュレーションやデータの可視化を使いながら,楽しく 学びましょう.
3.
講習会の構成 全5回を予定 1) MATLAB入門 (1/19) 2)
Simulink入門 (3/16) 3) 信号処理?システム同定(仮) (5月) 4) ログデータ可視化?解析(仮) (7月) 5) Simulinkからのコード生成(仮) (9月)
4.
アジェンダ 今回の内容は以下の3つです. 1. 惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB/Simulinkがどのようにマイクロ マウスの製作に役立つか説明します. 2. コマンドウィンドウで使う まずは電卓としてMATLABを使って みましょう. 3.
スクリプト?関数を作る 本格的なプログラミングを行うための 基礎を学びます.
5.
MATLAB/Simulinkが世界中の およそ何人の技術者?研究者 に使われているか,知ってい ますか?
6.
A. 約300万人 世界中180カ国以上,およそ9万の機関?企業で利用されている * https://www.mathworks.com/company/aboutus.html
7.
MATLABを 使えると… いいことがある(かも)
8.
惭础罢尝础叠/厂颈尘耻濒颈苍办とは?
9.
惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB 科学?技術計算に特化したプログラミング 言語?開発環境. 特徴 ? 行列?ベクトル計算を標準装備 ? 習得しやすい言語仕様 ?
豊富な標準関数?ツールボックスで 本質的でない実装の手間を省ける Simulink ブロック線図をベースにしたシミュレー ションソフト. 特徴 ? ブロックをつないでプログラミング ? シミュレーションと実装を一括で開発 ? C/C++のソースコードをブロック線図 から生成できる(コード生成)
10.
マイクロマウスへの MATLABの使用例 ① 走行ログの可視化 MATLABならデータのプロット や見た目の変更が楽々 >> plot(x,
y); 約80行
11.
マイクロマウスへの MATLABの使用例 ② 軌道生成 CやC++では面倒な配列の取り 回し(変形?反転など)が楽々 >> B
= reshape(A, 3, 4); >> B = fliplr(A); 約30行
12.
マイクロマウスへの MATLABの使用例 ③ 迷路データの取り込み 画像処理などのツールボックス が充実, 応用が簡単 >>
IM = imread('1.jpg'); 約60行 https://gist.github.com/tokoro10g/57d88b5aafd 8ab0e62bf56cf74e99373
13.
マイクロマウスへの MATLABの使用例 ④ マウスタイマー(GUI) GUIの作成も, App
Designerを 使えば簡単! シリアル通信でデバイスとの連 携も可能! >> appdesigner >> s = serial('COM3') @Ryokeri14
14.
マイクロマウスへの Simulinkの使用例 ① モータのシミュレーション ブロックを組み合わせて微分方程 式を表現 物理パラメータを代入してシミュ レーション
15.
マイクロマウスへの Simulinkの使用例 ② 壁制御のシミュレーション どのような制 御
則を実 装すれば よいのか事前にシミュレーション できる!
16.
惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB 科学?技術計算に特化したプログラミング 言語?開発環境. 特徴 ? 行列?ベクトル計算を標準装備 ? 習得しやすい言語仕様 ?
豊富な標準関数?ツールボックスで 本質的でない実装の手間を省ける Simulink ブロック線図をベースにしたシミュレー ションソフト. 特徴 ? ブロックをつないでプログラミング ? シミュレーションと実装を一括で開発 ? C/C++のソースコードをブロック線図 から生成できる(コード生成) ↑ 今日はこっち
17.
アジェンダ 今回の内容は以下の3つです. 1. 惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB/Simulinkがどのようにマイクロ マウスの製作に役立つか説明します. 2. コマンドウィンドウで使う まずは電卓としてMATLABを使って みましょう. 3.
スクリプト?関数を作る 本格的なプログラミングを行うための 基礎を学びます.
18.
MATLABをコマンドウィンドウで使う MATLABを起動してください!
19.
MATLABを起動 ※ 初回起動時はアクティベーションを求められ ることがあります. ※ Windowsの場合,
初回のみ管理者権限が必要 なこともあります. ※ ブラウザで動くオンライン版もあります… https://matlab.mathworks.com/
20.
エクスプローラ コマンドウィンドウ ワークスペース ファイルを操作 できる.
OS付属の エクスプローラ とほぼ同じ. 対話的にMATLABコマンドを入力して実行できる. 動作チェックや, 簡易ヘルプの確認は, ここで行う と便利. 作成した変数のリ ストが表示され る.
21.
関数電卓として 使ってみる コマンドウィンドウに数式を入力 して, 電卓として使ってみよう
22.
MATLABで使用する演算子 基本はほとんどC言語と同様. ● 四則演算?累乗 + -
* / ^ ● 代入 = ● 比較?論理演算 < > == ~= <= >= && || ~ Tip MATLABの変数はデフォ ルトではdouble型にな る. 別の型で定義したいとき には以下のようにする. >> a = uint8(3)
23.
MATLABで使用する数学関数 基本はほとんどC言語と同様. ● 三角関数 sin cos
sind cosd atan2 pi ... ● 指数?対数 exp log log10 log2 ● 複素数 (MATLABでは標準装備!!) real imag abs angle i j Tip 関数の使い方は helpコマ ンド や docコマンド で 確認できる. 例) >> help sind >> doc cosd
24.
ベクトル?行列 演算を行う ここからが本番です
25.
ベクトル?行列の書き方 ● 行ベクトル r =
[1 2 3] または r = [1, 2, 3] ● 列ベクトル c = [1; 2; 3] ● 行列 M = [1 2 3; 4 5 6; 7 8 9] Tip スペース or カンマで 列方向(横方向)への入力, セミコロンで改行を意味 する.
26.
特別なベクトル?行列 ● 範囲ベクトル 1:10 または
1:2:10 または linspace関数 ● 単位行列 eye(3) ● ゼロ行列 zeros(3) または zeros(4,2) ● 1で埋めた行列 ones(3) または ones(4,2) ● 乱数行列 rand(3) または rand(4,2) Tip カッコ内は行列の大きさ 魔法陣行列やハンケル行 列といった特殊な行列も 用意されている. https://jp.mathworks. com/help/matlab/cons tants-and-test-matric es.html
27.
(例) 行列とベクトルの乗算
28.
ベクトル?行列特有の演算子 ● 要素ごとの乗算?除算?累乗 .* ./
.^ ● 転置?共役転置 .' ' ● 逆行列とベクトルの積 ( , ) Ab c/A ● 要素ごとの論理演算 & | Tip 逆行列自体を計算したい ときは, inv関数を使う. 例) >> B = inv(A);
29.
(例) 連立1次方程式の解 Tip 行末にセミコロンをつけ ると, 実行結果を非表示 にできる.
30.
行列の要素へのアクセス 取り出しも代入もできます C言語の配列でいう a[0] は,
MATLABでは a(1) です ● 行列の場合は, A(1,2) とすることで を指せる ● 範囲を取り出したいときは範囲ベクトルを使う A(1:3, :) Aの1~3行目,全列(:)を取り出し 行番号 列番号 Tip 範囲ベクトルでなくても OK. 指定した順番どおり に取り出し/代入できる. 例) >> A([1 3], [1 4])
31.
行列の結合?加工 Tip ブロック行列の感覚で, 行列やベクトルを結合 できる Tip clearコマンドで定義した 変数を全てクリアできる 行列の加工に使う関数の例 ● repmat 行列を繰り返したものを作る ● fliplr,
flipud 左右?上下反転 ● sort 要素のソート
32.
Tips [Coffee Break] 英語を読める方は,
UI とMathWorksのウェ ブサイトを英語設定に した方がわかりやすい かも. 要素ごとの演算をうま く利用することで高速 なコードを書ける. http://blog.tokor.org/2017/12/17/rogy-Adv ent-Calendar-2017-%E3%80%8C%E3%81%8 6%E3%82%8F%E3%81%A3%E2%80%A6%E3 %82%8F%E3%81%9F%E3%81%97%E3%81% AEMATLAB%E3%82%B3%E3%83%BC%E3%83 %89%E3%80%81%E9%81%85%E3%81%99% E3%81%8E%E2%80%A6%EF%BC%9F%E3%80 %8D/ コーディング用フォン トをインストールする と読みやすくなる. おすすめ: - Ricty Discord - Cica
33.
データをグラフに プロットする ほかの言語で数十行かかる処理が 1行で済みます
34.
データのプロット 例) >> x =
0:0.01:pi*2; >> y = sin(x); >> plot(x, y); Tip 基本はplotコマンド! 使い方が複雑なのでヘル プを読もう "matlab plot"で ググると出てくる Tip ドキュメンテーションは ググるかdocコマンドで 表示する
35.
ドキュメンテーションの読み方 取りうる引数の パターン それぞれの場合に 対する説明
36.
ドキュメンテーションの読み方 この引数について詳しく知りたい??? クリック
37.
ドキュメンテーションの読み方 詳細な情報(書式?型?サイズ など)が確認できる! 例) >> x =
0:0.01:pi*2; >> y = sin(x); >> plot(x, y, 'r--');
38.
プロットの見た目の編集 コマンドを使用する場合 ● グリッド grid on
grid off ● 軸の範囲?ラベル?目盛り xlim xlabel xticks ylim ... ● 凡例 legend ● その他のプロパティの設定 set get Tip 関連する関数のリストは このページからカテゴリ を選択すると見られる https://mathworks.co m/help/matlab/format ting-and-annotation.h tml
39.
プロットの見た目の編集 プロパティエディタを使用する場合 コマンドを打つのは正直面倒なので???
40.
プロットの見た目の再利用(コード生成) 関数として保存できる
41.
MATLAB Plot Gallery 各種プロット関数の使用例とソー スコードが公開されている https://mathworks.com/product s/matlab/plot-gallery.html
42.
アジェンダ 今回の内容は以下の3つです. 1. 惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB/Simulinkがどのようにマイクロ マウスの製作に役立つか説明します. 2. コマンドウィンドウで使う まずは電卓としてMATLABを使って みましょう. 3.
スクリプト?関数を作る 本格的なプログラミングを行うための 基礎を学びます.
43.
スクリプトを 作成する 「ホーム」タブの 「新規スクリプト」をクリック
44.
スクリプトでよく使用するコマンド 初期化系のコマンドをファイル冒頭に書くことを推奨 ● ワークスペース変数を消去する clear ● プロットをすべて閉じる close
all ● コマンドウィンドウをクリアする clc Tip MATLABでは,スクリプ トの実行ごとに変数は初 期化されない. 基本的にはclearコマンド で変数を消去してから処 理を開始することを推奨 する.
45.
(例) プロット さきほどのプロット処理をスクリプトに記述してみる Tip 実行ボタンの代わりにF5 を押しても実行できる. 実行を中断するときは ,Ctrl+C. コード片を選択してF9を 押すと,選択部分を実行 できる.
46.
if文 Tip any, all 関数を使うと, ベクトルの要素の any:
少なくとも1つ all: すべて が条件を満たしているか を判定できる. if 条件式 ... elseif 条件式 ... else ... end MATLABでは括弧の代わりにendを使う
47.
for文 Tip 範囲ベクトル以外にも, 任意のベクトルを指定で きる. PHPやJavaScriptにある foreachに近い感じ. for カウンタ変数 =
ベクトル ... end C言語等と流儀が大きく異なる n = 0; for k = 1:5 n = n + k^2; end 例)
48.
その他の制御構文 あとは大体C言語等と同じ ● while ● switch
~ case ● try ~ catch ● break, continue, return
49.
実践してみる ログの可視化を例にスクリプトを 作成してみよう 今回の目標 ● x, y座標の時系列をそれぞれプロット ●
xyプロット ● 目標値と推定値のxyプロットの比較
50.
Step 1. データの読み込み loadコマンドを使用してデータ を読み込む データのダウンロード: https://drive.google.com/file/ d/12jh09-lfLfoem2iLbqcIjP3T 8QDzn8-k/view?usp=sharing ※Xiphosura開発時の実際のデータ
51.
Step 1. データの読み込み x,
y, θ 目標値 x, y, θ 推定値 時間
52.
Step 2. 必要な部分の取り出し?加工 (6~8行目) 各列を取り出して変数に代入 データはmm単位で10倍の値が保 存されているため,10で割って mmに直す (11行目) x_refを試しにプロットしてみる
53.
Step 2. 必要な部分の取り出し?加工 プロットを2枚出したい場合 figure(1) Figure
1を表示(なければ作成)
54.
Step 3. xyプロットの作成 (11行目) x_ref,
y_ref を使ってxyプロッ ト (12行目) 数値の縦横比を均等にする
55.
Step 4. プロットを追加する (13行目) 現在のグラフを保持 (これを実行しないと上書きされてしまう) (14行目) x_est,
y_estについてもxyプロッ トを作成 赤い線で新しいプロットが追加 される
56.
Step 4. 見た目をいじる プロパティエディタで好きなだけ いじる ファイル→コード生成をクリック createfigure.m
として保存
57.
Step 4. 見た目をいじる 生成したcreatefigure.mを使用し てプロットを作成するように, コードを変更する
58.
関数を作成する MATLABでは,ファイルとして 関数を定義する
59.
関数の書式 出力引数 入力引数関数名 出力引数がない例
60.
アジェンダ 今回の内容は以下の3つです. 1. 惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB/Simulinkがどのようにマイクロ マウスの製作に役立つか説明します. 2. コマンドウィンドウで使う まずは電卓としてMATLABを使って みましょう. 3.
スクリプト?関数を作る 本格的なプログラミングを行うための 基礎を学びます.
61.
オンライン リソース 自学自習に役立つウェブサイトを 紹介
62.
MATLAB Onramp MATLABの基礎をブラウザ上で 学べるオンラインコース 約2~3時間で完了できる (こちらで自習するとより身につくと 思います) https://matlabacademy.math works.com/jp
63.
MATLAB Cody MATLABを使ったオンラインの プログラミング問題集. 簡単な入出力から高度なアルゴ リズムまで,様々な問題が揃っ ている. 日本語の問題もあり. https://www.mathworks.com /matlabcentral/cody
64.
次回予告 Simulink入門 3/16(土)
65.
惭础罢尝础叠/厂颈尘耻濒颈苍办とは? MATLAB 科学?技術計算に特化したプログラミング 言語?開発環境. 特徴 ? 行列?ベクトル計算を標準装備 ? 習得しやすい言語仕様 ?
豊富な標準関数?ツールボックスで 本質的でない実装の手間を省ける Simulink ブロック線図をベースにしたシミュレー ションソフト. 特徴 ? ブロックをつないでプログラミング ? シミュレーションと実装を一括で開発 ? C/C++のソースコードをブロック線図 から生成できる(コード生成)
66.
マイクロマウスへの Simulinkの使用例 壁制御のシミュレーションを 題材に,Simulinkの基礎を 解説します
Download