nacarの独り言

マイクロマウス作ってるらしいです

近況報告

お久しぶりです。

 

とあるから「最近ブログ更新してる人すくなくね?」と指摘されたので思い出したかのように書いていきます。

 

現段階でなにも書くこと決まってないし、ぱっとかいて、ぱっと投稿しするので、内容が薄いのと、読みにくいのはご容赦くださいませ。

 

まず初めに、マウス合宿、Miceプチ大会と参加していただいた方、お手伝いいただいた方ありがとうございました!!

 

次に最近の進捗についてなんですが・・・

まあ、びっくりするくらい何もないですΣ(゚Д゚)

プチ大会で動いてたらいいな~とか幻想だったらしいです。

 

そんな新作のBIJELAさんなんですが、すべての機能の動作確認は終わり、走行系の関数を作成してます。

が、台形加速の理論値計算に4日も5日もかけてるポンコツ具合ですよ、ほんとに...

 

ここで苦しんだ理由の一つにコンパイラの最適化があるらしいです。

フラグが立つまでwhile文で待機しようとしてたんですけど、この中にデバッグ用に「LEDを光らせる」を記述してると動くのに、これをコメントアウトすると動かなくなったり、この動作を関数化するとダメだったり・・・

なのでver4.2というとっても古いe2studioのバージョンの更新をするとともに、最適化のレベルを1つ下げて最弱モードにしました。

これによって意図する動作になりました。

よくよく考えてみると去年のJASALMAで発生した小さなバグ(?)もこういったところが原因だったりするのかなと、思いました。(まあ、知らんけど)

 

他には先輩に話を聞きながら、C言語のポインタとか構造体とか勉強してます。

いや、これが難しい、

今までゴリゴリのパワープレイばっかりできれいなコードを書いてこなかったので今回は美しくかけたらいいな~と思ってます。(どうせ後々汚くなるんだけど、最初くらいは・・・ね?)

 

あ、そうだ、忘れてました。染色は用法・容量を守って正しく使いましょう。

さもなくば思ってた色にならないでしょう

例えばネイビーが黒になったりね

 

マウスの話はこのくらいしか書くことないかな~?

早く三角加速導入して、モータ回していきたいなと思いますよ、ほんとに

 

以下雑談

 

  1. 知り合いにブログ書いててめっちゃ面白く文章書く人がいて、文才だな~と思ってるんですけど、すごく憧れます。どうやったらあんなに面白く書けるのか...
  2. 最近すごくバカになってきててやばい!なんかこう、病んでるとかじゃないんですけど、単純に「頭悪いな」と思うことが多くて、「もっとできると思ってたんだけどな~」と感じる日々です。もっと頑張らねば!
  3. 夏休み、特にロックアウト期間どうしようか。迷路持ってかいるのはしんどいし、誰か金町済みの友達の家に押しかけようかしら
  4. それに伴って(?)Lipoの充電器欲しい。買うか~?
  5. 新入生の進捗に殺されてます。去年の自分より全然はやくてすごいな~という気持ち
  6. やっと前期のテスト終わったのに、もうすぐテスト・・・テストが8月初めで終わったらロックアウト期間、その後10日でパシフィコ横浜...は~、きつい
  7. みんな頑張っていこうな、ブログ期待してます!

以上!

 

I

 

 

初心者向け・最低限TeXが使えるようになる話

久しぶりのブログ更新です。

 

今日はマウス界隈向けではなく、むしろ学部の友人向けの記事です。

 

僕が所属している学科では2年時に訪れる謎の手書き実験レポート地獄を経て、3年時ではパソコンを使ったレポート作成を行います。

 

そんな中、多くの人はWordを使っていると思います。

いいですよね、Word。使い慣れてるしね。

 

ただ美しい文書作れるらしいしかっこつけてTeX使ってみませんか?ってお話です。

せっかく理系大学生だし触ってみてもいいのでは、と思います。

 

はじめての方へ - TeX WikiTeXはいいぞ~って話が書いてあるのでTeXって何?って方は読んでみるといいと思います。

 

個人的には図番号とか表番号を自分で管理しなくていいことと、図を”いい感じに適当に”張り付けてくれるのがメリットだと思ってます。

それとなんだかんだ慣れると数式を入力するのがWordより楽です。(個人的には)

 

では導入方法と使い方を書いていきます。

※書いてる本人が最低限TeX使えてるだけなので間違いやおかしいところが多々あると思いますが、優しいく広い心で見守って頂ければと思います。(特に強い方々は)

こんな初心者のブログ見るよりはTeX Wikiiを見たほうが有意義な気がするのでそれは伝えておきます

今回はTeXstudioをエディタとしてpLaTeX(?)を使った方法について書いていきます。

  • TeX Liveのダウンロード

 このサイトよりTeX Liveのダウンロードをしましょう。

2時間ほど時間がかかるので暇なときにやっておくといいと思います。

Tex LiveをダウンロードするとTeXWorksというエディタが標準で入っています。

これでもTeXは使えますのでTeXstudioインストールしたくないよ、って方はこちらを使いましょう。(←問題なく使えるけどTeXstudioの方が個人的にはオススメ)

  • TeXstudioをインストールと設定

ここを参考にTeXstudioのインストールを行います。

インストールが終わったら起動し、上部のバーの中にあるオプションから

  オプション→TeXstudioの設定

を開き、設定を行っていきます。

設定はここを参考に行います。

自分はコマンドの設定の一番上のLaTeXの部分は

platex.exe -synctex=1 -interaction=nonstopmode %.tex

にしています。

多分これをやらないと以下で提示する文章のコンパイルができません。

これ以外はTeXWiki通りです。

 

マストで設定しないといけないのが「コマンド」と「ビルド」、お好みで「一般」と「エディタ」でしょうか。他のはよくわからんす。

設定するとこんな感じ。

f:id:kt33-JASALMA:20180516143826j:plain

f:id:kt33-JASALMA:20180516143837j:plain

f:id:kt33-JASALMA:20180516143845j:plain

簡単ですね!

これで導入と設定は終わりです!

 

ここからは書き方について説明していきます。

といってもほとんどおまじない的な感じで書くので頑張って解読してください

 

 書き方とかは全部TeXで書いてあります。

これを上記の設定をしたTeXstudioにコピペしてコンパイルしてもらえば何となく理解して使えるようになると思います。

 

 

\documentclass[11pt,a4paper]{jsarticle}

\usepackage{booktabs}
\usepackage{multirow}
\usepackage[dvipdfmx]{graphicx}
\usepackage{float}
\usepackage{url}
\usepackage{amsmath}
\usepackage{array}
\usepackage{plistings}
\usepackage[top=35truemm,bottom=30truemm,left=30truemm,right=30truemm]{geometry}

 

\begin{document}
\section{目的}
ここに目的を書くよ

\section{原理}
原理はこんな感じです。
改行しても改行されませんね。こんな風にたくさん書いたり、変なところで改行
しても出力は問題
なく行われているのがわかると思います。

こんな風に1行スペースを開けると改行されて先頭が1文字分下がります。
\section{実験器具}
\begin{itemize}
\item 実験器具1
\item はんだごて
\item こんな感じです
\end{itemize}

\section{方法}
\subsection{画像の貼り方}
ここでは画像の貼り方の説明します。
画像ファイル(ここではtest.JPG)は、今書いてるTeXファイルと同じフォルダ内に置かないとエラーになるので気を付けてください。
\begin{figure}[htbp]
\centering
\includegraphics[width=13cm]{test.JPG}
\caption{Texstudio}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=5cm]{test.JPG}
\caption{名前を書くよ}
\end{figure}
画僧の貼り方はいろいろなやり方があるみたいですが自分はこれしか知りません。
captionのところに名前を付けてあげれば図1、とかは勝手に番号振ってくれます。
widthの値を変えると大きさが変わります。
[htpb]はおまじないでいいと思います。気になる方は調べてみてください。

\subsection{数式の書き方}
書くの遅くね?って気がするけど数式系のお話です。
文章のなかで数式等を書く場合にはドルマークでサンドウィッチします。
例えば$y=ax+b$みたいな感じですね。何も書かないとy=ax+bみないな感じ。
文字のフォントが違うのがわかるでしょう。
そんな感じで行を変えて真ん中に書くのはこれ。TeXstudioだとcnrl+shift+Nで出てきます。
\begin{equation}\label{key}
y=ax+b
\end{equation}
番号をつけない数式はこれ
\[
y=ax+b
\]
その他$\sum$とか$\lim$とか$\int_{t=0}^{t=\infty}$とか$\pi$とかは各々必要な時に調べてみてください。
\section{結果}
次に表の書き方についてまとめます。
以下のような書き方で表が作成できます。
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
\centering
\caption{ここに名前を書くよ}
\begin{tabular}{ccc}
\toprule
\multicolumn{1}{l}{時間} & \multicolumn{1}{l}{温度} & \multicolumn{1}{l}{制御量} \\
\midrule
0 & 23 & \\
0.5 & 23 & 3.2 \\
1 & 23 & 12.4 \\
1.5 & 23 & 21.8 \\
2 & 23 & 30.5 \\
2.5 & 25 & 36.1 \\
3 & 29 & 37.3 \\
3.5 & 35 & 34.2 \\
4 & 42 & 29.2 \\
4.5 & 46 & 26.1 \\
5 & 48 & 25.4 \\
\bottomrule
\end{tabular}%
\label{tab:addlabel}%
\end{table}%
ただ、これを書くのはめんどくさいですよね?

なのでみんな大好きExcelを使います。
そこで以下のサイトを参考に、アドインをExcelに追加します。

\url{http://mac-physics.ldblog.jp/archives/51933868.html}

Excelで数字や文字を記入し、罫線等の設定を行った後、導入したアドインを使うと簡単に上のようなものを作成してくれます。
これはすごい便利なので是非活用しよう!。

\section{考察}
もう特に書くことないかな


\begin{thebibliography}{99}
\item 誰か著,TeXはいいぞ
\item \url{https://texwiki.texjp.org/},TeX Wiki
\end{thebibliography}

\end{document}

f:id:kt33-JASALMA:20180517101407j:plain

f:id:kt33-JASALMA:20180517101431j:plain

f:id:kt33-JASALMA:20180517101441j:plain

 

最後に少しだけ説明して終わります。

1行目は"jsarticle"というドキュメントクラスを使うよ。文字の大きさは11ptですよ。っていうおまじないみたいなもんです。

 

次のuserpackageは××って機能を使います、って宣言みたいなものです。

例えばURLをキレイに貼れるようにしたり、プログラム部分を枠で囲んでみたり、余白を調整してみたり・・・

 

文章を書く時には

   \begin{document}

   ここが出力される部分

   \end{document}

 こんな感じです。

この外の領域に書くと出力されない(エラーになる?)ので気を付けましょう。

 

その他は何とかわかると思いますので各々頑張ってください。

 

 何かわからないことやこんな機能無いの?と思ったらググってみると色々出てくると思いますので参考にしてみてください。

 

自分で読んでても読みにくい文章をここまで読んでいただきありがとうございました。

では。

 

※注意

上記の方法だと”参考文献”に番号が振られません。

 

 

 

 

Slack導入のすゝめ

お久しぶりです。

 

今日はMiceで導入しているチャットツール”Slack”について書いていこうと思います。

 

以下話すのは通知設定して!、って話だけなので読みにくい文章読みたくないとか、時間ないぜ、って人はここ読んでもらって通知設定してもらえればあとは読まなくても問題ないです。

 

※今回の記事は(今回に限らずですが)Miceの部長ではなく、一個人としての見解です※

※この記事は大半が部員向けに書いています※

 

Slackとはグループチャット、1対1のメッセージング(DM)、等の機能を有するチームコミュニケーションツールです。(By Wikipedia)

ちなみに”"Searchable Log of All Conversation and Knowledge”の頭文字らしいです。

 

そして我がMiceでは去年よりメール・LINEからSlackへの移行を行いました。

 

…が、部員のアクティブ率が悪いです。(あくまでも個人的な感想)

f:id:kt33-JASALMA:20180329111545p:plain

これは現在催事長がeventチャンネルに投げている食事会に関する話へのレスポンスでもわかることです。

これがこの記事を書くきっかけになりました。

 

というわけで今回はSlackのアクティブ率が上がればいいな、と思いながら、いくつか関連することを書いていきます。

 

  • 通知設定しよう

とりあえずこれ!!!

通知設定してない人意外と多いのではないでしょうか?(個人的感想)

「いやでも難しいんでしょ~」と思ってるそこのあなた!!

全然難しくないんです!

ということで通知設定の仕方をまとめていきます。

ここではAndroidの画面で説明していますがiOSでもそこまで変わらないです。

 

  • 右上の:みたいなやつをタップ(開くチャンネルやトークはどこでも問題ないです)

f:id:kt33-JASALMA:20180329121628p:plain

 

  • 設定をタップ

f:id:kt33-JASALMA:20180329121928p:plain

 

  • 通知・設定をタップ

f:id:kt33-JASALMA:20180329121750p:plain

 

  • モバイル通知のタイミングを変更

f:id:kt33-JASALMA:20180329121735p:plain

 ここでは画像を用いた紹介を省略しますがWindows(アプリ版)で通知の設定を行う場合には

  1. 左上のワークスペース名をタップ
  2. 環境設定
  3. 通知

から設定が変更できます。

 

さあ、皆さん、通知の設定できましたか?

え?やってない・・・?

今すぐやってどうぞ(*^-^*)

 

  • ミュートの設定

通知の設定してくれてありがとうございます!

となると困るのがopenthedoorの通知ですよね。

部室開いたメーリスの通知がじゃまだ、という理由もあってSlackに移行したのに、Slackでもopenthedoorの通知が頻繁に来るのでは意味がありません。

そこでチャンネルごとのミュートの設定を行いましょう。

今度はiOSのアプリで行います。(これもAndroidでもそんなに差はないです)

 

  • ミュートしたいチャンネルを開いてチャンネル名をタップ

f:id:kt33-JASALMA:20180329130245j:plain

 

  • 通知をタップ

f:id:kt33-JASALMA:20180329130329p:plain

 

  • チャンネル全体をミュート

f:id:kt33-JASALMA:20180329130445p:plain

 

  • 完了

f:id:kt33-JASALMA:20180329130537p:plain

 

上記の手続きでチャンネルごとのミュートが設定できます。

(できる限りミュートはopenthedoorだけにとどめておいていただければ・・・)

(できる限り@channelの無視とかはしないでいただければ・・・)

 

あとは携帯では入ってるけどパソコンにSlackが入っていない人なんかはぜひ入れましょう(半ば脅迫)

 

以上、通知とミュートの設定についてでした。

わからないことがあれば自分でもほかのわかる人にでも質問してください。

 

 

最後に

  • Slackでできる便利なこと

折角Slack使っているのですから便利にできるものはどんどん導入していきましょう。

と、言っても自分はあまり多くは知らないし詳しくはないので少しだけ...

「こんなのありますよ!」「これ入れると便利ですよ!」みたいなのがあれば是非教えてください。

 

これは自分も使っているのですがGoogleカレンダーを連携させておくと予定が追加されたとき、予定の前、1週間の予定などを自動で通知してくれます。(いずれも設定次第で変更可)

任意のカレンダーから任意のチャンネルに投稿することができます。

※個人的な予定を連携させる場合などは他の人に見えないように自分だけに投稿されるようにしましょう。

詳しくはこちら

 

  • 届いたメールをSlackに自動転送する

これもすごく便利です。

普段あまりチェックしないアドレスに重要なメールが届いたりすること、よくありますよね?(←ほんまか?)

そんなあなたはSlack通知するための転送先アドレスにメールが転送されるように設定するだけでメールの確認がSlackでできるようになります。

詳しくはこちら

 

他にもみんな大好きTwitterと連携させたりもできるみたいです。

他のメンバーの迷惑にならない範囲でどんどんカスタマイズさせていきましょう!!

 

ferret-plus.com

ではでは(^.^)/~~~

B

 

P.S.

完全に部内向け&個人的な考えなんだけどもっとrandomチャンネルを雑談みたいな感じで動かしていけると楽しいのかなと思いました。

逆にgeneralで雑談とか最重要でない話はしないようにしないとですね・・・

この辺は次の部会で話してもいいかもしれない。

 

それとお食事会行く気があるけどスタンプ押してないそこのあなた、eventチャンネルに投稿されているのでスタンプ押してください。

 

P.S.2

新作の基板をElecrowに発注しました。

それに伴い名前も決定しましたが、まだ公開はしません。

(去年走っていた某先輩のマウスの名前とそっくりなのは承知しているのですが許してください・・・)

 

P.S.3

よりもい、終わってしまってなんとも言えない気持ちです。

最高でした。

まだ見てない方は是非。

 

P.S.4

他大の代表の方と話して実感わいた節もあるのですがもうすぐ新歓ですよ・・・

新入生入ってくれるのか、ちゃんと教えて行けるのか不安ですが頑張っていきましょう。

新作の予定

お久しぶりです。

 

今までJASALMAのプログラム解読を行ってきましたが今回は新作のお話をしていきたいと思います。

(といいつつ皆様からのダメ出し・アドバイスが欲しい、というのも本心です)

 

というわけで回路や配線図など気になる点があればコメントやTwitterで教えてほしい所存です。

よろしくお願いします!!

 

まず機体名称から紹介します。

  1. BALTA
  2. BIJELA
  3. BIANCO

現状上記の3つが候補となっております。

(これ以外になる可能性もあり)

 

次に回路図ドーン!(追記:↓いくつか間違ってる可能性ありますが、少なくとも書き込み間違ってます)

f:id:kt33-JASALMA:20180320005740p:plain

f:id:kt33-JASALMA:20180320005859p:plain

f:id:kt33-JASALMA:20180320005910p:plain

f:id:kt33-JASALMA:20180320005923p:plain

f:id:kt33-JASALMA:20180320005934p:plain

 

その次に配線図ドーン!

  • GND無し

f:id:kt33-JASALMA:20180320010057p:plain

f:id:kt33-JASALMA:20180320010110p:plain

f:id:kt33-JASALMA:20180320010118p:plain

  • GND有

    f:id:kt33-JASALMA:20180320010215p:plain

    f:id:kt33-JASALMA:20180320010228p:plain

    f:id:kt33-JASALMA:20180320010242p:plain

  • GNDピックアップ

f:id:kt33-JASALMA:20180320010319p:plain

 

こう見るとGNDがペタでつながってないんですよね・・・

なんともやばい気がしないでもないんですけどどうなんでしょう、強い方々・・・

 

まだ初の配線率100%なのでやり直さなきゃなのかな~とは思ってるんですが

 

次に機体概形

f:id:kt33-JASALMA:20180320011011p:plain

色は適当です。

基板色は白にしようかな~と思っています。

がそれも未定。

 

最後にここまでで苦しんだことを

  • モーターが高い
  • 足回り設計難すぎ
  • センサー置く位置いいのかこれで?
  • 吸引ファンの機構がわかんない
  • 部品選定難しい
  • 部品集め難しい

 

ちゃんと全日本に出れるのか、って不安はあるのですが頑張って作り上げたい所存です。

 

ではでは(^.^)/~~~

.

 

P.S.

改めてですが「ここおかしいやろ!」みたいな批判お待ちしております。

それと強いハーフマウサーの先輩が勧めていた「よりもい(宇宙よりも遠い場所)」、めっちゃ良いです。

観てて止まらない感じがすごい。

毎回が神回、わかる気がします。

JASALMAのプログラム解読Part6 左手法

今日は左手法についてまとめていきます。

これは多くの場合初心者が一番最初に導入する探索法だと思います!

その理由は後程。

 

まず左手法とはなんぞや、ってところから話していきます。

左手法とはスタートから常に左壁に沿って進んで行く、というごくごく簡単なものです。(←一番最初に導入する一番の理由!!)

メリットとしては簡単である、というところです。

一方デメリットもあります。(←このデメリットが大きい)

それが「迷路によっては永遠にゴールできない」というものです。

マイクロマウスにおいてスタートは左下(0,0)に固定されていてゴールは迷路の内側に存在しているためゴールが浮いている(?)、島になっている(?)と延々にクルクル外周し続けてしまいます。(下図参照)

f:id:kt33-JASALMA:20180225235154p:plain

どんな迷路でもゴールできるようになるには次回以降で紹介する「足立法」なりを導入する必要があるかと思います。

 

 

では以下左手法の導入についてです。

まず探索走行の大前提としてセンサーで壁の有無を調べてその情報を用いて進路を決めていく必要があります。

(ここではJASALMAの例を紹介しますがこれよりももっといい方法もあるかもしれません)

そこでセンサー値を読むタイミングを決めてしまいます。

ここではそれを区画の境界(区画の入り口)で行うものとしています。

ここで前壁、左右の壁の有無を判定します。

その結果生じるパターンは以下の4パターンであり、それぞれにおいてとる動作は決まっています。

  • 左壁無し

    →左折

  • 左壁有り&前壁無し

    →前進

  • 左壁有り&前壁在&右壁無し

    →右折

  • 左壁有り&前壁有り&右壁有り

    →Uターン

 

ここまでで左手法の大まかな流れが理解できたと思います。

 

のでここからは探索走行の実装についてまとめていきます。

(ここからの話は足立法等でも使えるものです)

 

まず初めの段階では区画の入り口で停止しセンサー値をよんで壁を判断する、というのがいいと思います。

以下ではセンサーを読むときに停止&超信地旋回のパターンを紹介します。

  1. 区画の入り口に進み停止
  2. センサー値を用いて進路を決定
  3. 90mm進み停止
  4. 左折or待機or右折or180°旋回(Uターン)
  5. 90mm進み停止(区画の入り口に進み停止)

これを実現するのに必要な動作は

  1. 停止状態→90mm進む→停止
  2. 90°右・左旋回
  3. 180°旋回

のみです。

とても少ないですよね!

 

以上のもので左手法は完成できると思います。

これが出来たらセンサーを読むときに停止しない、直進時に区画中心で停止せずスルー出来るようにするなどで速度向上を図っていきましょう!

最終的にスラロームを導入すればスタートからゴールまでノンストップで進むことができます。

センサーを読むときに止まらない、などを実装する際には方向距離のリセット(プログラム的な)のタイミングによっては適切に走れないので距離が合わない場合にはここも考えてみましょう。

(この考えはスラローム走行時のオフセットの際にも用いられる考え方です)

 

 では、本日はここまで!

 

ではでは(^.^)/~~~

R

 

 P.S.

書こう書こう思っていて遅くなってしまったのですが、先日NTFから正式発表があったようにマイクロマウスのクラス分け・名称の変更がありました。

したがってマイクロマウスを作っていた(作った)つもりだったのですがそれがクラシックマウスとなってしました。

 なんとなく悲しさあります・・・

(↑マイクロマウス(旧ハーフ)やればいいじゃん!って指摘は現状受け付けてません(笑))

 

JASALMAのプログラム解読Part5 壁制御2

昨日に引き続きまて壁制御のお話です。

 

昨日書き残していた壁があるか内科の判断基準のセンサー値(閾値)と吸い込まれ吸い込まれ対策についてです。

 

前回の記事で左右の壁の状態によって制御量の式を変えなければならない、という話をしました。

閾値(←しきいち派です)とは壁が有るか無いか判断するために使うセンサー値の基準値になります。

つまりセンサー値がある値(閾値)よりも小さければ壁は無い、それ以上ならある、って判断をするための値です。

 

この値をどう設定するかも宗教によるものだと思います。

例えば区画中心のセンサー値の半分とか?(←適当に言ってみました)

僕が先輩に聞いて、実装していたのは壁を30mm遠ざけた時のセンサー値を閾値とする、というものでした。

これは後々左手法や足立法において壁が有るかどうか判断するときにも使うものです。

 

さて、次は吸い込まれについて書いていきます。

 

・・・と思ったところで壁制御について書き忘れていたことに気が付いたので順序が悪いですがここで書いていきます。

それが制御量の計算をどこでやるのか、ってところです。

これは1ms毎に割り込まれるCMTで行っています。

そして求めた制御量(速度と同じ次元になっている)をMTU割り込みのタイミングで書くモーターに代入する速度に足す形にしました。

 

ここまでのことで壁制御は出来ると思います。

左右に寄せて直進を走らせてみましょう!

1区画くらいで中心に戻りましたか?

 

それで最後に吸い込まれ対策です。

吸い込まれとは壁が急になるところや櫛(くし)を走る場合にまっすぐ区画中心をはしらずふらふらしてしまう状態です。

 

以下でその原因と対策方法についてまとめていきます。

まずその原因についてですがその説明のためにMice Wikiの画像(↓↓)

http://mice.deca.jp/cgi/dokuwiki/lib/exe/fetch.php?media=sensorgraph.png

用いて説明します。

これは急に壁がなくなった時のセンサー値を示しています。

黒が理想のセンサー値、赤が実際のセンサー値です。

閾値はこのグラフでいうHighとLowの間のどこかに設定されていると思います。

が、赤が示すセンサー値が閾値に到達するまで壁がなくなったほうに近づいて行ってしまいますよね。

これが吸い込まれの原因です。

これはセンサー値が閾値以下に落ちるまでに1ms以上の時間がかかってしまうために生じるものです。

そのためセンサー値の急激な変化を検知した瞬間に壁制御を止めてあげればいいと思います。

なので3msや5ms前のセンサー値と現在のセンサー値でいくつずれていたら壁制御を停止、などという処理を加えてあげましょう。

何ms前、どれだけの変化で止めるか、によって吸い込まれ対策の強さを変化させられると思います。

 

以上で壁制御の大まかな説明は終了!

後はプチ情報的な感じでいくつか

  • 旋回させているときは壁制御OFF
  • 機体と前壁の距離が近くなったら壁制御OFF
  • 速度が遅くなったら壁制御OFF(ないし弱める)
  • etc(なんかあるかも?)

 

以上、今日は終わります!

 

ではでは(^.^)/~~~

C

 

 

 

JASALMAのプログラム解読Part4 壁制御

皆様お久しぶりです。

 

最近は次作マウスの設計に追われていてブログを書く余裕がありませんでした。

今は少しの間実家に帰っており、製作ができない状況(部室じゃないと活動できないできない病)なので1回でも2回でもブログの更新ができればと思っております。

 

さてさて何を書こうかって感じはすごいあるんですけどやっぱりPart3で止まっているプログラム解読をやっていこうと思います。

前回までで走行系とバッテリー・センサーの基礎は書いたつもりなので、今回のPart4で何か書こうかな~と思った結果、思いついたのは左手法でした。

が、

書いてる途中に「あ、壁制御書いて無くね?」と思いまして、「まあ次かその次かに書けばいいか」と思っていたのですがそもそも左手法を書いていた下書きが保存できておらず、きれいさっぱり無くなっていたので本来の作成順の通り先に壁制御について書いていきます。

 

さて前置きが長くなりましたここから本題

「マウスを走らせていて区画の真ん中を走っていない!このままじゃ壁にぶつかってしまう!」そんな風に思ったことが一度はありますよね!(←マウス初心者向けに書いているつもりです・・・)

そんな時に便利なのがこれ!

”壁制御”

(↑マウス初心者向けに書いているつもりです・・・(重要なことなので2回言いました))

じゃあ壁制御とは何か

→センサー値を用いて自身の位置(区画中心との差)を認識し、その情報をもとに区画の真ん中を走るように調整するような制御です。

この制御はPID制御の中のP制御にあたるらしい(?)ですがその辺は詳しくないので強い方かGoogle先生に聞いてみてください。

 

壁制御の理屈がわかったところでどのようなプログラムが必要か考えて行きます。

簡単に書いてしまえば右に寄っていたら右のモータを早く回し、左に寄っていたら左のモータを早く回せばいいってだけになると思います。

さらに言えばどれだけモータを早く回すかっていうところをセンサー値に比例して決めてあげればいい(比例(P)制御?)という話になります。

 

そんな中壁制御について調べていたらMice Wikiにも壁制御のページがあったことを思い出したので貼っておきます。

 

ここにも書いてあるようにモータの速度に式は以下のようになります。

右モータ速度=重心速度+制御量

左モータ速度=重心速度ー制御量

 

じゃあ次に気になるのは制御量ってどうやって求めるのか?ってところだと思います。

 

ので以下では制御量の求め方について記していきます。

制御量を決めるのは左右の壁に対するセンサー値である、と言いました。

一方で左右の壁の有無は両壁有or無・左右のどちらかのみ有の4パターンがありそれらは区別してあげなければなりません。

(そうでないと左壁だけ有の場合に右のセンサー値が低くなりこれを基準値に戻そうとする制御が起こりどんどん右に流れて行ってしまいます。)

そのためパターン分けしたうえで制御量を求める式を書いていくこととします。

 

  • 両壁有

制御量=Kp*(右センサー値-右基準値)-(左センサー値-左基準値)

  • 左壁のみ

制御量=Kp*(-(左センサー値-左基準値)*2)

  • 右壁のみ

制御量=Kp*(右センサー値-右基準値)*2

  • 両壁なし

制御量=0

 

さて、新しい要素が2つ出てきました。

それがKpと基準値です。

基準値は説明すつほど大したものではないですが機体を区画中心(左右に寄っていない状態)にした際の左右のセンサーの値です。

制御量の式を見てもらえればわかるようにセンサー値が基準値と一致すれば制御量が0になることから壁制御によって目指すべき場所、という意味になります(?(←日本語が上手じゃない気がする・・・))

 

次にKpについて。

これは単に比例定数です。

この値によって壁制御の強さを変更できます。

小さすぎるとなかなか真ん中に戻らないし、大きすぎると振動する・・・?のかな?

まあまあとにかく程よい値にする必要があると。

程よいってのがどれくらいなのかは宗教によるものらしいので「何が正解!」とかはないと思います。

(僕が聞いたのは1区画くらいで真ん中に戻れるくらい、とかって感じでした)

そう考え試してみるとKpは0.2~0.5くらいの値になるのかな~と漠然と思っています。

ただセンサー値とかにもよるので個体差大いにあり、です。

 

んで、あと残っているのが壁があるかないかの判断基準のセンサー値、吸い込まれ対策、とかとかを書いてあげると壁制御ができると思います。

が、

疲れたし長くなってきたので今回はここでやめて残りはまた次回にまわします。

 

ではでは(^.^)/~~~

Q