読者です 読者をやめる 読者になる 読者になる

4月後半と GW の目標・マイルストーン

ついに来週から GW に突入です.自分の予定はと言いますと,,,特段旅行に行くわけでもなく,ロボットと向かいあう事になるかと思います.昨年の経験からすると, GW とお盆休みが受験ならぬつくばチャレンジの天王山になるはずなので,なんとか追い込んで…

Zed Stereo Camera 事始め2

前回のエントリからの続きです.前回のエントリまでで,とりあえずサンプルコードが動くところまではできたので,今回はいよいよサンプルコードを実行します. 提供されているサンプルコード一覧 ZED_Camera_Control : カメラの制御変数変更や簡単な動作確認…

Zed Stereo Camera 事始め1

ということで,足回りの目処が立ったので Zed Stereo Camera の環境構築にとりかかります.ZED Stereo CameraStereo Camera に付属している SDK に視差マップを生成してくれるソフトが付いているのですが,どうやらこれが NVIDIA の GPU がないと動かないみ…

Linux コマンド ldd, ldconfig

Linux のコマンドのお勉強です.(すごい基礎的で恐縮ですが...)ldd : 共有ライブラリへの依存関係参照. 使おうとしている実行ファイルが共有ライブラリを用いている際,実行時に動的リンクされます.つまり,実行時にメモリに読み込まれて使われます.…

ROS Teb Local Planner + Arduino Due + Rotary Encoder

ということで,前回のエントリから早くも一週間... ようやくエンコーダ周りの基板作成・マイコン実装変更・ROS対応が完了しました.長かった.... エンコーダの解像度が上がったことで,低速での制御が可能になったことと,オドメトリの精度がアップし…

Arduino Due + Rotary Encoder

前回のエントリから2週間弱が経過してしまい,,,当初の目標をちょっとデコミットしてしまいました...がそんなときもあります.ただ,何もやっていなかったわけではなく,,,あらたな問題を解決しています(笑) 実は,TebLocalPlannerの軌道生成に使…

つくばチャレンジ2017への参加のお勧め

ついに来てしまいました....そうですつくばチャレンジ2017の参加募集開始です. 昨年SI2016に参加し,つくばチャレンジ2016の取り組みを終えてから早くも半年...それなりに前もって動いては来ましたが,まあなかなか思うようには進まな…

Gauss Newton 法,Levenberg-Marquardt 法 in Python

ちょっと前回の投稿からアップが遅れてしまいましたが,さぼっていたわけではなく... 引き続き Teb Planner のパラメータ調整と解析をしてたんですが,もう少し詳しく理解したかったんでソースを読んでみました. で,気づいたんですが,LSD SLAM にして…

今月のやること.ROS Mapping & Localization

早くも3月第三週目に突入してしまったのですが,今月のやることをリストアップしておきます.先月の大きな目標として,Odometryフレーム内でロボットの制御を動かすという目標を作ったのですが,teb_local_plannerを使うことである程度目処はたったかなと思…

ROS Navigation Stack ~ Teb Local Planner ~

座標指示でロボットを制御することを目標に,ROSのNavigation Stackを用いて軌道生成・制御を使用としていたのが前回のエントリだったのですが,実際にロボットを動かしてみて驚愕の事実が発覚... 車タイプのロボットの制御には対応していない! 車タイプ…

ROS Navigation Stack ~ DWA Local Planner パラメータ調整1 ~

先日の投稿で,cmd_velをつかってロボットが動かせるようになった様子をアップしましたが,今日はついにmove_baseを使ってロボットを動かせるようにします.すでにちょっと試してみて,前進はできるようになったのですが曲がる動作がどうもうまくいかず..…

ROS Navigation Stack ~ Arduino Controller ~

Arduino, ROSの制御周りの実装・リファクタが終わりました. 制御にはPIDを用いましたが,等速直線運動,定常円旋回に関してはそこそこうまく動くようになりました. ちょっとギクシャクしてしまってますが,これは制御器の設定が悪いせいではなく,ハードの…

今月のやること.ROS Navigation Stack

おはようございます.なんと,はや3月...最近時間がたつのが早いです. さて,今月のロボット目標です.2月中にROS Navigation Stackを動かしてみる予定でしたが,案の情遅れてしまいました.OdometryやArduino周りのコードをリファクタしてたら思いの…

ROS Navigation Stack ~ Arduino Controller ~

おはようございます.前回の投稿から一週間以上経過して,早くも当初の目標をデコミットしてしまいましたが,,, なにもしていなかったわけではなく,久々にArduinoのコードを整理していたらわけがわからなくなってしまい,,,,整理ついでにリファクタリ…

ROS Navigation Stack について3 ~ Goalを送信するノードの作成 ~

move_baseとodometryに関しては整ったので,ここではmove_baseに対してゴールを送信するノードを作成します. 引用:http://wiki.ros.org/ja/navigation/Tutorials/SendingSimpleGoalsただ,今回作成したシステムでは,オドメトリ情報がでたらめなので,実際…

ROS Navigation Stack について2 ~ Odometry生成ノードの作成 ~

先ほどのmove_base生成のエントリに引き続き,Odometryを生成するノードを作成します.コードはほぼROSのチュートリアルのままです.引用:http://wiki.ros.org/navigation/Tutorials/RobotSetup/Odom 1. Odometry生成ノード用のパッケージ作成 Odometry生成…

ROS Navigation Stack について1 ~ move_baseの起動スクリプト作成 ~

今日はROSのチュートリアルに従って,move_baseに対してシンプルな移動コマンドを発行するところをやりたいと思います. が,まずはmove_baseを必要なパラメータを提供しつつ起動してあげないといけないので,move_baseの起動スクリプトを作成します. 1. tu…

ROS Navigation Stack について1

以下,ROS Navigation Stackに関して調べたことをまとめておきます. マッピングを実装して使えるようになるには,何らかのセンシング手段が必要で,まだちょっとハードルが高そうなので,ひとまずオドメトリのみを用いたロボットの自立制御ができるようにし…

今月のやること.ROS Navigation Stack

おはようございます.昨日宣言した通り,これから毎月/毎週の目標と結果を書いていきます. 昨年のつくばチャレンジでは,画像処理の実装に時間がかかりすぎて制御周りが間に合わなかったので,今年はまずここから始めたいと思います.ロボットの足回りはと…

Road To つくばチャレンジ2017 ~ 完走へ向けて!~

ということで,「2016年を振り返って」という若干後ろ向きなエントリを書いた数分後に,「完走へ向けて」なんていう無謀なエントリを書いてしまいます.... 2017年が明けてもう一か月が経過しようとしているのですが,年始に会社の研修発表会があ…

2016年を振り返って...

現在,朝7時...今年は早寝・早起きを習慣にしようととりあえず毎朝5時に起きてます.昨日から(笑) 2016年は転職から始まり,つくばチャレンジ2016参加,SI2016でのつくばチャレンジ取り組み発表,会社の研修・発表会等,いろいろありま…

パソコン環境設定 2017

今年もつくばチャレンジ2017に向けて、まずは環境のセットアップということで早速準備。 備忘録として、インストール一覧をメモメモ。Windows Chrome Visual Studio 2015, Community ITunes Office Anaconda さくらエディタLinux Chrome sudo apt-get update…

Python リストのソートの仕方

機械学習の勉強にPythonを使ってるんですが,ちょっとしたデータ処理したりするの,めっちゃ使いやすいですね. 結構大きいデータ使ってるんですが,そこそこの速度で動いてくれるし.ちょっと,Pythonのリストをソートする方法を調べてたんですが,備忘録と…

Pandas の使いかた

およそ半年ぶりの更新ですが,何事もなかったかのように平然とエントリをし始めましたが... (つくばチャレンジにも参加しました.結果は残念でしたが...また取り組みをアップします.)最近会社で機械学習の勉強をしていて,その際に Pandas というラ…

OpenCV Stereo Matching の性能比較 1

前回の投稿から少し時間が空いてしまいました...が,ブログ更新が飽きたというわけではなく,ちょっと更新するほどのまとまったネタができなかったわけです.というわけで,今日はつくばチャレンジで使うステレオマッチングメソッドの比較・選定を行いま…

環境設定 - CppStyle

Eclipse CDT 用のフォーマッターをインストールしたので,そのメモ. 1. Install Clang-format まずは下記のコマンドで Clang-format をインストールします. $ sudo apt-get install clang-foramt 2. Eclipse のプラグイン CPPStyle を Eclipse からインス…

TopView Transformation (鳥瞰図変換) 3 ~ 画素間補間

前回のエントリで鳥瞰図変換を実現しましたが,作成した鳥瞰図には色情報を保持していない画素が存在しました.(黒のライン)これは,画素変換をする下記の変換式によってうまくマッピングが取れていないことが原因です. 上記数式では,元画像座標 を変換…

TODO リスト to つくばチャレンジ 2016

なんだかやることが多すぎでわけわからなくなりそうだったので,つくばチャレンジ 2016 本走行までの TODO を洗い出してみました.事前知識がたらなさすぎで,洗い出し&時間の見積もりとかが全くできないので,思いついたベースで更新してきます. つくばチ…

TopView Transformation (鳥瞰図変換) 2

TopView Transformation 1 のエントリで論文まとめを書いた鳥瞰図変換ですが,ここでは実際に鳥瞰図変換にトライしていきます. 実験設定 自宅実験室(笑) にて,以前紹介した USB カメラを使って写真を撮ります.鳥瞰図変換用にカメラ三脚と角度計を購入.…

TopView Transformation (鳥瞰図変換) 1

いよいよつくばチャレンジに向けての具体的な”ロボット工作”的投稿です.突然ですが,最近の車についてるアラウンドビューモニタってご存じですか?駐車しようとしたときに,ナビに表示される車全体を上から見たような絵のことです.アラウンドビューモニタ…

Windows Form と スレッド

C#

C# のライブラリっていろいろと便利なものがそろってると思うんですが,どうも資料が不足してるような気がする...前回のエントリでも Bitmap を扱ったけど,いま Image とか Bitmap とかを扱うものを作ってて,一枚の画像を複数のスレッドからいじる必要…

OpenCVSharp BitMap <-> IplImage 間の変換

いま携わっているプロジェクトで,BitMap形式の画像を IplImage に変換して OpenCVSharp を使って画像処理をやる必要があったんだけど,うまい変換方法がわからなかったので調べてみました.C# 自体そんなに強くない状態から始めたので,いろいろと勉強にな…

OpenCVSharp を使った画像の切り貼り

OpenCVSharp の導入と,画像の切り貼りについて,調べたのでメモ. OpenCVSharp の導入 1. Visual Studio 2013 Community のインストール 個人用なら完全タダで Professional と同等機能を提供!素晴らしい!インストールは素直に下記のリンクから. 2014-No…

OpenCV 2.4 を用いた USB カメラの取り込み2

前回のエントリで OpenCV2.4 を使って USB カメラの取り込みを実施したけど, Pixel Format がうまくコントロールできなかったのでこのエントリでは V4L2 の API からカメラの設定を変更するコードを作る.参考にしたのは下記のホームページ Capture images …

OpenCV 2.4 を用いた USB カメラの取り込み1

実装前にいろいろと試す用途で,Eclipse の OpenCV 用プロジェクトを作成する.ここはそのメモ. Eclipse で C++ プロジェクトを作成する. Eclipse を開いてからの... "Project Exploer 右クリック" -> "New" -> "C/C++" を選択 -> "C++ Project" を選択…

環境設定 - OpenCV 2.4 & OpenCV 3.1 & OpenCV 2.2

OpenCV のビルドとインストール 自分の環境には ROS Kinetic Kame を入れているので,すでに opencv3 のライブラリが一部インストールされている.ただ,開発を進めていくうえでバイナリパッケージのみでなくソースを見たくなる時があるので OpenCV2.4 と Op…

カメラキャリブレーション

前回の投稿から一週間近くたってしまったが,今日はカメラのキャリブレーションを実施しようと思う. V4L2 を使ったカメラコントロール キャリブレーションをする前に,カメラの設定をしないといけない.ピント,絞りやゲインの設定などである.設定可能なコ…

環境設定 - ROS Kinetic Kame, PyCharm, Eclipse, git

Ubuntu 14.04 をインストールして使うつもりだったので,ROS Indigo を使用していたが, Ubuntu 16.04 へのアップグレードに伴い ROS Kinetic Kame をインストールすることに.ROS Kinetic Kame 自体はまだベータ版リリースで,正直いろいろとはまりそうだっ…

UBS カメラセッティング 2 - カメラ詳細情報の確認

つくばチャレンジ 2015 に参加するにあたり,LSD SLAM を使ってやろうと思い下記のカメラを購入.かつステレオもやろうと思ったので 2 つ買った.(レンズ込みで1つ 9 万円 orz...) ここでは,まず OpenCV 等でカメラをいじる前に,簡単にカメラのサポートし…

環境設定 Ubuntu 16.04

11月に実施されるつくばチャレンジに向けて,開発環境のセットアップを実施したので,そのメモ.じつは,Ubuntu 16.04が出たばっかだったので,いろいろあると面倒だと思い,Ubuntu 14.04 で環境を構築したんだけど,いろいろとライブラリが古かったりなんや…

USBカメラセッティング 1 - デバイスの命名

GW 中に LSD SLAM を理解すべく,ガリ勉してなんとなく全体像は見えるようになったけど,到底手が入れられるレベルにはならず....このままだとロボット作成にめどがつかないとおもい...まずは簡単なところから手を動かして作業を始めることにしました…

C# でのポインタの使用

C# ではポインタの使用は推奨されていないが,C/C++ コードとの連携や効率化のためにどうしても必要になることがある.このために,C# はいくつかの制限事項はありながらもポインタの使用を可能にしている.ここでは,C# で実際にポインタを使ってみる. uns…

C# へのネイティブ DLL の取り込み - 構造体編

C#

ここまでで,C# から C で作成した DLL のメソッドへの変数・文字列の渡し方を見てきたが,構造体を引数として渡すことも実用上考えられる.ここでは,構造体を渡す方法をしらべたのでまとめる. 1. C で定義した構造体を C# でも定義する. [StructLayout(L…

C# へのネイティブ DLL の取り込み - 値渡し,参照渡し引数編

C#

仕事で C# を使うようになったため C# 関連の勉強を開始.既存の資産が C である場合が多いので,C の DLL を取り込む方法を調べた. C# 側での記述 簡単な例 (参照渡しパラメータなしの Win32API) DllImport 属性 (System.Runtime.InteropServices) を利用…

Calling Convention

C#

Calling Convention (呼出規約) プログラミングにおける呼出規約はサブルーチンを呼び出す際の標準的な手法を指している.サブルーチンにデータを渡し,戻るべきアドレス(リターンアドレス)を記録し,サブルーチンからデータを受け取るための規則.一つのプ…

Visual Studio 2013 - 構成プロパティ

構成プロパティ 出力ディレクトリ コンパイルを通して生成された実行ファイル・DLL等を置く場所 中間ディレクトリ コンパイル途中で生成され,リンクしてない obj ファイルを置く場所 上記の設定は,下記のように変更可能該当するプロジェクト上で右クリック…

C# 属性

C#

属性:クラス,メンバに追加情報を与えるもの. C++などの既存の言語では,追加情報を定義する場合,言語仕様自体を拡張し,新たにコンパイラを作り直す必要があった.C#では自分で属性を定義し,クラスやメンバに付加することができる.すなわち,ライブラ…

C# 実行時型情報

C#

メタデータ:クラス名,メンバ名,それらのアクセスレベル等の情報.リフレクション:プログラムの実行時にメタデータを取り出すための機能.実行時型情報:C#では,クラスのインスタンスから実行時に型情報を取得したり,リフレクションを利用して型情報か…

C++ コンパイラがデフォルトで提供するメンバ関数の無効化

C++

オブジェクトのコピーを抑制するには,クラス型のコピーコンストラクタと代入演算子を無効化する必要がある. C++11では,コンパイラがデフォルトで提供するメンバ関数を利用させないようにすることを明示的に宣言できる手段がある.具体的には,メンバ関数…

LSD-SLAM: Large-Scale Direct Monocular SLAM

つくばチャレンジに使うネタとして LSD-SLAM の論文を読んだので,そのまとめとメモ. 0. アブストラクト 特徴点を用いず,画素値を直接的に用いて単眼 SLAM を実現するアルゴリズムを提唱する.このアルゴリズムは近年提唱されている画素値を直接的に使用す…