ROBOTIS Dynamixelシリアルサーボの制御

Dynamixelについて ROBOTIS Dynamixelはロボット用シリアルサーボのシリーズ。 Dynamixel通信プロトコル プロトコルはV1とV2があり、互換性はない。 Besttechnology - Dynamixel通信プロトコルV1マニュアル (日本語) Besttechnology - Dynamixel通信プロトコ…

DOS窓でtouchコマンド

DOSにはtouchコマンドがないので、下記のようなバッチファイル touch.bat を作成して代用する。 @echo off if %1. ==. goto end if not exist %1 ( type nul > %1 ) else ( copy /b %1+,, %1 > nul )

Processingで魚眼

魚眼のことがちょっとだけ分かった。Processingたのしい。 魚眼でレナさん メモ スケッチ PImage srcImg; // 元画像 PImage dstImg; // 処理後の画像 int W,H; // 画像のサイズ int R; // レンズの半径 int D; // レンズの中心から投影面までの距離 void set…

専門外分野のメモ

JavaScriptに関するメモ 高速化について 重いスクリプトの<script>要素は、<head>要素内でなく、<body>要素内末尾に書いた方がページの表示が速い。 JS MinifierとかYUI Compressorとかでコードの圧縮(コメントやら空白やら改行を除去)すると読み込み時間短縮。 evalは処理コスト</body></head>…

C#で親Formからデータを受け取る

Form1からForm2を開いて、Form2でForm1のデータを受け取る方法。 (ownerなんて引数があるのを知らずに、いつも別途渡していた orz) Form1からForm2を開くとき、自分自身を引数(owner)として渡す。 var form2 = new Form2(); form2.ShowDialog(this); Form2で…

STM32のRTCの落とし穴

STM32のRTCを使ってみてハマった落とし穴などについて書く。 環境は、STM32F767ZI (Nucleo-F767ZI) + HALドライバ + CubeMX + IAR EWARM 以下では単にSTM32と書くが、STM32F767ZIでしか試していない。 やや不可解な内容も含むので誤りがあればご指摘ください…

Processingネタ

ProcessingでBox2D Box2Dとは Box2Dはゲーム用の2D物理演算エンジン。 C++, Java, C#, Python, JavaScript, ActionScriptで利用できる。 Processingでも利用することができる。 Processingへの導入方法 [スケッチ] > [ライブラリをインポート] > [ライブラリ…

C言語のプログラムにLuaインタプリタを組み込む

ここではWindows/VC++環境で、C言語のプログラムにLuaインタプリタを組み込んでみる。 Luaライブラリのダウンロード Lua Binariesより、Windows用のライブラリをダウンロードする。 32ビット版ならlua-x.x.x_Win32_dllw4_lib.zip 64ビット版ならlua-x.x.x_Wi…

ARMインラインアセンブラ

IAR EWARMで動作確認。GCCインラインアセンブラ構文を採用しており、他でもだいたい同じっぽい。VC++でのx86のインラインアセンブラに比べるとちょっとC言語の変数にアクセスする記法が分かりにくいかも。 基本 VC++と同様に__asmキーワードを用いてインライ…

C#とC++のラムダ式

ラムダ式(lambda expression)とは 要するに名前のない関数 (無名関数、匿名関数)、その場で書く関数 (関数リテラル) 値と同じように変数に代入したり関数に渡したりできる。 C#とC++では微妙に書き方が違う。 C#は (引数) => {処理} C++は [キャプチャ](引数…

画像の回転

Processingって、ちょこっと画像処理の実験とかするのにちょうどよさげ。 ためしに簡単な画像の回転をやってみた。 回転行列 画像の回転の基本は高校の数学で習う回転行列。 え、今は高校で行列習わないの??? それはアカンやろ! 画像を回転するスケッチ(…

Processingやってみた

Processingとは Javaベースのプログラミング環境 Javaベースだけどクラス原理主義じゃない簡単な言語 ArduinoにそっくりなシンプルなIDE (というか、Processingのほうが先) グラフィックの描画が得意 Processingの良さ (※個人の感想です) 余計なしきたりとか…

C++11のスマートポインタ

前提 C++のnewはJavaやC#のnewのようなつもりで気安く書いてはいけない。 なぜならC++には言語レベルではガベージコレクタが無い。 newしたオブジェクトは自己責任でdeleteしなければならない。 自動解放の仕組みをライブラリレベルで提供しているのがスマー…

いまさらC#でasync/await

いまいち理解が定着してなかったのでおさらい。 asyncなメソッドからTaskを起動してawaitする。 awaitするといったんそのメソッドからリターンする。 タスクが完了するとそのメソッドに戻り、awaitの続きから処理される。 つまり、途中で中断/後で再開するの…

x86インラインアセンブラ

VC++では、__asmキーワードを用いてx86のインラインアセンブラのコードを書くことができる。 メモ C言語の変数名がそのまま使える。 語順はギブミーチョコレート語順。ARMと同じ。モトローラ系やH8とかとは逆。 ARMと違ってレジスタ⇔メモリのやりとりもmov命…

transformの行列

HTML5のCanvasのtransformメソッドの6つの引数は、アフィン変換行列を表す。 context.transform(a,b,c,d,e,f); 平行移動 右にΔxピクセル、下にΔyピクセル 拡大・縮小 x軸方向にs倍、y軸方向にt倍 回転 時計回りにθ回転 蛇足 いうまでもないが、それらの合成…

ARアプリの作り方メモ

AndroidでARアプリ的なものを作るときのためのメモ やるべきこと カメラ映像の表示 オーバーレイ表示 センサーから端末の向きを取得 現在位置の取得 ※ マーカーについては扱わない。マーカーを使う場合、ARToolKitやOpenCVといったライブラリを使用する。 カ…

専門外分野のメモ

Web API 画像処理系 Google Cloud Vision API : 画像認識 (機械学習) Amazon Rekognition : 画像認識 (機械学習) detectFace(); : 顔検出 グラフ系 Google Chart API : グラフ作成、QRコード生成 Cacoo : フローチャート等の作成 テキスト処理系 Yahoo!テキ…

専門外分野のメモ

Node.js サーバーサイドJavaScript環境 Linux, Mac OS等のUnix系プラットフォームで動作する node hoge.js みたいにして実行 入出力はすべて非同期でシングルスレッド上で処理される httpモジュールを使ってHTTPリクエストに応答する child_processモジュー…

Arduinoのボード別ソースの場所

Arduinoのボード別のライブラリソースは、通常は下記の場所にある。 (Winsows10の場合) C:\Users\ユーザ名\AppData\Local\Arduino??\packages\arduino\hardware\この場所にアーキテクチャごとにフォルダを切って置かれる。 avr\ sam\ stm32f4\

アルミの種類

ひとくちにアルミと言ってもいろいろある。 純アルミ (1000系) 軟らかい。軟らかすぎてきれいに切削しにくい。(削るとネットリした手ごたえで、粘り気がありキレが悪い。) ホムセンで売ってるアルミ板は純アルミ系のA1050が多い。1mm厚くらいなら万能バサミ…

フォトセンサのメモ

もうライントレースとか作ることないかもしれんけど、昔のメモ。 フォトレクレクタIC LEDとフォトダイオードが1つになった4ピンのIC。すごく小さいが、フォトダイオードの出力には外付けで増幅回路が必要になり、ちょっと面倒。 増幅回路内蔵フォトIC フォト…

FM音源YMF825メモ

FM音源YMF825とは とても便利なヤマハのFM音源チップ。 SPI I/F DAC/アンプ内蔵 4オペ16音ポリ すぐに使えるモジュール基板が市販 akizukidenshi.com github.com Arduino用簡易ライブラリ Arduinoで使える簡単なライブラリを作成した。 github.com 作例 これ…

Androidアプリでバイブレーション

AndroidManifest.xmlにパーミッションの追加 <uses-permission android:name="android.permission.VIBRATE"/> アクティビティでVibratorを取得 import android.os.Vibrator; public class MainActivity extends Activity { private Vibrator vib; @Override public void onCreate(Bundle savedInstanceState) { super.onCr</uses-permission>…

仮想関数とクラスのメモリサイズ

まず、次のC++のコードを見てください。 #include<stdio.h> class ClassA{ int a; int f(); int g(); }; class ClassB{ int a; virtual int f(); virtual int g(); }; int main(void) { printf("sizeof(ClassA) = %d\n", sizeof(ClassA)); printf("sizeof(ClassB) = %</stdio.h>…

独断と偏見で選ぶ五大Arduino系ボード

いろいろ種類が増えすぎたArduino系マイコンボード。僕がよく使うものを中心にチョイス。(かなり偏ったチョイスです。) Arduino UNO : 最初の1台に。リファレンス用に。 GR-SAKURA : 実戦むき。UNOサイズの高性能ボード。 Arduino Pro Mini : ちっちゃいも…

古いEagleのダウンロード

Eagle7以前のライセンスを持っていて、古いEagleを再インストールしたいとしても、すでに古いバージョンのEagleのインストーラへのリンクは無くなっています。 現在、古いEagleのインストーラを提供する一時的なファイル置き場が設けられています。 ftp://ft…

Googleに古いコンテンツの削除依頼

自分のサイトの削除ずみコンテンツがGoogleの検索結果に表示されてしまい、削除してほしい場合があります。 誤った内容だったので削除した場合 個人情報などを誤って公開してしまったので削除した場合 robots.txtやnoindexを忘れて誤ってGoogleに登録されて…

Windowsでドットファイルを作る

Windowsでドットファイル(ファイル名が . からはじまるファイル)を作ろうとすると、エラーメッセージが出て作れません。 そういう時は、ファイル名の最後に . を入力します。つまり、".hoge"というファイルを作りたいなら".hoge."と入力します。すると警告メ…

mbedのプロジェクトにmbed-srcをインポートする

mbedのwebコンパイラでプロジェクトを作成すると、mbedライブラリ(歯車のアイコン)はドキュメントのみでソースが含まれない。 ソースをインポートするには以下のようにする。 mbed-srcから import into Compiler をクリックし、Target Pathでインポート先の…