あきらぼ

テック系ブログ

3Dプリンタで歯ブラシ置き

こんにちは。

 

今回は3Dプリンタで歯ブラシ置き用の小物を作りました。

 

 

 

歯列矯正で歯間用の歯ブラシを使うようになったので、コップに立てておくと場所がなくて困っていたので100円ショップで箸置きを買えば済むようなものを作ってみました。

 

 

あとは洗面台に置いてます。

 

 

とりあえず、使ってみて、まぁこんなもんかなと(笑)

50点って感じです。

 

まぁ、やりたかったことはできたのでOKということで。

 

Anker Eufy RoboVac 11S バッテリー交換

こんにちは。

 

今回は私の持っているお掃除ロボットAnker Eufy RoboVac 11Sのバッテリーを交換しました。

 

 

どうして交換することになったかというと、ある日から充電しているとランプがオレンジ色に光るのですが、いざ掃除をスタートさせようとすると一瞬動いて止まってしまっていました。

 

一瞬動いて充電されなくなった瞬間だったので恐らくバッテリーが死んでいるのだろうと思って確認してみました。

 

 

 

背面の蓋がネジで止まっているので外してバッテリーを取り出します。

 

外してみると14.4Vが定格のところ9.6Vまで電圧が下がっていました。

通りで動かないわけです。

 

 

明らかにバッテリーが不動の原因なので、新しいバッテリーを探してみると、Amazonで取り扱っていました。

 

 

早速購入して交換していきます。

新しく届いたバッテリーの電圧を計ってみると、ちゃんと格通りの14.4Vの電圧が出ています。

 

 

あとは外した手順と逆に組み付ければ完成です。

 

問題なくお掃除してくれるようになりました!

 

これにてバッテリー交換終了です。

 

 

カルマンフィルタの復習

こんにちは。

 

先日、会社でカルマンフィルタの話がでて、ざっくりとしか説明できなかったので復習しようと思い教科書や動画等を色々見て分かりやすいものをいくつかピックアップしました。

カルマンフィルタとは?

カルマンフィルタのあくまで個人的な理解にはなりますが、

複数の精度の異なる情報源(制御値やセンサー値)を用いてシステムの状態を最適に推定するためのフィルタ

だと思っています。

 

一体どういった事例に適用できるのかというと私が良く聞いたことがあるのは、

航空機や自動車でのGPSINS航法が多いでしょうか。

 

航空機や自動車の自己位置を推定しようとするときにGPSは簡単にイメージが付くと思います。

しかし、GPSは更新頻度が低かったり(1Hz)、トンネル等電波の入らない場所に入ってしまうと機能しなくなってしまいます。

 

また、IMUセンサー(慣性)を用いることによって、加速度や角速度から移動量を推定することで自己位置を推定することができます。

こちらの方法では数百Hzでの慣性センサの情報を使って速い位置推定を可能としますが、ノイズが多く、位置は積分をして求めるので時間がたてばたつほど誤差が蓄積されてしまいます。

 

カルマンフィルタではこういった複数の確からしさ(確度)の異なる情報を確率的に統合して最適な推定値を算出してくれます。

この時に重要になるのが、推定値の誤差です。

この誤差をカルマンフィルタでは正規分布として処理することで簡単に計算できるようにしています。

だからこそ、マイコン等の処理能力の低い計算でも実装することを可能としています。

 

カルマンフィルタの理論

復習としてまず、読み直したのが、こちらの本です。

 

私は2014年に購入していますが、いまだにAmazonで検索するとトップに出てきますね。

 

こちらは基本的な理論を説明してくれています。

なので、現実問題に実装だけできればいいのであれば特に読む必要もないかなと思います。

 

次に、Youtubeでも割と分かりやすく理論を説明してくれている動画があったので紹介します。

 

www.youtube.com

 

動画で無料で勉強できるのは便利な時代ですね。

 

カルマンフィルタの応用

次に、理論は分かったが現実のどんな問題に適用できるんだよというところで非常に分かりやすい動画があったので紹介します。

この動画は学生時代に見たかった内容ですね、、、

www.youtube.com

 

現実問題への適用とリアルについて非常に分かりやすく説明してくれています。

 

最後に複数のセンサー情報を用いて自己位置推定するという現実問題が大きな技術的課題となる自動運転におけるカルマンフィルタの応用事例を説明してくれている記事があったので紹介します。

こちらはティアフォーという日本の自動運転ベンチャー企業のテックブログ記事になります。

tech.tier4.jp

 

以上、学生時代ぶりにカルマンフィルタを勉強しなおしたときに参考になったので紹介しました。

次回は私も、なにか現実問題に対してカルマンフィルタを実装してみますかね。

 

Nintendo ゲームキューブでディスクを読み込まない修理

こんにちは。

 

先日、友達から懐かしい任天堂ゲームキューブを貰ったのですが、ディスクを読み込まなかったので修理してみました。

 

 

 

 

問題現象

今回問題となったのはゲームディスクの読み取りです。

ゲームキューブ自体は起動するのですが、いざゲームを起動しようとすると認識してくれません。

「NO DISC」と表示されてしまいます。

 

原因

今回は起動もしていて、ディスク自体も回っていることは確認できています。

そこで、レーザーによる読み込み自体の不良だと思われます。

 

実際に調べてみると、経年劣化でレーザーの出力が不足してしまって読み込めないという持病があるようです。

恐らく、そもそも経年劣化で読み込めなくなる前提の設計なのでしょう。

基板自体に可変抵抗が設置されており、出力を調整できるようになっているようです。

 

以下の記事を参考に出力調整してみます。

【修理徹底解説】ゲームキューブのディスクが読み込まないので、分解してレーザー出力調整してみた | 英二六ブログ

 

修理

それではどんどん分解していきます。

一番外側のケースだけ特殊なネジが使われています。

 

たまたま特殊工具を持っていたので、はずことができました。

 

 

あとは、どんどん外していきます。

 

可変抵抗の値の調整を確認するために、組み立てずにそのまま動作確認してみます。

 

 

問題なくディスクを読み込んでくれました。

 

あとは元通り組み立てて終了です。

 

 

【Python】Tkinterの再帰関数でRecursionError

こんにちは。

 

TKinterのafterによる再帰関数のエラーでハマったので少しそのこと書きます。

 

 

 

今回は以下のコードで「RecursionError: maximum recursion depth exceeded while calling a Python object」のエラーが生じてしまいました。

Tkinterでのafterメソッドでの再帰関数は定期実行でよく使う方法だと思います。

こちらは再帰関数によってメモリ使用量が増えすぎたりするのを防止するためのエラーだそうです。

 

 

結論としてはtk.afterで再帰する際にメソッドの引数はもともとないのですが、「()」を使用しないことでこちらのエラーは生じません。

 

こちらのコードでいう22行目の

self.after(100, self.DrawAnnotation())

self.after(100, self.DrawAnnotation)

に変更することでこちらのエラーは生じません。

引数があると再帰の際にメモリをリリースせずに新たに割り当ててしまうからでしょうか。

 

RaspberryPiで計測した環境センサ情報をSQLデータベースに書き込む

こんにちは。

 

今回は先日RaspberryPiで計測した環境データをSQLデータベースサーバーにアップロードします。

 

 

 

前回はCCS811とBME280から疑似CO2濃度と気圧を取得するところまで行いました。

RaspberryPiでCO2センサーCCS811を動かす - あきらぼ

RaspberryPiでBME280で気圧測定 - あきらぼ

 

今回はここで取得した値をSQLデータベースにアップロードします。

実際のコードはこちらです。

IPアドレス等は伏せています。)

 

実際にcrontabで定期実行させたときのデータベースを確認します。

 

eCO2の値が飛んでいるのは要確認ですが、15分毎にデータがアップロードされていることが確認できます。

 

次回はデータベースの値を使ってWEBページ上でこれらの値を可視化してみようと思います。

 

今回の環境モニタシステムのコードの全体はこちらになります。

GitHub - Aki-R/RoomConditionMonitor

 

 

ARK新マップ「フィヨルド」専用サーバーを立てる

こんにちは。


先日オープンワールド恐竜育成開拓ゲームである「ARK」から新マップ「フィヨルド」が追加DLCとしてリリースされました。

 

www.spike-chunsoft.co.jp

 

 

 

今回は以前に立てたLostIslandマップの専用サーバーから新マップ「フィヨルド」へ変更していきます。

 

前回のARK専用のサーバーセットアップ記事はこちら。

aki-lab.hatenadiary.com

 

今回は既にサーバーはセットアップしているのでアップデートを行います。

基本的なやり方は以下の記事の通りになります。

aki-lab.hatenadiary.com

 

なぜか分かりませんが、私は二回アップデートしないと最新になりませんでした。

 

あとは起動するだけなのですが、新マップ「フィヨルド」は「Fjordur」になります。

以下はバッチファイルにしてしまっていますが、起動のオプションに上述のFjordurのマップを指定してセッション名・パスワード等を指定すれば専用サーバーが起動します。

 

あとはARKの新マップをお楽しみください!