Azure PipelinesのWindows VM(vs-win2016),GradleでLaunchableにデータを送る。

公式ドキュメントに書いてある通りだけれど、実際に書いてみたのを残しておく。 docs.launchableinc.com Javaだし、Windows独自の設定はPATHを通さないといけないくらいだった。 variables: LAUNCHABLE_TOKEN: 'v1:xxx/xxx:xxx' pool: vmImage: 'vs2017-win2…

WSL2でROSをやるときの覚書

Raspberry Piはやっぱり遅いし、ということでWSL2に環境を作り始めた。 USBはつながらない USBカメラなどは直接認識できない。 別のサーバやラズパイなどにノードを立てて通信させれば使えるかもしれない。 じゃあ、WSL2でやる意味はというと基本はシミュレ…

noetic/ROS、libuvc_cameraでUSBカメラを使う

ROS

ROSでUSBカメラを使うにあたっての覚書。 現状、メンテナンスされているUSBカメラのnodeはlibuvc-cameraの様子。 uvc-cameraはnoeticをサポートしてないし、usb-camはnoeticでも動くけどメンテされてないらしい。 そのため、libuvc-cameraを使っていく。 カ…

ORB SLAM3をnoetic/ROSでビルドして動作確認する。

ORB_SLAM2を試せたと思ったらORB_SLAM3もみつけた。 github.com Raspberry Pi 4B 4Gだとビルドできなかったので、 8GメモリのボードにUbuntu 20.04をインストールした環境で試した。 git cloneしてビルドするとエラーがいくつかでる。 githubのissueにも報告…

Ubuntu 20.04, noetic/ROSで、ORB_SLAM2をビルドして動作確認する。

ma38su.hatenablog.com ORB_SLAM2のビルド、ビルドできず困ってたが、そもそもROS2ではなくROSだったという、、、そりゃ無理だ。 Ubuntu 20.04に対応しているROS、Noeticを入れる。 http://wiki.ros.org/noetic/Installation/Ubuntu とりあえずビルドしてみ…

ORB_SLAM2をUbuntu 20.04でビルドする。

Visual SLAMを試してみたいなーと。 ma38su.hatenablog.com 現状、そこそこ有力っぽいORB_SLAM2を試してみる。 オリジナルからgit cloneしても最近の環境ではエラーでビルドできない。 以下で公開されているForkでは、Ubuntu 20.04でもビルドできるようにな…

Visual SLAMについて

気軽にやりたいので単眼カメラを使う前提で、ざっと調べた。 ORB-SLAM 特徴点ベースらしい。 http://webdiis.unizar.es/~raulmur/orbslam/ https://github.com/raulmur/ORB_SLAM https://github.com/raulmur/ORB_SLAM2 LSD-SLAM 画素を直で使うらしい。 http…

低レイヤーのメモ

アセンブラ 定義EQU 0x0A ラインフィード(LF)、カーソルを一行下げる 0x0D キャリッジリターン(CR)、カーソルを左端に戻す 基数のPrefix 0b00 2進数 0o00 4進数 0d00 8進数 0x00 16進数 データ定義 DB: Define Byte, 1byte DW: Define Word, 2byte DD: Defin…

Raspberry PiでのUbuntu 20.04 LTSの初期設定

16GBのSDカードを対象に、Ubuntu 20.04.2 LTSをRaspberry Pi Imagerでインストールして以下の設定をする。とりあえず16GBあれば最低限のシステム構築はできている。RaspbianはCtrl + Alt + Xでいろいろ初期設定できたが、Ubuntuのときはがんばって設定するし…

ESP32で不揮発なフラッシュメモリを利用する。

ESP32のフラッシュメモリにおいて、不揮発なデータ(電源オンオフやプログラムの再ロードでも消えない)を書き込む方法について調べるといくつか見つかるので、違いを整理しておく。 ESP32において、不揮発なデータを書き込める領域は2か所あるみたい。この…

ESP32(M5)でmDNSからIPを取得する

ESP32のライブラリでは、直接、mDNSのURLを指定してもアクセスできない。 ただ、mDNSを利用するためのライブラリは提供されているので、IPを解決してからアクセスすればよい。 例えばraspberry.localのIPを取得したい場合は以下のような感じでできる。 #incl…

M5Stack/M5StickC/ATOMを使うときの覚書

CPU 省電力設定のためには、CPUの周波数を抑えるのが有効だが、80MHz以上に設定しておかないと通信できない。デフォルトは240MHzです。 setCpuFrequencyMhz(80); バッテリー残量 基本はバッテリー電圧で残量を判断する。 自分はパーセント表示にこだわらない…

M5Stack Core2で180度計測する2D Lidarっぽいものを作る

公式のサンプルはUIFlowだったので、Arduino互換のC++に書き直した。 だいぶ雑だけど、雰囲気はでている。が、実用は難しいかな。

「予算1万円でつくる二足歩行ロボット」をやってみた。

3月末くらいからはじめて、4月末には終えた。 途中2週間くらい基板待ちだったりしたので、実働は2週間くらいか。 短期間でCADからソフトまで一通り経験できるのは、とてもよかったと思う。 ただ、ところどころ超ハードだったので、人には勧めづらいなーと。 …

Arduinoで電気回路再入門

少し前だけど、基本的なものをいくつか作って遊んでみたので、まとめておく。

C/C++メモ

OS自作過程でのメモ。適宜追記する。 文字列 C++はリテラルの前の接頭語で文字列の種類が変わる。 ワイド文字列(16 ビット文字コード) unsigned short int L"Hello, World" utf8文字列 u"Hello, World" 参照型 参照型が関数の引数の場合、呼び出し元はポイン…

グローバルインストールせずにexpress-generatorを使う

express-generatorは、パッケージ名とコマンド名が異なるので、npxでインストールせずに使うのがちょっとめんどくさい。 npx --package express-generator -- express -h ただ、インストールするか?と確認されるので、どこかにはインストールされているのか…

M5StickCからサーバにPostでJsonを送り続ける。

M5Stackでもほとんど同じでいける。 とりあえず、センサーの値をサーバに残したい場合とか。 とりあえずとはいえhttpsにはしないとなー。 #include <M5StickCPlus.h> #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> const char* ssid = "xxxx"; const char* pass = "xxxx"; const int capaci</arduinojson.h></httpclient.h></wifi.h></m5stickcplus.h>…

アセンブラとかレジスタとかのメモ

OS自作用のメモ。 エンディアン x86_64はリトルエンディアン 汎用レジスタ x86_64の汎用レジスタは次の16個 RAX RBX RCX RDX RBP RSI RDI RSP R8 R9 R10 R11 R12 R13 R14 R15 バイト数の異なる別名(p.71) 64bit 32bit 16bit 8bit RAX EAX AX AH, AL RBX EB…

WSLに構築したサーバへ外部の端末からアクセスする。

結論からいえば、ホストのWindowsのアドレスとポートへのアクセスをWSLのアドレスとポートを指定して、ポートフォワーディングすればよい。(する必要がある) ここでは、ホストのWindowsのポート3000をWSL上のポート3000にポートフォワーディングするとする…

M5Stack Grayのノイズがうるさい

スピーカーをOFFにしておかないとノイズが出てしまうみたいだ。 void setup() { dacWrite(25, 0); } M5Stack、GPIO使おうとするとなかなかめんどい。

電子回路学習メモ

IC 一般的なICは C-MOS IC。昔はバイポーラICなどもあった。 定電圧電源(安定化電源) 負荷に流れる電流によらず、電圧が一定になるようにする電源 デジタル回路で電源として使われる。 一般の電源は、電流が増えると電圧が下がってしまうが、電圧が低下し…

ELEGOO NANOを試す。

これまでは、Arduino互換ボードは、ELEGOO UNO R3を使っていたけれど、 同等性能なのに、小さくて、スプレッドボードに直接させて、価格は1枚500円を切る、ELEGOO NANOが気になっていた。 ちょうど追加でほしくなったので、今回はNANOを試してみた。 箱もち…

簡易のオシロスコープを試してみる。

電子工作を始めてから、だんだんほしくなってきてしまった。 性能を求めなければ、3000円くらいからでも買えるのだけれど、 Arduinoで簡単に作れるということなので、一度作ってみる。 www.iizuka.kyutech.ac.jp 公式では1μFのコンデンサと100KΩの抵抗でトリ…

ProcessingでSerialを読み込む

ArduinoとかではデバッグのためにSerial通信を使ったりすることはよくあるが、 このSerial通信を簡単に見える化するのにProcessingがかなり便利。 とりあえず、Serial通信を読み込んで表示するのは以下でできる。 import processing.serial.*; Serial port; …

サーボモータSG90をセンター90度に調整する

SG90は安価で入手できるサーボモータ。電子工作するとお世話になる。 ちなみにサーボモータというのは、制御信号(外部からのPWM入力)によって回転位置や回転速度を制御することができる機能を有するモータのこと。 指定した位置や速度になるような制御は、…

M5StackでSpriteを使ったダブルバッファリングで描画のちらつきを改善する

M5.LcdのAPIを直接使って画面を描くと、画面の書き換えによっては画面がかなりちらつく。 ちらつきを緩和するにはダブルバッファリングするのがまぁ定石で、M5StackではSpriteを使うとできる。 ただ、Spriteを使った簡単なサンプルがネットではあまり見つか…

M5Stack Core2はPlatform IOで開発できた。

M5Stack Core2のビルドとかアップロードがPlatformIO (PIO)からできた。 ただ、ちょこちょとはまったのでメモを残しておく。 記憶の範囲での手順は以下。 VSCodeにPlatform IO IDEをインストールする。 詳細な手順を忘れた。 Windows 10 Homeだが、Pythonの…

Processing用 Matrixクラス

ちょうどいいライブラリってなにかあるのかな。。。 4x4行列とベクトル class Vector4 { float v0, v1, v2, v3; Vector4(float v0, float v1, float v2, float v3) { this.v0 = v0; this.v1 = v1; this.v2 = v2; this.v3 = v3; } } class Matrix4 { float m0…

Arduino Uno R3でEigenを使いたい。

EigenをArduinoで使うにはEigenArduinoが使えるらしい。 インストールの手順自体は簡単ではあるが、Arduinoに慣れていないとつまずいた。やってみた手順をメモしておく。まだ途中使えていないので、あしからず。 インストール手順 1. EigenArduinoをインスト…