Nishida-Lab / motoman_project

Repository for Motoman ROS applications
http://lab.cntl.kyutech.ac.jp/~nishida/en/research-en.html
52 stars 32 forks source link

motomanのcalibrationに関して #91

Closed Yuji-Ninomiya closed 7 years ago

Yuji-Ninomiya commented 7 years ago

motoman_project のコマンドチートを参照しながらcalibrationを行おうとしたのですが、gazeboにロボットモデルを登場させる以下のコマンド

roslaunch motoman_gazebo sia5_with_dhand_and_multikinect.launch

を実行するところで下記のエラーが生じました(motomanおよびkinectのは接続済)。

[ERROR] [1493107510.710925494, 2.346000000]: Lookup would require extrapolation into the past.  
Requested time 0.517000000 but the earliest data is at time 1.005000000, when looking up transform from 
frame [kinect_first_rgb_optical_frame] to frame [kinect_second_rgb_optical_frame]

gazebo上ではロボットが表示されましたが、RVizではロボットモデルがワールド座標原点付近に固まったように表示されています。 TFの箇所に Status: Warnが出ているのでそこがうまくいってないように思うのですが、アドバイスをいただけると幸いです。 よろしくお願いします。

現状

Fixed Frame:: world Robot Model:: Status: Error TF:: Status: Warn

motoman_error

RyodoTanaka commented 7 years ago

@Yuji-Ninomiya 返事が遅くなってしまい,申し訳ありません. まず,

motoman_project のコマンドチートを参照しながらcalibrationを行おうとしたのですが、gazeboにロボットモデルを登場させる以下のコマンド

roslaunch motoman_gazebo sia5_with_dhand_and_multikinect.launch

を実行するところで下記のエラーが生じました(motomanおよびkinectのは接続済)。

[ERROR] [1493107510.710925494, 2.346000000]: Lookup would require extrapolation into the past.  
Requested time 0.517000000 but the earliest data is at time 1.005000000, when looking up > transform from 
frame [kinect_first_rgb_optical_frame] to frame [kinect_second_rgb_optical_frame]

この部分に関しては問題ありません.私の環境でも起動時に表示されるエラーですが,動作に影響のあるものではありません.

続いてロボットモデルがうまく表示されない問題ですが,これはrobot_state_publisherもしくは,joint_state_publisherが動いていないために起きる現象です.  Gazeboの起動時にこれが起きるのは,うまくコントローラが読み込まれていないことが原因であることが多いのですが,Gazeboの起動画面コントローラに関するエラーメッセージは出ていませんか?

ただそもそものお話になってしまうのですが,コマンドチートシートに載っているcalibrationはKinectの外部パラメータ(位置・姿勢)が未知の状態であり,Kinectに関する情報の載っていないURDFを読み込んでいる状態で行うものです.つまり,実機のみでしか使用できないものです.なので,投稿されているようなGazebo上でこれを行うことはできないのですが大丈夫でしょうか?

Yuji-Ninomiya commented 7 years ago

回答ありがとうございます。お返事が遅れて申し訳ありません。

ロボットモデル表示の問題についてですが、次のような警告文が表示されています。

WARNING: disk usage in log directory [/home/motoman/.ros/log] is over 1GB.
It's recommended that you use the 'rosclean' command.
....
Warning [Publisher.cc:134] Queue limit reached for topic /gazebo/default/pose/local/info, 
deleting message. This warning is printed only once.

コントローラに関するエラーではないような気がしますが、一つ目のエラーは私の環境でgazeboを起動する際には見られませんでした。 roscleanについて、ROSのログを消去するという説明とともに「ファイルをディスクから消去するものであるため注意して実行せよ」との記述がありましたが、これは実行しても大丈夫なのでしょうか?

今回私の実行しようとしたcalibrationの説明が、実機によるものとGazeboを用いてのシミュレーションとを混同してしまっていたため投稿内容があやふやになってしまっていました。申し訳ありません。 コマンドチートは参考にしているだけなのでその点は大丈夫です。

RyodoTanaka commented 7 years ago

@Yuji-Ninomiya @Nishida-Lab/all

ロボットモデル表示の問題についてですが、次のような警告文が表示されています。

WARNING: disk usage in log directory [/home/motoman/.ros/log] is over 1GB.
It's recommended that you use the 'rosclean' command.
....
Warning [Publisher.cc:134] Queue limit reached for topic /gazebo/default/pose/local/info, 
deleting message. This warning is printed only once.

このエラーについては,書いてある通りにファイルを削除してください.また,このエラーが出ていても,パッケージが動かなくなったりすることはありませんし,ROSをしばらく使っていて,logファイルが溜まってくると必ず起きる現象です.

続いて,

今回私の実行しようとしたcalibrationの説明が、実機によるものとGazeboを用いてのシミュレーションとを混同してしまっていたため投稿内容があやふやになってしまっていました。申し訳ありません。 コマンドチートは参考にしているだけなのでその点は大丈夫です。

混同していないことはわかりましたが,最初に起きたエラーがなぜ起きたのか考察するための情報がもう少し必要です. モデルがうまく起動されなかった時のPCの環境,実行したコマンド,エラーメッセージ全文(まだ残ってるなら)を記入してください.また,このissueに限ったことではありませんが,問題が起きた時には,

以上の情報を記入していた方が答えにたどり着きやすいです. 面倒だとは思いますが,よろしくお願いしますm( )m

Yuji-Ninomiya commented 7 years ago

今回実行したコマンド、およびPCの環境は以下のとおりです。

rosaddress server
roslaunch motoman_control sia5_with_dhand_and_multi_kinect_streaming.launch
roslaunch motoman_control sia5_real_control.launch 
roslaunch motoman_gazebo sia5_with_dhand_and_multikinect.launch
rviz

PC環境

Linux 64bit Ubuntu 14.04.5 LTS kernel: 3.13.0-106-generic ROS: indigo

roslaunch motoman_control sia5_with_dhand_and_multi_kinect_streaming.launch、およびroslaunch motoman_control sia5_real_control.launchを実行しない状態だとロボットモデルは正しく表示されましたが、上記の流れでコマンドを実行するとRVizではモデルがワールド座標原点に固まって表示されました。エラーメッセージは先にお伝えしたもの以外表示されておりません。また、先のご指摘にもありましたrobot_state_publisherjoint_state_publisherに関してですが、後者のjoint_state_publisherの起動に関する表示がないようです。ここに問題があるということでしょうか。 よろしくお願いします。

Ry0 commented 7 years ago

@Yuji-Ninomiya

roslaunch motoman_control sia5_real_control.launch 

roslaunch motoman_gazebo sia5_with_dhand_and_multikinect.launch

は共存できない. sia5_with_dhand_and_multikinect.launchでは sia5_sim_control.launchを呼び出すようになっていて https://github.com/Nishida-Lab/motoman_project/blob/master/motoman_gazebo/launch/sia5/sia5_with_dhand_and_multikinect.launch#L36 コントローラがシミュレーション用と実機用のものが多重起動されています. 実機の場合,joint_stateは実機から送られてきますので,気にしなくてもいい気がします!

このissueのもともとはキャリブレーションだよね 従来の手動の方法であれば,Gazeboは関係ないはず. ↓コマンドチートシートってこのこと? https://github.com/Nishida-Lab/motoman_project/wiki/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%81%E3%83%BC%E3%83%88%E3%82%B7%E3%83%BC%E3%83%88

Yuji-Ninomiya commented 7 years ago

@RyodoTanaka @Ry0

回答ありがとうございます. コントローラの多重起動が原因だったのですね.

前述のコマンドチートというのは株丹さんのおっしゃったもので間違いありません. それらひとつひとつのつながりを十分に理解できていなかったために今回のような事態に陥ったと考えられます.ご指摘ありがとうございました.

Yuji-Ninomiya commented 7 years ago

多重起動は修正したのですが、実機のKinect から点群が取れないという問題が発生しました。 RViz内で確認したところ、PointCloud2 の Transform の箇所に「 TF の取得時間とリクエスト時間がおかしいため、表示できません」的なエラーが出ていました。(エラーのコピペ氏忘れました、すみません。)

しかし、以下のコマンドを 実行することによりこの問題は修正できました。ありがとうございました。

解決策

chronyを使ってサーバPCとクライアントPCの時間を同期することで修正

クライアントPCへSSH接続(ch3とする)
$ cd ~
$ sudo ./chrony_setup <htp_server_address  or  Server PC adddress>
$ ntpdate -q <htp_server_address  or  Server PC adddress>