あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

・gazeboでworld生成
roslaunch gazebo_ros empty_world.launch world_name:=<abspath>

- コマンドラインの例
roslaunch gazebo_ros empty_world.launch world_name:=/opt/ros/kinetic/share/husky_gazebo/worlds/clearpath_playpen.world

- launchファイルの例
<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find husky_gazebo)/worlds/clearpath_playpen.world"/>
</include>
</launch>

参考ページ


・ロボットのspawn
<param name="robot_description"
command="$(find xacro)/xacro.py $(find husky_description)/urdf/husky.urdf.xacro --inorder" />
<node name="spawn_husky" pkg="gazebo_ros" type="spawn_model"
args="-urdf -param robot_description -model /"/>

参考ページ


・ロボットのコントロール
urdfにgazebo_ros_control_pluginを追加
yamlファイルにcontrollerのconfigurationを記入し、パラメータサーバにロード
controllerをspawnする
controller経由でロボットに指令を送って動かす

・リポジトリ

・ネットワーク構造
入力画像サイズ:384×384
出力
 heatmap:46×46×19
 paf:46×46×38
構造
 convで46×46×128に変換
 分岐してさらにconv。heatmapは46×46×19に、pafは46×46×38に変換。
 concatenateして、46×46×185に変換。以上の処理をループ。

・正解データ
heatmap:各関節について正解位置を中心としたガウス分布
paf:繋がる関節関係を19個定義しておき、それらの中心をつなぐ単位ベクトル(x, y)を、リム全体に配置

・その他
COCO.jsonはオリジナルのデータセットには含まれていない
関節データの3次元目は、0:defined and invisible, 1:defined and visible, 2:not defined
画像に人が写っているのにアノテーションがない領域を定義するマスク画像も利用してる

・カルマンフィルタ
信念をガウス分布(平均と分散)で表現したベイズフィルタ。
更新式の導出は1次と2次のモーメント(1次微分と2次微分)を計算することによって行う。
動作や計測が線形でないと使えない。

・拡張カルマンフィルタ(EKF)
テイラー展開を使って動作や計測を線形化する。
動作や計測の関数は、状態→状態なので、状態数nのとき、ヤコビ行列はn×nになる。

・EKF位置推定
制御更新
 平均値:普通に変換
 共分散:GΣt-1G+VMV
  G:制御ヤコビ、Σt-1:前時刻の共分散、V:制御空間→状態空間ヤコビ、M:制御空間での動作共分散
計測更新
 K=Σ'H(HΣ'H+Q)
  K:カルマンゲイン、Σ':計測前信念の共分散、H:計測(状態→マーカー)ヤコビ、Q:計測共分散
ヤコビ
 制御ヤコビ:状態(x, y, θ)→状態(x, y, θ)
 計測ヤコビ:状態(x, y, θ)→マーカー(r, φ, s)
 制御→状態ヤコビ:制御(v, ω)→状態(x, y, θ)


↑このページのトップヘ