Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rosbagを再生してもcamera_linkへのtfが出ない #1639

Open
itohdak opened this issue Nov 8, 2019 · 8 comments
Open

rosbagを再生してもcamera_linkへのtfが出ない #1639

itohdak opened this issue Nov 8, 2019 · 8 comments

Comments

@itohdak
Copy link

itohdak commented Nov 8, 2019

最近,hrp2_record.launch で取ったrosbagをlocalで再生してもpointcloudがrvizに表示されない問題が起こっていました.
BODY(またはground)からcamera_rgb_optical_frameなどへのtfが参照できないのがその原因で,

$ rosrun tf view_frames

で確認すると確かにHEAD_LINK1からcamera_linkへのtfが出ていませんでした.

@mmurooka @pazeshun に協力してもらい調べた結果,
先日ロボット体内のPCをindigoからkineticにupdateしたタイミングで,
staticなtfは/tf_staticとして,最初の1回しかpublishされなくなっており,
結果rosbagにも保存されなくなっていたということがわかりました.

現状の解決策としては,
ロボットを起動するときに立ち上げるlaunchファイル内でpublishしている該当するstatic tfを,
localでrosbagを再生するときにも自前でpublishすることで対処しています.

他に良い解決策はあるでしょうか.

@iory
Copy link
Member

iory commented Nov 8, 2019

tf_staticをrecordする必要があると思います

@iory
Copy link
Member

iory commented Nov 8, 2019

@itohdak
#1641
こちらのPRを試してもらってもいいでしょうか?

@itohdak
Copy link
Author

itohdak commented Nov 8, 2019

@iory
camera_linkへのtfも見られて,pointcloudも見ることができました!

@itohdak
Copy link
Author

itohdak commented Nov 8, 2019

ところで,先ほどstatic_transform_publisherを追加すると解決したと述べましたが,
若干間違いがあることが分かって,static_transform_publisherのノードでpublishしたものは/tf_staticではなく/tfに出るらしいです.

それなら,なぜ元々rosbagでrecordされなかったのでしょうか..

@iory
Copy link
Member

iory commented Nov 8, 2019

多分見えていなかったtfはstatic_trasnform_publisherで出しているものではなくて、
robot_state_publisherで出ているtf_staticのリンクかと思います。
実は
https://github.com/ros/robot_state_publisher/blob/melodic-devel/src/joint_state_listener.cpp#L60
を見るとdefaultでtf_staticで出されるようになっているため
tfをrecordしても出てこないということになっていると思います。

@itohdak
Copy link
Author

itohdak commented Nov 8, 2019

はい,それは承知しているつもりで,hrp2017_local.launch内で呼ばれているstatic_transform_publisherのtfが見えないのは不思議だなと思っていましたが,
よく考えたらこれも自分の勘違いで,このlaunchファイルは実機では立ち上がっていませんでした.
お騒がせして申し訳ありません.

@mmurooka
Copy link
Member

このlaunchファイルは実機では立ち上がっていませんでした.

そうでした,僕が間違った情報を言ってしまった.

整理すると,

  1. dashboardは以下のlaunchで上がって,
    https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2_dashboard.launch#L3-L6

  2. ここで以下のrosparamがロードされる.
    https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/config/hrpsys_dashboard.yaml#L7
    hrpsys_ros_bridge_start_commandというrosparamで,以下をセットしていて,
    https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/scripts/hrp2-launch-ros-bridge.sh
    このshスクリプトの中からは,例えばHRP2NOが17の場合はhrp2017_ros_bridge.launchが呼ばれる.

  3. dashboardでstart_ros_bridgeのボタンが押されると,2.でセットされているhrpsys_ros_bridge_start_commandのrosparamのコマンドが実行される,つまりhrp2017_ros_bridge.launchが呼ばれる.
    https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/src/jsk_hrp2_ros_bridge/jsk_hrp2_dashboard.py#L148-L149
    https://github.com/start-jsk/rtmros_common/blob/master/hrpsys_ros_bridge/src/hrpsys_ros_bridge/hrpsys_dashboard.py#L374-L377
    を参照.

なので,dashboardでstart_ros_bridgeのボタンを押すと,hrp2017_ros_bridge.launchが呼ばれる.

さらに,robot_descriptionとして,どのモデルが使われるかは,

  1. https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2017_ros_bridge.launch
  2. https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/jsk_hrp2_ros_bridge.launch
  3. https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2_set_robot_description.launch

の順にlaunchがincludeされている.

  1. https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2017_ros_bridge.launch#L13-L17
    のrosparamから,3.のhrp2_set_robot_descriptionでは,
    https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2_set_robot_description.launch#L14-L15
    の行が呼ばれる.

結局,https://github.com/start-jsk/rtmros_hrp2/blob/master/jsk_hrp2_ros_bridge/launch/hrp2017_ros_bridge.launch#L17 のコマンドの結果がrobot_descriptionとしてセットされる.

@itohdak
Copy link
Author

itohdak commented Nov 11, 2019

@mmurooka
詳しくフォローしていただき,ありがとうございます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants