Slack導入のすゝめ
お久しぶりです。
今日はMiceで導入しているチャットツール”Slack”について書いていこうと思います。
以下話すのは通知設定して!、って話だけなので読みにくい文章読みたくないとか、時間ないぜ、って人はここ読んでもらって通知設定してもらえればあとは読まなくても問題ないです。
※今回の記事は(今回に限らずですが)Miceの部長ではなく、一個人としての見解です※
※この記事は大半が部員向けに書いています※
Slackとはグループチャット、1対1のメッセージング(DM)、等の機能を有するチームコミュニケーションツールです。(By Wikipedia)
ちなみに”"Searchable Log of All Conversation and Knowledge”の頭文字らしいです。
そして我がMiceでは去年よりメール・LINEからSlackへの移行を行いました。
…が、部員のアクティブ率が悪いです。(あくまでも個人的な感想)
これは現在催事長がeventチャンネルに投げている食事会に関する話へのレスポンスでもわかることです。
これがこの記事を書くきっかけになりました。
というわけで今回はSlackのアクティブ率が上がればいいな、と思いながら、いくつか関連することを書いていきます。
- 通知設定しよう
とりあえずこれ!!!
通知設定してない人意外と多いのではないでしょうか?(個人的感想)
「いやでも難しいんでしょ~」と思ってるそこのあなた!!
全然難しくないんです!
ということで通知設定の仕方をまとめていきます。
ここではAndroidの画面で説明していますがiOSでもそこまで変わらないです。
- 右上の:みたいなやつをタップ(開くチャンネルやトークはどこでも問題ないです)
- 設定をタップ
- 通知・設定をタップ
- モバイル通知のタイミングを変更
ここでは画像を用いた紹介を省略しますがWindows(アプリ版)で通知の設定を行う場合には
- 左上のワークスペース名をタップ
- 環境設定
- 通知
から設定が変更できます。
さあ、皆さん、通知の設定できましたか?
え?やってない・・・?
今すぐやってどうぞ(*^-^*)
- ミュートの設定
通知の設定してくれてありがとうございます!
となると困るのがopenthedoorの通知ですよね。
部室開いたメーリスの通知がじゃまだ、という理由もあってSlackに移行したのに、Slackでもopenthedoorの通知が頻繁に来るのでは意味がありません。
そこでチャンネルごとのミュートの設定を行いましょう。
今度はiOSのアプリで行います。(これもAndroidでもそんなに差はないです)
- ミュートしたいチャンネルを開いてチャンネル名をタップ
- 通知をタップ
- チャンネル全体をミュート
- 完了
上記の手続きでチャンネルごとのミュートが設定できます。
(できる限りミュートはopenthedoorだけにとどめておいていただければ・・・)
(できる限り@channelの無視とかはしないでいただければ・・・)
あとは携帯では入ってるけどパソコンにSlackが入っていない人なんかはぜひ入れましょう(半ば脅迫)
以上、通知とミュートの設定についてでした。
わからないことがあれば自分でもほかのわかる人にでも質問してください。
最後に
- Slackでできる便利なこと
折角Slack使っているのですから便利にできるものはどんどん導入していきましょう。
と、言っても自分はあまり多くは知らないし詳しくはないので少しだけ...
「こんなのありますよ!」「これ入れると便利ですよ!」みたいなのがあれば是非教えてください。
- Googleカレンダーと連携
これは自分も使っているのですがGoogleカレンダーを連携させておくと予定が追加されたとき、予定の前、1週間の予定などを自動で通知してくれます。(いずれも設定次第で変更可)
任意のカレンダーから任意のチャンネルに投稿することができます。
※個人的な予定を連携させる場合などは他の人に見えないように自分だけに投稿されるようにしましょう。
詳しくはこちらへ
- 届いたメールをSlackに自動転送する
これもすごく便利です。
普段あまりチェックしないアドレスに重要なメールが届いたりすること、よくありますよね?(←ほんまか?)
そんなあなたはSlack通知するための転送先アドレスにメールが転送されるように設定するだけでメールの確認がSlackでできるようになります。
詳しくはこちらへ
他にもみんな大好きTwitterと連携させたりもできるみたいです。
他のメンバーの迷惑にならない範囲でどんどんカスタマイズさせていきましょう!!
ではでは(^.^)/~~~
B
P.S.
完全に部内向け&個人的な考えなんだけどもっとrandomチャンネルを雑談みたいな感じで動かしていけると楽しいのかなと思いました。
逆にgeneralで雑談とか最重要でない話はしないようにしないとですね・・・
この辺は次の部会で話してもいいかもしれない。
それとお食事会行く気があるけどスタンプ押してないそこのあなた、eventチャンネルに投稿されているのでスタンプ押してください。
P.S.2
新作の基板をElecrowに発注しました。
それに伴い名前も決定しましたが、まだ公開はしません。
(去年走っていた某先輩のマウスの名前とそっくりなのは承知しているのですが許してください・・・)
P.S.3
よりもい、終わってしまってなんとも言えない気持ちです。
最高でした。
まだ見てない方は是非。
P.S.4
他大の代表の方と話して実感わいた節もあるのですがもうすぐ新歓ですよ・・・
新入生入ってくれるのか、ちゃんと教えて行けるのか不安ですが頑張っていきましょう。
新作の予定
お久しぶりです。
今までJASALMAのプログラム解読を行ってきましたが今回は新作のお話をしていきたいと思います。
(といいつつ皆様からのダメ出し・アドバイスが欲しい、というのも本心です)
というわけで回路や配線図など気になる点があればコメントやTwitterで教えてほしい所存です。
よろしくお願いします!!
まず機体名称から紹介します。
- BALTA
- BIJELA
- BIANCO
現状上記の3つが候補となっております。
(これ以外になる可能性もあり)
次に回路図ドーン!(追記:↓いくつか間違ってる可能性ありますが、少なくとも書き込み間違ってます)
その次に配線図ドーン!
- GND無し
- GND有
- GNDピックアップ
こう見るとGNDがペタでつながってないんですよね・・・
なんともやばい気がしないでもないんですけどどうなんでしょう、強い方々・・・
まだ初の配線率100%なのでやり直さなきゃなのかな~とは思ってるんですが
次に機体概形
色は適当です。
基板色は白にしようかな~と思っています。
がそれも未定。
最後にここまでで苦しんだことを
- モーターが高い
- 足回り設計難すぎ
- センサー置く位置いいのかこれで?
- 吸引ファンの機構がわかんない
- 部品選定難しい
- 部品集め難しい
ちゃんと全日本に出れるのか、って不安はあるのですが頑張って作り上げたい所存です。
ではでは(^.^)/~~~
.
P.S.
改めてですが「ここおかしいやろ!」みたいな批判お待ちしております。
それと強いハーフマウサーの先輩が勧めていた「よりもい(宇宙よりも遠い場所)」、めっちゃ良いです。
観てて止まらない感じがすごい。
毎回が神回、わかる気がします。
JASALMAのプログラム解読Part6 左手法
今日は左手法についてまとめていきます。
これは多くの場合初心者が一番最初に導入する探索法だと思います!
その理由は後程。
まず左手法とはなんぞや、ってところから話していきます。
左手法とはスタートから常に左壁に沿って進んで行く、というごくごく簡単なものです。(←一番最初に導入する一番の理由!!)
メリットとしては簡単である、というところです。
一方デメリットもあります。(←このデメリットが大きい)
それが「迷路によっては永遠にゴールできない」というものです。
マイクロマウスにおいてスタートは左下(0,0)に固定されていてゴールは迷路の内側に存在しているためゴールが浮いている(?)、島になっている(?)と延々にクルクル外周し続けてしまいます。(下図参照)
どんな迷路でもゴールできるようになるには次回以降で紹介する「足立法」なりを導入する必要があるかと思います。
では以下左手法の導入についてです。
まず探索走行の大前提としてセンサーで壁の有無を調べてその情報を用いて進路を決めていく必要があります。
(ここではJASALMAの例を紹介しますがこれよりももっといい方法もあるかもしれません)
そこでセンサー値を読むタイミングを決めてしまいます。
ここではそれを区画の境界(区画の入り口)で行うものとしています。
ここで前壁、左右の壁の有無を判定します。
その結果生じるパターンは以下の4パターンであり、それぞれにおいてとる動作は決まっています。
- 左壁無し
→左折
- 左壁有り&前壁無し
→前進
- 左壁有り&前壁在&右壁無し
→右折
- 左壁有り&前壁有り&右壁有り
→Uターン
ここまでで左手法の大まかな流れが理解できたと思います。
のでここからは探索走行の実装についてまとめていきます。
(ここからの話は足立法等でも使えるものです)
まず初めの段階では区画の入り口で停止しセンサー値をよんで壁を判断する、というのがいいと思います。
以下ではセンサーを読むときに停止&超信地旋回のパターンを紹介します。
- 区画の入り口に進み停止
- センサー値を用いて進路を決定
- 90mm進み停止
- 左折or待機or右折or180°旋回(Uターン)
- 90mm進み停止(区画の入り口に進み停止)
これを実現するのに必要な動作は
- 停止状態→90mm進む→停止
- 90°右・左旋回
- 180°旋回
のみです。
とても少ないですよね!
以上のもので左手法は完成できると思います。
これが出来たらセンサーを読むときに停止しない、直進時に区画中心で停止せずスルー出来るようにするなどで速度向上を図っていきましょう!
最終的にスラロームを導入すればスタートからゴールまでノンストップで進むことができます。
センサーを読むときに止まらない、などを実装する際には方向距離のリセット(プログラム的な)のタイミングによっては適切に走れないので距離が合わない場合にはここも考えてみましょう。
(この考えはスラローム走行時のオフセットの際にも用いられる考え方です)
では、本日はここまで!
ではでは(^.^)/~~~
R
P.S.
書こう書こう思っていて遅くなってしまったのですが、先日NTFから正式発表があったようにマイクロマウスのクラス分け・名称の変更がありました。
したがってマイクロマウスを作っていた(作った)つもりだったのですがそれがクラシックマウスとなってしました。
なんとなく悲しさあります・・・
(↑マイクロマウス(旧ハーフ)やればいいじゃん!って指摘は現状受け付けてません(笑))
JASALMAのプログラム解読Part5 壁制御2
昨日に引き続きまて壁制御のお話です。
昨日書き残していた壁があるか内科の判断基準のセンサー値(閾値)と吸い込まれ吸い込まれ対策についてです。
前回の記事で左右の壁の状態によって制御量の式を変えなければならない、という話をしました。
閾値(←しきいち派です)とは壁が有るか無いか判断するために使うセンサー値の基準値になります。
つまりセンサー値がある値(閾値)よりも小さければ壁は無い、それ以上ならある、って判断をするための値です。
この値をどう設定するかも宗教によるものだと思います。
例えば区画中心のセンサー値の半分とか?(←適当に言ってみました)
僕が先輩に聞いて、実装していたのは壁を30mm遠ざけた時のセンサー値を閾値とする、というものでした。
これは後々左手法や足立法において壁が有るかどうか判断するときにも使うものです。
さて、次は吸い込まれについて書いていきます。
・・・と思ったところで壁制御について書き忘れていたことに気が付いたので順序が悪いですがここで書いていきます。
それが制御量の計算をどこでやるのか、ってところです。
これは1ms毎に割り込まれるCMTで行っています。
そして求めた制御量(速度と同じ次元になっている)をMTU割り込みのタイミングで書くモーターに代入する速度に足す形にしました。
ここまでのことで壁制御は出来ると思います。
左右に寄せて直進を走らせてみましょう!
1区画くらいで中心に戻りましたか?
それで最後に吸い込まれ対策です。
吸い込まれとは壁が急になるところや櫛(くし)を走る場合にまっすぐ区画中心をはしらずふらふらしてしまう状態です。
以下でその原因と対策方法についてまとめていきます。
まずその原因についてですがその説明のためにMice Wikiの画像(↓↓)
用いて説明します。
これは急に壁がなくなった時のセンサー値を示しています。
黒が理想のセンサー値、赤が実際のセンサー値です。
閾値はこのグラフでいう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
2017年終了のお知らせとそのご挨拶
みなさんこんばんは!
ここ数回JASALMAのソースコード解読を行っていましたが今日は大晦日ということで年末の挨拶や今年の振り返り、来年のお話を少しだけ書いていきたいと思います。
まず今年の振り返りについてです。
やはり一番大きな出来事としてはMiceに入ってしまったということでしょう。
これによって自分の大学生活が大きく変わってしまったことは言うまでもありません。
(Miceに入っていなければ22時過ぎまで大学に残るような日々を送ることはなかったでしょう)
そのせいで1年目からマウスを完成させ、やりつくしたとは言えないものの完走させることができました。
あれはほんとに嬉しかったし、やってよかった!と強く感じた瞬間でした
同時に、沢山教えてもらったり助けてもらったりと先輩への感謝も感じた一年でした。
来年は自分もそうゆう先輩になりたいな、と思います!
さらに言えば基礎工生なのに部長に就任してしまいました。
経験が少ないですし技術的にはなにも教えられない部長になる気がしますが残り11ヶ月程の任期、一生懸命頑張っていこうと思います(`・ω・´)ゞ
次に(?)来年の話を少々
Miceの部長としては今年の先輩方と同様に新歓やプチ大会の開催などなどやらなきゃいけないことがたくさんあります...
さらに来年は理科大がマウス合宿担当ということで・・・
幹部共々なんとか成功させなきゃな、と思っております。
ので皆様の参加を心よりお待ちしております。
個人的な話としては新作をしっかり完成させてある程度の記録を残したいなと思っております。
負けたくない相手もいますしね
とりあえず早く設計を終わらせなきゃというところです。
わからないことだらけなので先輩方、沢山話を聞かせてください!
んー、話したいことはそれくらいですかね?
あとは兼サーしているテニスサークル(GRASS)のほうでも役職を持っているのでそっちも頑張らなきゃと思いつつ・・・
あー、なんとも忙しい一年になりそうです。
学業もおろそかにしないよう、落単しないように気を付けたいと思います。
それではみなさん今年一年間大変お世話になりました!
平成30年もよろしくお願いします!
ではでは(^.^)/~~~
R
JASALMAのプログラム解読Part3 センサーとバッテリー等々のその他&走行系の補足
こんにちは。
もう年の瀬ですね...
もうほんと早いな~と思いながらこんな話はまた明日、大晦日に残しておこうと思います。
さてさて、今回のブログではプログラムの細かい部分と走行系の補足についてです。
まず補足から行きましょう。(今後もまた何か思い出したら随時補足していきます。)
その中で任意の距離を走れるようになる!、という話をしたと思います。
そのためには基準となる点(区画の中心や境界)で走行距離をリセットするのがポピュラーなやり方なんじゃないかと思います。
このリセットのタイミングについて言及していなかったのでここで記していきたいと思います。
何も考えずにやるなら走り始めるタイミングでリセットをかける人が多いと思います。
(↑個人の独断と偏見)
ですが後々のことを考えると走行が終わったタイミングでリセットをかける(基準の点を出る時ではなく、到達した時)ようにしておいたほうがいいと思います。
これに関しては後々ある動きを実装しようとしたときに幸せを感じられるものだと思います。
のであえて理由は書かないでおきます。
さあ、いよいよ本題(?)の細々した部分について書いていきます。
まずはセンサー関連について、主にチャージ発光についてです。
(※書いてるのが雑魚なので詳しく知りたい人は自分で調べるかもっと強い人に聞いてみましょう)
(Miceの標準回路を使用していれば)センサー周りの回路内にLEDと並列でコンデンサがあると思います。
センサー用のLEDを点灯させる際はこのコンデンサに充電してあるエネルギーを使用しているらしいです。
そのため点灯からの時間によってその明るさが・・・変わる・・・?(ホンマか?)
つまりセンサーの値を取得する(AD変換する)際には1つづつ行う必要があります。
またチャージ発光とは少し違う話になりますがセンサー値の外乱を取り除く方法について記していきます。
この処理をしないと機体を180度回転させるだけで値が100ほどずれる場合もあるので是非行いましょう。
さて、外乱を取り除く方法ですがこれはLEDが点灯している時のセンサー値から消灯している時のセンサー値を引けばよいでしょう。
以上の2つを考慮してLED1つ1つを順々に”点灯→AD変換→消灯→AD変換→(次のLEDを点灯)”を行えばいいと思います。
また点灯からセンサー値が変化するまでにはラグが存在するのでその対策は忘れないようにしましょう。
JASALAMAではこれらの処理をCMT割り込みで行い、1ms毎にセンサー値の取得を行っておりました。
全日本大会の3日前までこの処理をしておらず(上手くできておらず)壁制御もセンサー値も安定していませんでしたがこの処理をしてから色々と安定し幸せになることができました。
なので是非
みんなには幸せになってほしい
と思う今日この頃です...
次にバッテリーの電圧測定についてです。
マイクロマウスで多く用いられているリポ(リチウムポリマー電池)は軽量、高電圧、大容量などとても優れた電池でドローン(マルチコプター)などにも用いられています。
一方でやばいことをしてしまうと発火してしまうなど、大きな危険性も孕んでいます。
やってはいけないこととして以下のようなものがあげられます。
- 過充電はしない
- 過放電はしない
- 保管中にショートしないようにする
- 充電は安全な場所で目を離さないように
- 充電終了後or異常が確認されたらすぐ充電器から外す
- 使用していないときには丈夫なケースに入れて保管する
以上より、動作中に起こりうるやばいことは過放電です。
そのためマウスでバッテリーの電圧を読んであげる必要があります。
標準の回路図を用いていればバッテリーを抵抗で分圧させてその電圧がマイコンに入力されているはずです。
つまり分圧のために用いている抵抗の値がわかればマイコンからバッテリーの電圧が読めるはずです。
そのために・・・
はんだ付けする前に分圧に使う抵抗の抵抗値を測定しておきましょう!
それさえやっておけばAD変換とその抵抗値を用いて電圧が読めるはずです。
それで電圧が読めるようになったらどうするか?
→ある値以下の電圧を示した段階で動作を終了し充電させる
この基準となる値に関しては詳しくないし適当なことも言えないのでもっと強い方に聞いてください。
JASALAMAでは電源を入れた時とモードを選択したときに10.9V(?)以下となっていたら無限ループに入るようなプログラムとなっています。
これで電圧が降下してきたら動かなくなるのですぐにわかります。
なのでリポはこのような形でなくてもいいですが過放電を起こさないような対策をしてから使うようにしましょう。
では今日はここらへんで失礼します。
何か指摘等あればお待ちしてます。
(^.^)/~~~
F