Closed KazukiHiraizumi closed 3 years ago
Param={
:
+ "wd":0
}
wdはカメラの撮像距離を表す。WD>0のときは、カメラからWDだけ前方の位置を移動量の基点とする新たなTFを作る(camera/capture0/wd)。 cb_statsに以下を追加。
:
tf.transform.rotation.w=Stats["Qw"][pick]
btf=[tf]
if Param["wd"]>0:
cTw=getRT(Config["base_frame_id"],Config["solve_frame_id"])
cTw[0,3]=0
cTw[1,3]=0
cTw[2,3]=Param["wd"]
tfw=copy.deepcopy(tf)
tfw.header.frame_id=Config["solve_frame_id"]
tfw.child_frame_id=Config["solve_frame_id"]+"/wd"
tfw.transform=tflib.fromRT(cTw)
btf.append(tfw)
wTc=np.linalg.inv(cTw)
cTc=tflib.toRT(tf.transform)
tfws=copy.deepcopy(tf)
tfws.header.frame_id=Config["solve_frame_id"]+"/wd"
tfws.child_frame_id=Config["solve_frame_id"]+"/wd/solve0"
tfws.transform=tflib.fromRT(wTc.dot(cTc).dot(cTw))
btf.append(tfws)
stats["Gx"]=tfws.transform.translation.x
stats["Gy"]=tfws.transform.translation.y
stats["Gz"]=tfws.transform.translation.z
broadcaster.sendTransform(btf)
pub_report.publish(str(stats))
👍
WD=500でのソルブ結果は以下のような表示となる
report:
"altitude": -25
"width": 1920
"rows": 4
recipe: "/dashboard/recipe"
keys: ["pcount","fitness","rmse","azimuth","rotation","Gx","Gy","Gz","tcap","tfeat","tmatch"]
labels: ["点数","一致度","平均誤差","傾き","回転","X移動","Y移動","Z移動","撮影処理時間","特徴処理時間","マッチング処理時間"]
以下のように結果表示される
Stand Alone 版での変更箇所
loadで指定する、追加ロードするロボットのyamlをストリーミングなしのロボットにする。とりあえず川重を流用。
YCAM位置をViewerに表示するためkw.launchに以下を追加
YCAMを見やすい位置に置くため、ロボットtool0に固定値を設定する。rcalib.yamlに寄生させておこう。