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

use upstream xacro #375

Closed
wants to merge 1 commit into from
Closed

Conversation

eisoku9618
Copy link
Member

hrpsys_gazebo_generalの方ではなくて,hrpsys_gazebo_tutorialsの方のgazebo_samplerobot_no_controllers.launchを上げてgazeboを起動したら,(多分)トルクが足りずにサンプルロボットが座り込みました.

モデル変換の流れ(インデントが下がる=変換後,というイメージ)としては

  1. 大本:sample1.wrl @ openhrp3
    1. SampleRobot.dae @ hrpsys_ros_bridge by compile_openhrp_model
      1. SampleRobot.urdf @ hrpsys_gazebo_general : by generate_gazebo_urdf_file(トルクをいじっている)
        1. SampleRobot.urdf.xacro @ hrpsys_gazebo_general
    2. SampleRobot.urdf @ hrpsys_ros_bridge : by compile_openhrp_model
    3. SampleRobot.urdf @ hrpsys_ros_bridge_tutorials : by compile_openhrp_model
      1. SampleRobot.urdf.xacro @ hrpsys_gazebo_tutorials

みたいになっていて,urdf.xacroが2つ存在するのが原因のようでしたので,消してみたのですが,これは問題無さそうでしょうか? > @mmurooka さん

原因:urdf.xacroがそれぞれのディレクトリにあって,それぞれのurdf.xacroが異なるurdfを参照していたのがダメで,ちゃんと書くと以下.

gazebo的には,hrpsys_ros_bridgeにあるurdf(1-ii)だとダメで,generate_gazebo_urdf_fileによってトルクなどを上書きされたurdf(1-i-a)でないといけないようですが,hrpsys_gazebo_tutorialsの方はhrpsys_ros_bridge_tutorialsにあるurdf(1-iii)(これは1-iiと同じ)を使ってしまっていた.


2つのurdf.xacroのdiffは

  • 参照しているurdfのパスが異なる
  • imuの取り付け姿勢が異なる(ので,このPRが正しいなら,hrpsys_gazebo_generalの方のurdf.xacroも直さないといけない)

_generalの方のサンプルロボットはちゃんと立つけれど,_tutorialsの方のサンプルロボットが座り込んでしまう問題の別解としては,_tutorialsからサンプルロボットを消す,というのがありそうです.

これが通るなら,hrpsys_ros_bridgeにサンプルロボットがいるから,hrpsys_ros_bridge_tutorialsからサンプルロボットを消せばいい,となってしまって大変そう

@mmurooka
Copy link
Member

実機とシミュレーションで同じURDFを使う方が便利なので,
#365 で大改造が行われて
hrpsys_gazebo_tutorialsの中のxacroでは hrpsys_ros_bridge_tutorials のURDFを使うようになりました.

gazebo用にトルクを上書きしたりするところは,
#365 以前は,
hrpsys_gazebo_tutorials/robot_models/SampleRobot/SampleRobot_additional_urdf_setting.sh
で行われていましたが,
#365 後は,
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/samplerobot.yaml#L82-L101
で行なっています.
たぶんここでgazebo用のurdf修正を移行するときに漏れがあったのかと思います.

@mmurooka
Copy link
Member

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt
で,SampleRobotには
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/samplerobot.yaml#L82-L101
を反映させていないので,
トルク最大値などが小さいままなことが原因なようです.

attach_sensor_and_endeffector_to_hrp2jsk_urdf(SampleRobot SampleRobot.urdf
      SampleRobot_WH_SENSORS.urdf samplerobot.yaml)

みたいなものをCMakeLists.txtのどこかに加えれば良さそうですが,
やってみてできませんでした.
@garaemon さん,すみませんが見ていただけますでしょうか.

@garaemon
Copy link
Member

compile_urdf_robotsに追加しないといけないんじゃないかな
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt#L476

◉ ryohei

2015-08-30 15:08 GMT+09:00 Masaki Murooka [email protected]:

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt
で,SampleRobotには

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/models/samplerobot.yaml#L82-L101
を反映させていないので,
トルク最大値などが小さいままなことが原因なようです.

attach_sensor_and_endeffector_to_hrp2jsk_urdf(SampleRobot SampleRobot.urdf
SampleRobot_WH_SENSORS.urdf samplerobot.yaml)

みたいなものをCMakeLists.txtのどこかに加えれば良さそうですが,
やってみてできませんでした.
@garaemon https://github.com/garaemon さん,すみませんが見ていただけますでしょうか.


Reply to this email directly or view it on GitHub
#375 (comment)
.

@mmurooka
Copy link
Member

attach_sensor_and_endeffector_to_hrp2jsk_urdf
は中で
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt#L428
しているので大丈夫なはずでしょうか.

@garaemon
Copy link
Member

そうですね。
compile_urdf_robotsにいれておくと
https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt#L567
でALLに追加されるような仕組みになっているようです

◉ ryohei

On Sun, Aug 30, 2015 at 3:23 PM, Masaki Murooka [email protected]
wrote:

attach_sensor_and_endeffector_to_hrp2jsk_urdf
は中で

https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt#L428
しているので大丈夫なはずでしょうか.


Reply to this email directly or view it on GitHub
#375 (comment)
.

@snozawa
Copy link
Collaborator

snozawa commented Aug 30, 2015

compile_urdf_robotsにいれておくと https://github.com/start-jsk/rtmros_tutorials/blob/master/hrpsys_ros_bridge_tutorials/CMakeLists.txt#L567 でALLに追加されるような仕組みになっているようです

一ヶ所にtargetをまとめて依存関係をつけて、並列実行されないようにしています。

hrpsys_ros_bridge_tutorials/CMakelistのurdf変換部分を変更する場合は、
現状は必ず並行実行されないように注意してかいてください。
このurdfちょいたし変換自体は実行時間がかからないので、無理して並列実行に対応する必要はなさそうです。

もし直す場合は、

のいずれかを直す必要があります。

変更をする場合は、

SUCCESSNUM=0;NUM=0;while [ $NUM -lt 10 ]; do git clean -xfd . && catkin bt --force-cmake --start-with-this && SUCCESSNUM=`expr $SUCCESSNUM + 1`; NUM=`expr $NUM + 1`;done; echo "SUCCESS $SUCCESSNUM / $NUM"

などでできるだけチェックしてください。
一回の

git clean -xfd . && catkin bt --force-cmake --start-with-this

でもしないよりは良いです。

@eisoku9618
Copy link
Member Author

  • hrpys_gazebo_tutorials の方だけ大改造されて(以下の★),hrpys_gazebo_generalの方は昔のまま(以下の☆)にした
  • 大改造でサンプルロボットにだけマクロを反映させていなかった

ということですね.

現状は

hrpys_gazebo_tutorials

  1. gazebo_samplerobot_no_controllers.launch @ hrpsys_gazebo_tutorials
  2. SampleRobot.urdf @ hrpsys_ros_bridge_tutorials(★)
    1. SampleRobot.dae @ hrpsys_ros_bridge_tutorials
      1. sample1.wrl @ openhrp3
  3. SampleRobot.urdf.xacro @ hrpsys_gazebo_tutorials

hrpys_gazebo_general

  1. gazebo_samplerobot_no_controllers.launch @ hrpsys_gazebo_general
  2. SampleRobot.urdf @ hrpsys_gazebo_general(☆)
    1. SampleRobot.dae @ hrpsys_ros_bridge
      1. sample1.wrl @ openhrp3
  3. SampleRobot.urdf.xacro @ hrpsys_gazebo_general

となっています.
※数字が増えていくとinclude,インデントが増えていくと変換元,のイメージです

@eisoku9618
Copy link
Member Author

サンプルロボットが2箇所(general tutorials)にいるのは、stable unstable RTCを区別するためだと @mmurooka さんに先ほど教えていただきました。

それを踏まえてよく考えてみたところ、モデルは二箇所で共通のもの(現状はhrsys_gazebo_generalにあるもの、#380 が完成したらhrpsys_ros_bridgeにあるもの)を使ってlaunchだけ分ければ良さそうに思えました。
図らずもこのPRがちょうどそうなっていますが、どうでしょうか。 @mmurooka さん

hrpsys_ros_bridgeの方をいじるのが良くないとかいう理由があるのでしたら上記ではダメなのでPRはcloseします。

@snozawa
Copy link
Collaborator

snozawa commented Aug 31, 2015

それを踏まえてよく考えてみたところ、モデルは二箇所で共通のもの(現状はhrsys_gazebo_generalにあるもの、#380 が完成したらhrpsys_ros_bridgeにあるもの)を使ってlaunchだけ分ければ良さそうに思えました。
図らずもこのPRがちょうどそうなっていますが、どうでしょうか。 @mmurooka さん

これができればこれが良いと思います、が、結構骨が折れる作業だと思います。
まずは、

  1. 今やりたいことができるようになるまで必要な修正は何かと、
  2. やりたいことができつつ、ちょっとソフトウェアの構成をよくしたり綺麗にするには何をしたら良いかと、
  3. やりたいことができつつ、ものすごくソフトウェアの構成をよくしたり綺麗にするには何をしたら良いか、

を考えつつ、忙しさに応じて選んだら良いと思います。
一般論としては3がベストですが、多分忙しいと思うので、まずは1のスタイルで、何や研究や手伝いや自分の実験が進んだりする方向で進めてくと良いのではないでしょうか。

@eisoku9618 さん
の案は僕も良いと思いますが、rtmros_gazeboはrtmros_tutorialsに依存しておらず、
gazeboのURDFを適切に変換する方法は今rtmros_tutorialsにあって、
さらに
#373
にもあるように色々既に綺麗にしどころがある問題なので、結構ヘビーではないかと思います。

もし時間があって、というのであれば、もう少しライト目な問題として、
 rtmros_tutorialsにあったSampleRobotを最近rtmros_commonに移したけど、良いかんじでrtmros_tutorialsの方を減らすor消すを判断しながら進める
とかをやってもらえると個人的にはすごく助かります

@eisoku9618
Copy link
Member Author

@mmurooka さんが #380 を完成させてくださったのでcloseします。

@eisoku9618 eisoku9618 closed this Sep 22, 2015
@eisoku9618 eisoku9618 deleted the use-upstream branch November 4, 2015 09:24
itohdak pushed a commit to itohdak/rtmros_tutorials that referenced this pull request Jan 10, 2019
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

Successfully merging this pull request may close these issues.

4 participants