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

[Do not merge] Refactor the turtueblteus model as the derived model from robot-move-base-interface #270

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

tongtybj
Copy link
Collaborator

@tongtybj tongtybj commented Dec 4, 2018

@k-okada

pr2eusに習って、turteboteusもrobot-move-base-intefaceを継承するようにしてみました。
(このPR自体 #245 をマージしているので少しごちゃごちゃしています)

主に変更したところは:

:super robot-move-base-interface

あとは、
turtlebot-interface-common.lにかかれているオーバーライトメソッド(:go-stop, :go-pos, :move-to, etc)を削除しました。

それで、

$ roslaunch dxl_armed_turtlebot dxl_armed_turtlebot_gazebo.launch
$ roslaunch dxl_armed_turtlebot dxl_armed_turtlebot_navigation.launch map_file:=`rospack find dxl_armed_turtlebot`/map/gazebo_world.yaml

でmap_server, amcl, move_baseが立ち上がっている状態で, roseusで

irteusgl$ (load "package://dxl_armed_turtlebot/euslisp/dxl-armed-turtlebot-interface.l")
;; irteusgl$ (load "package://turtleboteus/euslisp/turtlebot-interface.l") でもよい
irteusgl$ (dxl-armed-turtlebot-init)

で以下のメソッドの動作が確認できます

irteusgl$ send *ri* :move-to (make-coords :pos (float-vector 3000 3000 0)  :rpy (float-vector (deg2rad 0) 0 0)) :no-wait nil :frame-id "map"
irteusgl$ send *ri* :go-pos -1 0 0
irteusgl$ send *ri* :go-velocity -0.1 0 0 1000

@tongtybj
Copy link
Collaborator Author

tongtybj commented Dec 4, 2018

また、以下の問題も残っています:

  1. メソッド:go-velocityに関しては、まだオーバライトのものを残しています。理由は、turtlebotにはpr2のように/base_controller/follow_joint_trajectoryがまだ用意されていないため、オーバーライトしないとエラーが吐かれます。これはpr2eus/robot-interface.lを台車ロボットにも使う jsk-ros-pkg/jsk_common#254 (comment) とも関係しますが、今後はpr2_base_trajectory_actionを用意するべきでしょうか。
  2. move_base(move-base-action)がない状態で、send *ri* :go-pos -1 0 0を実行すると以下のようなエラーが発生します:
2.irteusgl$ send *ri* :go-pos -1 0 0
nil
3.irteusgl$ [ERROR] [1543954163.696844048, 7417.910000000]: "map" passed to lookupTransform argument target_frame does not exist. 
[ WARN] [1543954168.793402732, 7423.010000000]: Still waiting for [move_base] action server. 5 seconds have passed.
[ WARN] [1543954168.794358839, 7423.010000000]: [move_base] action server is not found
[ WARN] [1543954168.794395380, 7423.010000000]:      goal=0, cancel=0, feedback=0, result=0
[ERROR] [1543954168.794472387, 7423.010000000]: [move_base] :wait-for-result (return nil when no goal exists)
;; Segmentation Fault.
;; in (ros::service-call srvname (instance std_srvs::emptyrequest :init))
;; You are still in a signal handler.
;;Try reset or throw to upper level as soon as possible.
;; code=-922848720 x=c8fe7100 addr=7ffdc8fe7a80

これは、robot-move-base-interfaceとしては正しい挙動だと思いますが、地図や自己位置推定がなく、wheel odometeryだけで台車を動かすことも考慮すべきだと思い、今まではこれに対応したアドホックな実装になっていると気づきました(:go-pos -> :go-velocity -> directly send vel_cmd)。
それで、PR2などは地図のない状態でもgo-posできたと記憶しておりますが、この問題はどのように対処すればいいのかご教示いただければと思います。

@k-okada
Copy link
Member

k-okada commented Dec 8, 2018

今後はpr2_base_trajectory_actionを用意するべきでしょうか。

実用上はなくていいとはおもいますが、一般的なbase_trajectory_actionを用意してpr2もfetchも使えるようにする、というのはあるかと思います。あるいはドローンもこれかもしれないですね。

PR2などは地図のない状態でもgo-posできたと記憶しておりますが、

これはできないと思うけど。。。 @takayuki5168
PR2は地図生成/自己位置同定がデフォルトで動くシステムになっています。
turtlebotシステムをどうするか、常にデフォルトでこれらを動かすか、後でいれるか。
例えば歩行ロボットだったらバランサはデフォルトで動くし、ドローンも姿勢制御
はデフォルト扱いだと思うけど、PR2の場合はそれが地図生成/自己位置同定、ということです。
なので、入れるのでいいとは思うけど、演習の関係上、各自地図生成をlaunchしてね、
となると、ないことになります。

HRP2はgo-pos すると地図なく、オドメトリだけ見て移動します。これと等価なものがgo-pos-unsafeにあんります。

@tongtybj
Copy link
Collaborator Author

一般的なbase_trajectory_actionを用意してpr2もfetchも使えるようにする、というのはあるかと思います。あるいはドローンもこれかもしれないですね。

おっしゃるとおりだと思います。

  • fetch, turtlebot: x, yaw
  • pr2: x, y, yaw (全方位)
  • ドローン: x,y,z,yaw
    を網羅できるものがあるといいと思っています。

なので、入れるのでいいとは思うけど、演習の関係上、各自地図生成をlaunchしてね、 となると、ないことになります。

演習状況を見ると、地図なしでのgo-pos (つまり go-pos-unsafe)があると、最初がやりやすいですね。

@k-okada
Copy link
Member

k-okada commented Dec 17, 2018 via email

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.

2 participants