われがわログ

最適化アルゴリズムとかプログラミングについて書きたい

2020-01-01から1年間の記事一覧

捜索理論勉強メモ

完全に自分の勉強メモ。 静止目標に対する捜索活動の最適化についてまとめた。 参考書は下記の2つ。 コロナ社から出ている本の方が入門向けだが、省かれている部分もある。ただ、不完全定距離センサーの横探知確率や、同センサーの区域捜索に関する議論はコ…

Near-identity diffeomorphismsを用いた差動二輪ロボットの制御

Turtlebot3をシミュレータ上で動作させて以来、「差動二輪ロボットの駆動則(速度指令値から進行方向速度・回転角速度への変換則)って何があるんだろう」と思っていたのだが、よさげなやつを最近発見したのでメモしておく。 東工大&Georgia Techによる論文…

温湿度計付き置時計 MHO-C303 へのラズパイからの時刻同期

210411追記 MHO-C303は廃版になったもよう、、 CO2計測ついでに湿度もロギングしたいなぁと思って色々調べた結果、 Xiaomi製、温湿度計付き置時計 MHO-C303を買った。*1 旧機種のlywsd02とは違い、電池が単4二つになっているので長持ちするのではと思う。た…

マイクラっぽい地図ビューワを作った

↑こんなんを作った。 ここ↓からグリグリ動かせる https://estshorter.github.io/VoxelMapViewer/ 業務でマイクラ風3次元地図ビューワが欲しくなったのだが、Matplotlibのvoxels()は重すぎて使用に耐えないし、どうしたものかと思っていたところ、以下のサイ…

CO2Mini用C++ライブラリを作った

今年はリモートワークの機会が多かったのだが、どうもパフォーマンスが上がらず困っていた。そこで、CO2Mini(OEM元はこれ)を購入して室内環境の改善を図った。 www.monotaro.com CO2MiniをPCに接続するとHIDデバイスとして認識され、暗号化を解けば温度・C…

Bruno Wen-li は誰か / Who is Bruno Wen-li?

Bruno Wen-li = 市川淳

ROS Noeticのrobot_state_publisherはtf_prefix引数をとらない(2020/11現在)

ROS

ROS MelodicからNoeticにアップデートして手持ちのプログラムを動作確認したところ、動かなかった(rvizの可視化でエラーが出た)のでその原因をメモしておく。 根本原因は、robot_state_publisherパッケージがtf_prefix引数をとらなくなったことである。 こ…

Pythonでループ内でlambdaを使う際には注意しろ

Pythonでlambdaで関数オブジェクトを作り、リストにループで突っ込んだところ、 意図した結果にならず盛大に時間を溶かしたのでメモしておく。 まとめ C++の std::bindみたいにPythonのlambdaを使う場合には functools.partialを使う。 本文 以下のコードの…

WSL2でのROS (Melodic)の初期設定

ROS

ROSを触る機会があったのでまとめておく。 ROSはMelodic、OS はUbuntu18.04、XサーバはVcXsrvを想定。 XサーバにX410を使いたいとき → Using X410 with WSL2 - X410.dev WSL2インストール docs.microsoft.com aptのサーバを日本にしておくとDLが早い。 sudo …

agoutiを使ってスクレイピングするときの余分な表示を消す

Golang + agouti + ChromeDriver + Chromeでスクレイピングをしていたが、プログラム実行時に毎回「DevTools listening on ws://127.0.0.1:2441/devtools/browser/8fd65422-e774-4d35-a0cc-036de4564b9a」のような表示が出て煩かったので、これを非表示にす…

W32TeX でいれたTeXでaamas.clsやacmart.clsを使う

TeX

W32TeX でいれたTeXでaamas.clsやacmart.clsを使おうとしたらパッケージがなく warning/errorが出たのでメモ。 なお、最初はwarningを見落としており、公式のとは違ったフォーマットのPDFファイルが出力されて焦った。 手順 まず、以下のパッケージをインス…

「週末レイトレーシング 余生」を読んだ

前々回記事で紹介した「週末レイトレーシング」の第3巻を読んだのでメモ。 waregawa-log.hatenablog.com inzkyk.xyz 原著: https://raytracing.github.io/books/RayTracingTheRestOfYourLife.html この本まで読むと、確率密度関数を使って重点サンプリング…

「週末レイトレーシング 第二週」を読んだ

前回記事で紹介した「週末レイトレーシング」の第2巻を読んだのでメモ。 waregawa-log.hatenablog.com inzkyk.xyz 原著: https://raytracing.github.io/books/RayTracingTheNextWeek.html 感想としては、効率的に衝突を判定するデータ構造であるBVHのところ…

週末レイトレーシングを読んでレイトレーサを作った

レイトレーシングのやり方が気になったので、以下のページを読みつつレイトレーサをつくったのでメモ。 英語のタイトルは「Ray Tracing in One Weekend」。 著者はNVIDIAの社員とのこと。すごい。 inzkyk.xyz 成果物は以下のリポジトリにおいた。 github.com…

視聴したアニメの管理

たまには雑記でも。 私は、見たアニメを自作のソフトで管理して以下のウェブページ上に公開しているが、それを紹介する。 estshorter.github.io アニメ履歴 こんな感じで、1クール毎にいくつのアニメをみたか(移動平均含む)と、年毎のレポート(視聴数、…

オススメのC++入門書【2020年8月版】

必要に迫られてC++に入門したので使用したテキストをメモしておく。 結論としては、「独習C++新版」か「江添亮のC++入門」がよい。 C++書籍の一覧は以下のサイトが詳しい。 cppmap.github.io プログラミング経験者を対象とした、C++17までカバーしている入門…

C++でのグラフ描画

C++から使用できるグラフ描画ライブラリを探したのでメモ。 matplotlib/MATLAB使いはmatplotlib-cppが一番使いやすいと思う。 ただし、Windows環境において、PythonをAnacondaでインストールしているとpython38_d.libがないためDebugビルドが通らない(38の部…

Eigenをcerealでシリアライズする

自分で若干コードを書かないとEigenオブジェクトをシリアライズできなかったのでメモ。 結論から言うと、C++17環境であれば以下のようにload(), save()を定義してやればよい。 #pragma once #include <cereal/cereal.hpp> #include <cereal/types/vector.hpp> #include <Eigen/Dense> #include <vector> namespace cereal { //E</vector></eigen/dense></cereal/types/vector.hpp></cereal/cereal.hpp>…

conda-forgeにパッケージを追加する手順

mesaをconda (正確にはconda-forgeチャネル)からインストールできるようにしたときの手順をまとめておく。 mesaの詳細は以下を参照のこと。 waregawa-log.hatenablog.com 手順 このサイトに書いてある手順に従えばよい。 具体的には conda-forge/staged-reci…

raspi-autosetupを更新した

以前、ラズパイを音楽サーバー向けにセットアップするビルドスクリプトを書いたが、それを更新したのでメモしておく。 qiita.com 更新点 対応OSをRapsbian strechからRaspbian busterに変更 MPD v0.21.xのビルドに対応(autotools -> mesonに変更されている) …

DotMapを使ってdictにドット"."でアクセスする

tomlから設定を読み込むとき、いちいち`dict["key"]`のようにアクセスするのが面倒になってきた。 `dict.key`のようにアクセスしたいなあと思ってググってたら、DotMapという、まさにその機能を実現するパッケージがあったのでメモしておく。

matplotlibによるシミュレーションの可視化

matplotlibでシミュレーションを可視化する手法は複数あるが、ここではそれをまとめ、私家版ベストプラクティスを述べる。 手法1 plt.pause()を使う example 以下では、シミュレーションモデルを表す変数modelは、適切に初期化されていると仮定する。 import…

Python向け可視化ライブラリの調査【2020年1月版】

OpenAI Gymでは以下のような形で可視化できるが、どう実現しているのか気になった。そこで、Gymを含む強化学習ライブラリや、ロボットシミュレータなどが使用している可視化ライブラリを調査し、どの可視化ライブラリを使うべきかをまとめる。

Pythonシミュレーションにおけるlogging活用のススメ

最近、業務でPythonシミュレーションを行っており、Python標準ライブラリのloggingが便利だったのでメモしておく。