gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

ROSでcompressed imageをdecompressする方法(コマンドライン)

Image rosrun image_transport republish compressed in:=/camera/image_raw raw out:=/camera/image_raw Depth rosrun image_transport republish compressedDepth in:=/camera/image_raw raw out:=/camera/image_raw

gitの使い方

git submodule レポジトリに対し、別のレポジトリを関連付けるためのコマンドです。例えばhogeというレポジトリがあるとして、そのレポジトリに対して git submodule add https://xxx.fuga.gitとすると、hogeレポジトリに fuga@8fc2cdbが登録されます。上記8…

Gazebo上のPR2をMoveIt! + Teleopで動かす

Gazebo上のPR2のEnd-Effectorを動かしたいと思い。その方法について検討しました。その結果、MoveIt!を利用することにしました。MoveIt!はIKを解く必要があるので、End-Effectorの目標座標を与える必要があります。手入力で与えるのは面倒なので、ゲームコン…

ROSでstatic_transform_publisherを使うならばtf2_rosの方を使うのがよい

ROSでtfのstatic_transform_publisherを使うと、[1]に記載のように、未来のtime stampが発生し、トラブルがおきたことがありました。tf2の(パッケージ的にはtf2_rosの)static_transform_publisherは、フレームレートを決める必要がありません([2]の1.5参…

ROSネットワークの環境変数設定用スクリプト

表記のスクリプトを書いてみました。参考になれば幸いです。 - #!/bin/bash # this script sets ROS network related environemt variables, ROS_IP and ROS_MASTER_URI IP_ADDR=`ip addr show enp0xxxx | grep "inet\b" | awk '{print $2}' | cut -d/ -f1`i…

ROS in python + 仮想環境でpip installしたはずのモジュールがModuleNotFoundになる

ROSのpythonコードを実行するとき、仮想環境下で実行することが多いと思います。このとき、rosrunでコードを実行しようとすると、venv下のpythonのsite-packagesにpathが通っておらず、ModuleNotFoundになると思います。ただ、python xxx.pyのようにすれば、…

MyCobot(実機)をROSで動かす

中華製の格安だけどそれなりの性能を誇るロボットアームMyCobotですが、アジャイル的に開発しているようで、システム構成や動作手順がコロコロ変わっており、過去例がなかなか参考にならないという難点があります。そこで、2021年11月28日現在で私がsliderで…

Dockerコンテナで起動したGUIをlocalで表示する方法

xhostコマンドを使うことで可能になります。xhostコマンドは、Xサーバへのアクセスの許可/不許可を設定するためのコマンドです。設定をするためには、Xサーバのクライアント・サーバそれぞれで設定が必要になります。 サーバ側 xhost +hoge.co.jp のように記…

Ubuntu / Windowsの両方で使える外付けHDDの暗号化方法

結論として、VeraCryptを使うのがよい。というか、私が試した限りこれしかダメだった。Ubuntu上で暗号化をしようとすると、[1]では、cryptsetupというパッケージが必要だとしている。このパッケージがUbuntuではデファクトなようだ。しかしこれを使って暗号…

画像のフーリエ変換

画像をFFT(Fast Fourier Transform)などで変換して生じる実部と虚部に特に意味は存在しない。どちらも存在しないと元の画像を復元することはできないので、データとしての重要度も変わりない。変換結果を視覚化する方法として、 位相スペクトル:元画像の…

NVIDIA公式のdockerを使うための環境構築

NVIDIAの佐々木さんの記事を見ると、Docker 19.03以降では、nvidia-docker2をインストールすればよいようです。Docker 19.03よりも前のバージョンの方、および昔のバージョンと互換性をもたせたい場合は、NVIDIA Toolkitのインストールが必要だそうです。 me…

複数バージョンのCUDAを1つのマシンにインストールする

下記の2つの記事を見る限り、CUDAはバージョン毎に異なるディレクトリに自動的にインストールされるので、異なるバージョン間でファイル自体が競合することはないようです。その一方で、インストール時にCUDAというシンボリックリンクが生成されるので、シ…

TransformerはGoogleが[3]で発表したRNNの一種で、Encoder-Decoderをベースにしています。Encoder-Decoderは、テキスト翻訳のために考えられたモデルであり、入力(翻訳元、ソースと呼ばれる)テキストと出力(翻訳先、ターゲットと呼ばれる)テキストのペア…

imagemagickを使ったgifアニメーション作成

処理画像を作成した後、それをアニメーション化したい時があるかと思います。その時に、私はimagemagickを使ってアニメーションを作成します。その際ファイルサイズの関係から、解像度を落としたり、最適化して圧縮したりなどすることがあります。今回はそれ…

Non-holonomic vs holonomic

holonomicな拘束とは、拘束条件が一般化座標と時間だけで成り立つものであり、それ以外の拘束は全てnon-holonomicな拘束という[1-4]。例えば移動ロボットの座標を考えると、横移動できるロボット(例えばメカナムホイール搭載型)はhonomic拘束に従い、横移…

OpenCVでの行列の掛け算の注意点

OpenCVの行列は、基本クラスのcv::Matと、それを継承した小クラスのcv::Mat_があります。前者はインスタンス生成時に型指定が出来ません。後者は、cv::Mat_のようにして、型指定ができます。詳細はおっかけていないので結果論ですが、行列の掛け算をするとき…

ミュンヘンでの子供の手続き

ミュンヘンで子供が生まれた時、やることは下記の通りです。 前提条件 両親共に日本人で、結婚している ミュンヘンで出産している 日本国籍を取得する。 ミュンヘン市役所へ出生届を出す ミュンヘンでの出生届を出す場合、病院でしかもらえない用紙が必要に…

特徴点マッチングの結果を改善する方法

(1)や(2)でも書いてありますが、主に3つの手法があります。 Ratio test KNN(K-近傍法)を使って求めたマッチする特徴点のペアに対し、ペア1の点同士の距離とペア2の点同士の距離の比(ratio)を元に、適切な結果かどうかを判断する。(3)のように、Loweら…

全方位カメラの画像から一般的なカメラと同じ様な画像を取り出す方法

360度パノラマ画像から平面画像への変換手法 - LASTMILE WORKS / DYNAMO TECH - R&D Project - Medium床井研究室 - 魚眼レンズ画像の平面展開を見ると、「平面展開する」と言えば良いようです。メモなので雑ですいません。

Gitでレポジトリを複製する方法(folkではない)

git

githubのレポジトリを他のサービスにコピーして管理したい場合ありますよね。そういう時は、下記の手順を取ればOKです。ここでは、githubのレポジトリをbitbucket上で管理する方法を紹介します。 github上のレポジトリを、ローカルにcloneする bitbucket上…

Visual navigationとその分類

Visual navigationは、メトリック地図を用いるものと、トポロジカル地図を用いるものの2種類に大別される[1]。後者はtopological visual navigationと呼ばれ、visual homing[2]もその1つに数えられる。 Visual homing [2]を見ると、"local visual homing p…

nodelet用に定義したクラスを使ってnodeを立ち上げる

ROSで処理を書く際、ノード間でのデータのやり取りの効率化のため、殆どnodeletとしてクラスを作ることが多いんじゃないかと思います。ただそうすると、そのクラスのメンバ関数をテストをしようとすると他のノードも立ち上がったりして面倒ですよね。じゃあn…

マルコフ性、マルコフ過程、マルコフ報酬過程、マルコフ決定過程

マルコフ決定過程(MDP)を勉強する上では、1つずつマルコフ過程から少しずつ変数を増やして理解していくのが分かりやすい様な気がします。[1]がそのパターンでしたので、[1]のほぼ流用の形でマルコフ決定過程についての紹介をしたいと思います。 マルコフ…

インピーダンス制御とアドミッタンス制御

インピーダンス制御(位置入力 ・力出力) 目標位置と目標インピーダンス(バネ・マス・ダンパのパラメータ)を決めた状態でエンドエフェクタに力が加わると、目標位置に留まるように関節の固さ(軟らかさ)各関節角度を調整する。アドミッタンス制御のよう…

Visual Odometry Part I: The First 30 Years and Fundamentals

[0]を読んで気になった所を抜粋して纏めたいと思います。 Introduction Visual Odometry(VO)は、エージェントのegomotion(自己運動)を推定するものです。VOという言葉は、[1]でNisterらが初めて作り出しました。VOを効率的に行うには、環境中の輝度が十分…

ROSにおけるodomフレームの役割

ROS

Navigaitonパッケージのamclを使うと、odomフレームがちょろちょろ動くのが確認できると思います。どうしてフレームが動くんだろうと不思議に思っていたので、調べてみました。推測も入っていますが、下記に調べたことなどを纏めます。ROSの下記を見ると、 m…

Submap:部分地図(= local map:局所地図)

ここで取り上げるsubmapとは、ある一定の条件下で作成される、グローバル地図(全体地図)を構成する構成要素(部品)を指します。Submapの活用方法は、自己位置推定やloop closingです。今回はこのsubmapがどの様に構成されるのか、先行文献を調査した結果…

オドメトリの運動モデル

SLAMの研究で有名なFreiburg大のBurgard先生の授業資料を見ると、主に下記の4種類があるようです。 Differential drive (AmigoBot, Pioneer 2-DX) Car drive (Ackerman steering):自動車の基本的なステアリング機構 Synchronous drive (B21):タイミングベ…

BRIEF記述子

正直下記のページに纏まっているので、(初学者的に)補足する必要がありません笑。 slidesplayer.netハミング距離については、過去に書いた記事が少しは参考になるかと思います。

画像処理における特徴点(feature)と記述子(descriptor)

画像処理において、特徴点・キーポイントという言葉と記述子という言葉が出てきます。前者は、ある観点で見た際の画像中の特徴的な部分を指します。例えばSIFTがそうです。後者は特徴点周りの領域から取り出した特徴量を指します。例えばBRIEFがそうです。つ…