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

メモ:Eclipse CDTでMakefile生成を抑制

Eclipse CDT系のマイコン開発環境であるSW4STM32でMbed OS5のプロジェクトをビルドすると、毎回Makefileの生成が行われ数分を要するということがある。Mbed OS5のソースファイル数が膨大なためである。このMakefile生成を次回から省略するには、プロジェクト…

メモ:MBED_COMPILER_BARRIERでビルドエラー

Mbed OS5 からSW4STM32にエクポートしてビルドすると、mbed_toolchain.hの下記の行で「'asm' undeclared」というエラーが発生する。 #define MBED_COMPILER_BARRIER() asm volatile("" : : : "memory") ビルドに用いるコンパイラの違いによるものである。下…

メモ: 未使用変数の警告を回避するマクロ (C言語)

コンパイル時に未使用変数の警告を出してくれるのは有用であるが、特定の変数が未使用であることを許容したい場合もある。そのような場合に下記のようなマクロを用意しておくと便利である。 #define UNUSED(x) (void)(x) 例えば下記のように使う。これによっ…

Androidアプリのレイアウトを動的に変化

やりたいこと Androidアプリの画面(Activity)のレイアウトの一部を実行時に動的に変化させたい やりかた Activityのレイアウトで、動的に変化させたい部分のLayout要素に名前(id)を付けておく。ここでは hoge とする。 <LinearLayout android:id="@+id/hoge" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> </LinearLayout>…

メモ:adbでプリファレンスを読み出す方法

Androidアプリで設定データを保存するにはプリファレンス(SharedPreferences)を用いるのが簡単で一般的だが、その実体はXML形式のファイルで保存されており、以下の手順で内容を確認できる。たとえば、net.lipoyang.hoge というパッケージ名のアプリの、Piyo…

3月のまとめ

進捗 SOEMのESP32対応 GR-MANGO(β版)でEtherCAT-IPゲートウェイ作成 ESP32でEtherCAT-IPゲートウェイ作成 EtherCAT-IPゲートウェイと通信するPCアプリ作成 イベント等 3/7~ 技術書典 応援祭 3/14 第1回 デジもくオンライン (実験版) 3/21 第2回デジもくオン…

Madgwickフィルタで姿勢角推定

Madgwickフィルタとは? マドウィックフィルタと読む 3次元の姿勢角推定に用いる 加速度、ジャイロ、(地磁気) でセンサフュージョンする 相補フィルタより精度が良く、カルマンフィルタより計算が軽い 計算にはクォータニオンを用いる Arduinoで使えるMadgw…

メモ:クォータニオンと回転行列

回転とクォータニオン 3次元空間での回転をクォータニオンで表すことを考える。回転軸のベクトルを 、回転角を とすると回転を表すクォータニオンは なら この回転でベクトル が に写像されるとするとベクトル をクォータニオン と読み替えてただし、 は の…

メモ:ESP32でmDNS

mDNSとは? multicast DNSの略 ローカルネットワーク内のホストをマルチキャスト転送で名前解決する DNSサーバーが不要になる 通常のDNSと同様、あらかじめIPアドレスを知らなくてもアクセスできる Windows, Mac, Linuxで統一された規格 (WindowsはWindows10…

MPLAB X IDEのコンパイラバージョン指定

MPLAB X IDEで特定のバージョンのコンパイラを指定する方法まとめ。 コンパイラのインストール 下記ページの「Language Tool Archives」にてXC8、XC16、XC32の各バージョンをダウンロードできるので、所望のバージョンをダウンロードしてインストールする。 …

GR-ROSE本「GR-ROSEでいこう!」出しました

中止となった技術書典8に代わってオンライン開催の技術書典 応援祭に「GR-ROSEでいこう!」を出しました。今回の応援祭では電子版のみですが、紙の本もただいま印刷中です。シリアルサーボ、ROS/ROS2、EtherCAT、Amazon FreeRTOSなど盛りだくさんの内容とな…

2月のまとめ

進捗 GR-PEACHのデバッグ環境構築 GR-MANGOの開発環境構築 GR-ROSEの同人誌の組版 SOEMのMbed LPC1768対応 SOEMのMbed GR-MANGO(β版)対応 イベント等 2/15 GR-MANGO プロデューサーミーティング 2/29 技術書典8 → 新型コロナウイルス感染症の影響により中止 …

マイコンでEthernet

マイコンでEthernetを使いたい場合、ハードウェアの構成に3つのパターンがある。いずれの場合もRJ45ジャックにはパルストランス内蔵のもの(MagJackなど)を使用するものとする。 マイコンがEthernetのMACを持たない場合 この場合、SPI接続等でEthernetのMAC/P…

undefined reference to `typeinfo for クラス名'

C++で「undefined reference to `typeinfo for クラス名'」というよく意味の分からないエラーに遭遇した。 undefined reference to `typeinfo for BMI160Class'どうも仮想関数(virtual が付いてる関数)を持つクラスで、仮想関数の最初の親クラスで実体が定義…

make (e=87): パラメータが間違っています。

Mbedのプロジェクトをオンラインコンパイラからエクスポートして、WindowsでEclipse系のオフラインビルド環境にインポートしてビルドすると次のようなエラーが出る場合がある。 make (e=87): パラメータが間違っています。英語環境だと次の通り。 make (e=87…

C#でゲームパッド入力

Windowsではゲームパッド入力はDirectXを介するのでキーボード入力ほど簡単には扱えない。C#アプリでゲームパッド入力を取るにはDirectXをラップしたなんらかの.NETライブラリが必要になる。このようなライブラリには有名なものとして SlimDX と SharpDX が…

LANコネクタの謎

基板取付用LANコネクタ(RJ45)は、LEDやシールドのピンを除くとどれも千鳥足の8ピンなのだが、ものによってピン配置がぜんぜん異なるので要注意。 パルストランスなしのもの パルストランスを内蔵してないものの場合は、ケーブルの線が足に直結しており、ケー…

付け焼刃でTeXを解読

\makeatletter ~ \makeatother 名前に@を含むマクロ名を書く場合、上書きする場合はこれらで囲むお約束。 \def マクロを定義する。TeXでは\def, LaTeXでは\newcommandを使う。 \@makechapterhead#1{ ~ } 章見出しのマクロ。#1は引数を1個取ることを示す。 …

Re:VIEW (LaTeX) でNotoフォントを埋め込む

前記事 Re:VIEW (LaTeX) でのフォント指定について - 滴了庵日録 の続きです。 やりたいこと Re:VIEWのPDF出力でNotoフォントを埋め込みたい。(環境はUbuntu) フォントの入手とインストール Google Noto Fontsのサイトから Noto Sans CJK JP (ゴシック体)と …

Re:VIEW (LaTeX) でのフォント指定について

LaTeXでの和文フォント指定はHTML/CSSやWord等にくらべてすこぶる難解。 前提 フォントの指定 (埋め込み) デフォルトのフォント指定 文書ごとのフォント指定 利用できるフォントマップ フォントマップファイルはどこに存在するか? フォントマップファイルの…

renesas_gr-peach.cfgの修正

症状 e2studioと最新版のOpenOCDでGR-PEACHのデバッグを実行すると、renesas_gr-peach.cfgでエラーが発生する。 GR-PEACHのデバッグ環境構築 (Windows) - 滴了庵日録 最新版のOpenOCDのインストール 最新版のOpenOCDはパッケージ管理のためにNode.jsが必要と…

GR-PEACHのデバッグ環境構築 (Windows)

前提 OpenOCDのセットアップ シリアルポートドライバをインストール OpenOCDのインストール OpenOCDの設定ファイルのコピー e2studioにOpenOCDのパスを設定 プロジェクトの設定 デバッグの構成 ビルドの設定(最適化) デバッグの実行 参考ページ 前提 プラッ…

1月のまとめ

進捗 e2studioの環境導入 SOEMのGR-ROSE対応 SOEMのGR-SAKURA不具合修正 SOEMのGR-PEACH対応 Re:VIEWの環境導入と使い方習得 GR-ROSEの同人誌原稿執筆 (ICSサーボ) GR-ROSEの同人誌原稿執筆 (EtherCAT) イベント等 1/13 AI入門!NVIDIA Jetson Nano学習&推…

メモ: PDFのグレースケール化

PDFをグレースケール化するには下記のコマンドを実行する gs -q -r600 -dNOPAUSE -sDEVICE=pdfwrite -o output.pdf -dPDFSETTINGS=/prepress -dOverrideICC -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -sColorConversionStrategyForIma…

PNGやJPEGの解像度(DPI)の変更

ふだんはあまり気にしないことだが、PNGファイルやJPEGファイルには物理的な解像度の設定値を持っている。PCの画面表示に比べて印刷では高い解像度の画像が求められる。言うまでもなく、同じピクセル数の画像でも高解像度の設定のほうが物理的な寸法は小さく…

Re:VIEWメモ

(1) 環境のインストール (on Ubuntu) (1.1) Re:VIEWのインストール (1.2) TeX Liveのインストール (1.3) md2reviewのインストール (2) Re:VIEWのプロジェクト作成 (3) md2reviewの使い方 (4) PDFの生成 (5) RE:Viewソースの編集 (6) RE:Viewの設定 (6.1) con…

オブジェクト初期化子

C#って、 class Hoge { public int a; public int b; public int c; } というクラスに対して var hoge = new Hoge() { a = 1, b = 2, c = 3 }; という初期化の書き方ができるらしい。いま知った。 オブジェクト初期化子というらしい。 var hoge = new Hoge {…