Closed MoriKen254 closed 5 years ago
当方の環境で試して見た結果テーブルよりも先にビール缶とコップが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
を用いればもう少しスマートかもですが、どう対処するかはお任せしようと思います。
ありがとうございます。状況はよくわかりました。tableは構成要素が大きいから、spawnerの応答速度がマシンスペック次第では大きく遅延してしまう場合があるのだと推察されます。
では、次のような方針にするのはどうでしょう。
ROS本の本文で全文が記述されているファイルなので、これを消すわけには行きません。 よって、据え置きします。
@AtsukiYokota さんご指摘の分割型のファイルも用意します。その使用方法は、READMEに記載します。
よくご存知でしたね笑。
これを使うと解決する問題って結構多いのは分かるのですが、教育用書籍という観点から、あまり外部パッケージを入れることで純粋な学習を妨げてしまわないか懸念している節がありました。
とはいえ、こういう状況ですし、「実用」という名前も入れていますし、リポジトリにwstoolを追加して入れるのもいいかな、と思っています。
そして、もう一つlaunchを追加し、READMEに記載。この方針なら、ROS本との整合性も保った上で、もう少し中身が分かる人向けの応用ユースケースの紹介もできる。
あるいは、upstreamのaptに追加したいかも。aptに追加するの結構大変な記憶があるのですが、やり方 分かる人是非教えて下さい。
自作pkgを過大評価するつもりはないのですが、timed_roslaunchは、その価値があると思います。
upstreamのaptに追加したい
この辺ですよねぇ。
Release
PreRelease
怖いのでPreReleaseから着手しているのですが、すこし手こずりそうなので、launch分割+READMEまでで一旦PR出します。
TORKのブログでリリース関連の情報共有がされています。やってみます。
自作パッケージをリリースするにあたって調べてみたメモです。情報があちゃこちゃにあって目がシパシパしていたのですが笑、ようやっとBuildfarm
とbloom
の仕組みが見えてきました汗。
特にまとめているわけではありませんが、備忘録として(すぐ忘れるので笑)、かつ情報共有として一旦簡潔に整理したものを上げておきます。
Wiki
Source (sourcedev)
Binary (binarydev)
Devel
Doc
setting yaml file
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
Wiki
Devel
Doc
setting yaml file
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: 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
Top
Source
Binary
Source
Binary
Lists
Source
Binary
sudo apt insall ros-kinetic-timed_roslaunch
!あくまで目的は、確実にテーブルの上にオブジェクトを載せられるよう、時間差でspawnスクリプトを実行できるようにすることです。
https://github.com/MoriKen254/timed_roslaunch を題材に、ros public repository でのリリースまでのスケジュール感を把握するため、記録します。
2018/11/03
2018/11/07
メモ
shadow-fix
に入るかと。public
になる。buildfarm
のCIパスチェックindustrial_ci
で通ってもbuildfarm
では通らない場合があるので、修正が必要になった。buildfarm
のDocker空間内でのユーザではInstall時のフォルダ作成権限がないので、ファイルを個別にコピーするよう要修正。これはやってみないと分からない。これができないとlaunchtestは通らない。
sudo apt insall ros-kinetic-timed_roslaunch
!rosdep
で依存関係が解決できる。timed_roslaunch
に対応したオブジェクトspawn用launchファイルを追加。この辺参考にして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になってないかもしれません。助けてほしいです涙。。。
ROS-ANSWERS
で回答頂き、とりあえず仕切り直ししました。素早くてとてもありがたいです。
2018/11/09-3
ros-shadow-fixed
にてsudo apt install ros-kinetic-timed-roslaunch
のインストール先の修正を確認。2018/11/10
gazebo_ros
のリポジトリを参考にしながらInstallの設定を見直し。0.1.3として再リリース。ros-shadow-fixed
のver.0.1.3
にてsudo apt install ros-kinetic-timed-roslaunch
を実施。所望の挙動を確認。Buildfarm
CI にてテスト成功確認。ros-shadow-fixed
の段階でやってくれる。毎時45分のpolling。public
に反映される http://packages.ros.org/ros/ubuntu/pool/main/r/ros-shadow-fixed
だと平日火曜日~金曜日くらいは1~2日に1回ペースで反映される模様。sudo apt install ros-kinetic-timed-roslaunch
成功。kinetic
が追加される。public
になった瞬間同期するらしい。Webの情報と体感から察するに、こんな感じのことが起きているのだろう。
おかげさまで本Issueの目的が達成されました @ https://github.com/Nishida-Lab/rosbook_pkgs/pull/43
他distribution等への水平展開や、他パッケージの依存関係解決は、そちらのリポジトリのIssueに上げ、本件はCloseします。
ご協力いただき、ありがとうございました。
題記、https://github.com/Nishida-Lab/rosbook_pkgs/issues/35 で言及。
おそらくですが、マシンスペックの影響?(当方では上にのっている) table がspawnされる前に他のオブジェクトが自由落下でしたに行ってしまっている?
テーブルの上に乗せるなら、
chapter10/smach_sample/launch/spawn_object.launch
にて、下記スクリプトのz座標を高くすれば解決します。ただ、あまり高くするとテーブルに載ったときにグラスが倒れます。当方の環境ではこの高さがテーブルに乗り、かつグラスが倒れないいい感じの値だったので、これにしました。
@AtsukiYokota さんの環境でうまくいく値に修正して報告してもらえますか?