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

【10章】オブジェクトがテーブル下にspawnされる #37

Closed
MoriKen254 opened this issue Oct 26, 2018 · 16 comments
Closed

【10章】オブジェクトがテーブル下にspawnされる #37

MoriKen254 opened this issue Oct 26, 2018 · 16 comments

Comments

@MoriKen254
Copy link
Member

題記、#35 で言及。

おそらくですが、マシンスペックの影響?(当方では上にのっている)
table がspawnされる前に他のオブジェクトが自由落下でしたに行ってしまっている?

テーブルの上に乗せるなら、chapter10/smach_sample/launch/spawn_object.launchにて、下記スクリプトのz座標を高くすれば解決します。

    <node name="$(anon spawn2)" pkg="gazebo_ros" type="spawn_model" output="screen"
        args="-sdf -param beer_sdf -model beer_model -x 1.38 -y -0.1 -z 0.66" />
    <node name="$(anon spawn3)" pkg="gazebo_ros" type="spawn_model" output="screen"
        args="-sdf -param plastic_cup_sdf -model cup_model -x 1.38 -y 0.2 -z 0.66" />

ただ、あまり高くするとテーブルに載ったときにグラスが倒れます。当方の環境ではこの高さがテーブルに乗り、かつグラスが倒れないいい感じの値だったので、これにしました。

@AtsukiYokota さんの環境でうまくいく値に修正して報告してもらえますか?

@AtsukiYokota
Copy link
Contributor

当方の環境で試して見た結果テーブルよりも先にビール缶とコップがspawnしてしまい、テーブルの上に載らないようです。ビール缶やコップをテーブルのspawnに間に合うようにz座標を高くすると今度は高すぎてコップ等が倒れてしまいます。
根本的な解決にはなっていませんがテーブルとオブジェクト(ビール缶とコップ)を別のlaunchファイルに分けてそれぞれ手動で時間差でlaunchさせると確実にテーブルの上にオブジェクトが載ります。(当たり前ですが・・・)
テーブルとオブジェクトをspawnさせるlaunchファイルはそれぞれ以下のように記述しました。

<launch>
    <param name="table_sdf" textfile="$(find smach_sample)/sdf/table/model-1_4.sdf" />
    <node name="$(anon spawn1)" pkg="gazebo_ros" type="spawn_model" output="screen"
    args="-sdf -param table_sdf -model table_model -x 1.6 -z -0.4 -Y 1.570" />
</launch>
<launch>
    <param name="beer_sdf" textfile="$(find smach_sample)/sdf/beer/model-1_4.sdf" />
    <param name="plastic_cup_sdf" textfile="$(find smach_sample)/sdf/plastic_cup/model.sdf" />
    <node name="$(anon spawn2)" pkg="gazebo_ros" type="spawn_model" output="screen"
    args="-sdf -param beer_sdf -model beer_model -x 1.38 -y -0.1 -z 0.65" />
    <node name="$(anon spawn3)" pkg="gazebo_ros" type="spawn_model" output="screen"
    args="-sdf -param plastic_cup_sdf -model cup_model -x 1.38 -y 0.2 -z 0.65" />
</launch>

@MoriKen254 さんのtimed_roslaunchを用いればもう少しスマートかもですが、どう対処するかはお任せしようと思います。

@MoriKen254
Copy link
Member Author

ありがとうございます。状況はよくわかりました。tableは構成要素が大きいから、spawnerの応答速度がマシンスペック次第では大きく遅延してしまう場合があるのだと推察されます。

では、次のような方針にするのはどうでしょう。

現在のlaunchは据え置き

ROS本の本文で全文が記述されているファイルなので、これを消すわけには行きません。
よって、据え置きします。

その上で launch を分けたファイルも用意

@AtsukiYokota さんご指摘の分割型のファイルも用意します。その使用方法は、READMEに記載します。

更に、timed_loslaunchのファイルも用意

よくご存知でしたね笑。

これを使うと解決する問題って結構多いのは分かるのですが、教育用書籍という観点から、あまり外部パッケージを入れることで純粋な学習を妨げてしまわないか懸念している節がありました。

とはいえ、こういう状況ですし、「実用」という名前も入れていますし、リポジトリにwstoolを追加して入れるのもいいかな、と思っています。

そして、もう一つlaunchを追加し、READMEに記載。この方針なら、ROS本との整合性も保った上で、もう少し中身が分かる人向けの応用ユースケースの紹介もできる。

あるいは、upstreamのaptに追加したいかも。aptに追加するの結構大変な記憶があるのですが、やり方
分かる人是非教えて下さい。

自作pkgを過大評価するつもりはないのですが、timed_roslaunchは、その価値があると思います。

@MoriKen254
Copy link
Member Author

upstreamのaptに追加したい

この辺ですよねぇ。

怖いのでPreReleaseから着手しているのですが、すこし手こずりそうなので、launch分割+READMEまでで一旦PR出します。

@MoriKen254
Copy link
Member Author

TORKのブログでリリース関連の情報共有がされています。やってみます。

https://opensource-robotics.tokyo.jp/?p=3272

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 5, 2018

自作パッケージをリリースするにあたって調べてみたメモです。情報があちゃこちゃにあって目がシパシパしていたのですが笑、ようやっとBuildfarmbloomの仕組みが見えてきました汗。

特にまとめているわけではありませんが、備忘録として(すぐ忘れるので笑)、かつ情報共有として一旦簡潔に整理したものを上げておきます。

ROSCon Presentation

Debian Samples

ros_controllers

 ros_controllers:
  doc:
   type: git
   url: https://github.com/ros-controls/ros_controllers.git
   version: indigo-devel
  release:
   packages:
   - diff_drive_controller
   - effort_controllers
   - force_torque_sensor_controller
   - forward_command_controller
   - gripper_action_controller
   - imu_sensor_controller
   - joint_state_controller
   - joint_trajectory_controller
   - position_controllers
   - ros_controllers
   - rqt_joint_trajectory_controller
   - velocity_controllers
   tags:
    release: release/indigo/{package}/{version}
   url: https://github.com/ros-gbp/ros_controllers-release.git
   version: 0.9.4-0
  source:
   type: git
   url: https://github.com/ros-controls/ros_controllers.git
   version: indigo-devel
   status: developed

steer_drive_ros

 steer_drive_ros:
  doc:
   type: git
   url: https://github.com/CIR-KIT/steer_drive_ros.git
   version: indigo-devel
  source:
   type: git
   url: https://github.com/CIR-KIT/steer_drive_ros.git
   version: indigo-devel
  status: maintained

timed_roslaunch

 timed_roslaunch:
  doc:
   type: git
   url: https://github.com/MoriKen254/timed_roslaunch.git
   version: kinetic-devel
  release:
   tags:
    release: release/kinetic/{package}/{version}
   url: https://github.com/MoriKen254/timed_roslaunch-release.git
   version: 0.1.1-3
  source:
   test_pull_requests: true
   type: git
   url: https://github.com/MoriKen254/timed_roslaunch.git
   version: kinetic-devel
  status: maintained

ROS-I

Bloom

Home Page

ROSWiki

Tutorial

GitHub

REP 143

Jenkins

Buildfarm sample

apt list

diff_drive_controller

Install

Comparison b/w two disributions

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 7, 2018

目指せ! sudo apt insall ros-kinetic-timed_roslaunch

あくまで目的は、確実にテーブルの上にオブジェクトを載せられるよう、時間差でspawnスクリプトを実行できるようにすることです。

https://github.com/MoriKen254/timed_roslaunch を題材に、ros public repository でのリリースまでのスケジュール感を把握するため、記録します。

この後の流れ

  • upstream への登録
  • 依存関係の修正
    • これができればrosdep で依存関係が解決できる。
      • このリポジトリでは .rosinstall に頼りたくない。
      • 教育用途なので、あまり登場人物を増やしたくない。
      • 書籍内でのサンプルインストール部でも .rosinstall について記載はしていない。(一般論としては記載あり)
    • 10章のpkgの<exec_depend>に追加 → timed_roslaunch に対応したオブジェクトspawn用launchファイルを追加。
  • 水平展開

@MoriKen254
Copy link
Member Author

@MoriKen254
Copy link
Member Author

  • 2018/11/08-2

この辺参考にしてros-shadow-fixed 経由でapt installしてみたのですが、install先がおかしくて参りました。コマンド自体は良さげなんですが、deb パッケージの中身が変な感じです。

$ sudo apt install ros-kinetic-timed-roslaunch
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  ros-kinetic-timed-roslaunch
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 141 個。
4,204 B のアーカイブを取得する必要があります。
この操作後に追加で 19.5 kB のディスク容量が消費されます。
取得:1 http://packages.ros.org/ros-shadow-fixed/ubuntu xenial/main amd64 ros-kinetic-timed-roslaunch amd64 0.1.1-3xenial-20181107-003648-0800 [4,204 B]
4,204 B を 0秒 で取得しました (8,988 B/s)               
以前に未選択のパッケージ ros-kinetic-timed-roslaunch を選択しています。
(データベースを読み込んでいます ... 現在 292355 個のファイルとディレクトリがインストールされています。)
.../ros-kinetic-timed-roslaunch_0.1.1-3xenial-20181107-003648-0800_amd64.deb を展開する準備をしています ...
ros-kinetic-timed-roslaunch (0.1.1-3xenial-20181107-003648-0800) を展開しています...
ros-kinetic-timed-roslaunch (0.1.1-3xenial-20181107-003648-0800) を設定しています ...

詳細をROS-ANSWERSで質問中。承認待ちらしく、まだopenになってないかもしれません。助けてほしいです涙。。。

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 8, 2018

ROS-ANSWERSで回答頂き、とりあえず仕切り直ししました。素早くてとてもありがたいです。

@MoriKen254
Copy link
Member Author

@MoriKen254
Copy link
Member Author

  • 2018/11/09-3

    • ros-shadow-fixedにてsudo apt install ros-kinetic-timed-roslaunchのインストール先の修正を確認。
  • 2018/11/10

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 10, 2018

@MoriKen254
Copy link
Member Author

  • 2018/11/13
    • public に反映される http://packages.ros.org/ros/ubuntu/pool/main/r/
      • 前回更新が2018/10/30だったので、2週間でUpdateした模様。
      • ros-shadow-fixed だと平日火曜日~金曜日くらいは1~2日に1回ペースで反映される模様。
    • sudo apt install ros-kinetic-timed-roslaunch 成功。
      • とりあえず普通に動くっぽい。
      • サンプルスクリプトの実行権限が外されてしまっている。コピー先を見直して再リリース予定。

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 13, 2018

  • 2018/11/14
    • テーブル spawn → 1秒後 ビールとカップ spawn OK。PR出す。
    • Wiki ドキュメントヘッダにもkineticが追加される。publicになった瞬間同期するらしい。

@MoriKen254
Copy link
Member Author

MoriKen254 commented Nov 13, 2018

教訓

Webの情報と体感から察するに、こんな感じのことが起きているのだろう。

1

@MoriKen254
Copy link
Member Author

おかげさまで本Issueの目的が達成されました @ #43

他distribution等への水平展開や、他パッケージの依存関係解決は、そちらのリポジトリのIssueに上げ、本件はCloseします。

ご協力いただき、ありがとうございました。

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

2 participants