うごくものづくりのために

技術的な備忘録がメインです。

IoT窓センサーを作ることにした

お部屋のIoT化を進めています。 引っ越しして部屋が1Fになったため、防犯対策が喫緊の課題です。というわけで、IoT窓センサーを作ることにしました。 窓の開閉および窓の錠の開閉を検出して、何かしらの形でインターネットに通知を送る、というデバイスです…

ABC169

2WAで5完でした。 ABC参加4回目、初めての5完、そして初めての水色パフォが出ました。精進の結果が表れていて素直に嬉しいです。 一応茶色コーダーにもなりました。 ABCに参加するたびにパフォーマンスの色が1つずつ上がっているので、次は青パフォですね!…

ABC168

4完でした。 ABC参加3回目にして、初めて緑パフォ出ました。嬉しい。 A問 A - ∴ (Therefore) 文字列として受け取って、最後の1文字を切り出して判定する。 n = input() c = int(n[-1]) if c == 3: print('bon') exit() elif c == 0 or c == 1 or c == 6 or c…

ABC167

3完でした。 A問 A - Registration t[0:-1] == s という簡単な条件式でOK。 2分ぐらいで提出。 s = input() t = input() if t[0:-1] == s: print('Yes') else: print('No') B問 B - Easy Linear Programming 1, 0, -1 の順番でK枚になるまで取ればいいです。…

競技プログラミング始めました

以前から興味のあった競技プログラミングの世界に足を踏み入れてみました。 ふと思い立ってAtCoderのページへ行き、初心者向けの問題集 AtCoder Beginners Selction に一通りトライ。 慣れない標準入力の取り扱いを覚えながら、B問題までは自力で解けました…

UDP Multicastが届くことをサクッと確認する方法

iperf というツールを使います。 Ubuntu 18.04 だとaptで入りました。 sudo apt install iperf iperfを入れたあと、以下のコマンドで確認できます。 $ iperf -s -u -B <multicast addr> -p <port> -i 1 マルチキャストが受信できていれば、1秒間隔で受信データのサイズ等のデータが</port></multicast>…

WSL2 + VSCode + Dockerで気持ちの良い開発環境を手に入れる

皆さんお待ちかねのWSL2がいよいよ2020年4月のアップデートで来ます。 WSL2の詳細は各自調べて頂きたいのですが、個人的にはDockerが動くようになることが一番大きな嬉しさです。 Dockerが動くとなると、 VSCode Remote Containerを使って、Windows10上のVSC…

ワイヤレスなノイズキャンセリングイヤホンを聴き比べた

愛用していたイヤホン Sony WI-1000X が壊れました。 左耳から音が聞こえません。 ノイズキャンセリング付きのワイヤレスイヤホンで、音も良くとても気に入っていたのですが残念です。 というわけで、秋葉原の e-イヤホンに行き、ワイヤレスなノイズキャンセ…

ファーストキャビン 羽田空港第1ビルに宿泊した

ハイクオリティカプセルホテルとして有名なファーストキャビン。その中で一番有名であろうファーストキャビン羽田に宿泊しました。 誰もいない羽田空港 個人的にカプセルホテルが好きで、今までいくつか利用してきました。あの秘密基地感がたまらないんです…

LinuxのVSCodeで、Xmodmapでのキーアサイン変更が反映されなくてハマった

UbuntuでLinux版のVSCodeにVim拡張を入れて使っていたところ、 Xmodmapでのキーアサイン変更が反映されなくてハマりました。 結論: settings.jsonに以下を追記する "keyboard.dispatch": "keyCode" VS Code no longer respects remapped escape key using xm…

dockerコンテナ内で動作するGUIの画面を他のコンテナで表示する方法

ほとんど需要ないと思いますが…。 xserverが動作しているコンテナ(コンテナA)に、GUIソフトが動作するコンテナ(コンテナB)を接続して、コンテナB上のGUIウィンドウをコンテナA上に転送します。 方法 まず、以下の2つを用意します。 コンテナA: GUIが動作…

Ubuntu 16.04 で ワイヤレスネットワークカード Intel Dual BandWireless-AC 8265 が動かなかった話。

結論 Ubuntu16.10なら動く。 が、サポート切れてるのでやるべきじゃない。 いきさつ 諸般の都合があり、今年買った ThinkpadにUbuntu16.04を入れることになりました。 入れたのはいいんですが、ネットワークカード(Intel Dual BandWireless-AC 8265)が全く…

中華製のやっすいロジックアナライザを試してみた。

以前amazonで中華製のやっすいロジックアナライザを購入していました。 24MHz 8CH で1150円(!?)という代物。本当に動くのか。 環境のセットアップから、最終的にはUARTのプロトコルアナライザを動かすところまでやってみたいと思います。 環境 Windows 10 開…

DeepLearningの勉強メモ

明けましておめでとうございます。 正月休み暇なので、「人工知能でなんとかなりませんか」おじさんに対抗できるよう理論武装しておきたいと思います。 なお、この記事は自分用のメモであるため、読んでもあまり参考にはならないかと思います。。。 書籍「ゼ…

Orange Pi 比較表を作った

OrangePi、いいですよね。安い。 が、買おうと思ってもどれがどれだかよくわからなかったので、比較表を作りました。 (公式からデータコピペしてきただけですが、、、) docs.google.com それだけ。

はじめまして、ROS2

めでたくROS2がリリースされたので、Macにインストールして遊んでみようと思います。 環境 OS : Mac OS Sierra 10.12.6 CPU : Core i5 2GHz RAM : 8GB インストール 以下のページを参考にしながら進めます。 github.com 事前に必要なもののインストール ROS2…

Pythonのbytesの生成に関して

勘違いしていたので備忘録。 bytes(255) は b'¥xff' とはならず、 b'¥x00¥x00¥x00 ... ¥x00' と、255個の¥x00で満たされたbytesになる。 a = 255 a.to_bytes(1, "big") とすれば b'¥xff' が得られる。 参考 python3ならintとbytesの変換が楽勝になる - Blank…

Python pandasのメモ

Python pandasが難しいので、メモ。 データ構造 Series : 1次元のデータ DataFrame : 2次元のデータ 時間系 Time Series / Date functionality — pandas 0.20.3 documentation TimestampとPeriodの2種類がある。 Timestampは、ある時点を表す。 Periodは、あ…

Trelloのカード移動をSlackに通知してくれるbotを作った。

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(1) - うごくものづくりのために Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(2) - うごくものづくりのために 上記の記事で作成したシステムを整理して、b…

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(2)

前回 の記事で、py-trelloでwebhookの登録をし、Flaskでサーバを立ててTrelloの通知を受け取ることができました。 今回は、拾ってきたTrelloの通知情報をslackに投げるところを作りたいと思います。 ゴール Trelloのウェルカムボードのカードの移動を、Flask…

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(1)

弊チーム(https://github.com/SSL-Roots/Roots_home/wiki)では、タスクの管理にTrelloを使っています。 また、最近チャットツールとしてslackを導入したので、チームの活動に関する全情報をslack上に集約したいと思っています。 そこで、TrelloでタスクがDon…

MakerFaireTokyo2017に出展しました。

8/5,6に行われた、MakerFairTokyo2017に、RoboCup SSLチーム Rootsとして出展してきました! はじめに、展示に足をお運び頂いた皆様にお礼を伝えたいと思います。 展示を見て笑顔になって頂いたり、「すごいねー」と子供たちが食いついてくれたりしたことが…

GoogleProtocolBuffer(C++)で、NULL文字(/0, 0x00)を含むデータをパースする方法

GoogleProtocolBufferのC++版で、NULL文字を含むデータをパースする際にハマったのでメモ。 socket通信のrecv()で受け取ったデータをParseFromString()でパースしようとした際、 データに"0x00"が出現するとヌル文字(\0)だと解釈して、パースが正常終了しま…

一つのコールバック関数に複数のSubscriberを割り当てる方法

ROS

タイトルの通りです。 別々のTopicをSubscribeしている複数のSubscriberで、同じコールバック関数を呼び出す方法です。 準備 rostopic pub -r 10 chatter_0 std_msgs/String "message of chatter 0" & rostopic pub -r 15 chatter_1 std_msgs/String "messag…

第49回 情報科学若手の会 に参加してきた

情報科学若手の会 情報科学若手の会という、情報系の若手(?)が集う勉強会に参加してきました。 結構歴史のある勉強会で、バックボーンに情報処理学会がいる、割とちゃんとした勉強会です。 とはいえ、想像していたよりもフランクな雰囲気で、あの空気感で…

rosコード(C++, Python)から現在存在するトピックのリストを取得する方法

C++ c++ - ROS - get current available topic in code (not command) - Stack Overflow roscpp: ros::master Namespace Reference ros::master::V_TopicInfo master_topics; ros::master::getTopics(master_topics); for (ros::master::V_TopicInfo::iterat…

「rostest」 の使い方

rostest - ROS Wiki rostestを使ううれしさ launchファイルと同様の手法で多数のノードを起動したりパラメータを設定した後に、ユニットテストを走らせることができる C++ならgtest, Pythonならunittestによって作成したテストコードを実行可能 使い方 roste…

SSL Referee box のマルチキャストアドレス設定

GitHub - RoboCup-SSL/ssl-refbox: RoboCup Small Size League Referee Box Refboxのディレクトリにある、referee.conf に各種コンフィグが保存されています。 ssl-refbox/referee.conf at master · RoboCup-SSL/ssl-refbox · GitHub (Verの古いやつだと、re…

【メモ】decision_making パッケージの rqt_decision_graphが動かない問題

plugin.xmlに設定されているパスが間違っている <library path="src"> これを <library path="src/rqt_decision_graph"> こう修正 あと、間違ったパスの状態でrqtを起動すると間違ったパスの情報がrqtに残ってしまうらしいので rm ~/.config/ros.org/rqt_gui.ini rqt これで削除</library></library>

navigationスタックで学ぶpluginlibの使い方

navigationスタックはpluginlibによる実装がなされていて、拡張しようと思ったらpluginlibの知識が必要ということなので、勉強しています。 今回は、navigationスタックのソースを追っかけていきながら、pluginlibの基本的な使い方について解説します。 自分…