jsk-enshu / robot-programming

This is exercise for robot-programming.
38 stars 291 forks source link

revert cmd_vel_renamer, so that we can send /cmd_vel topic, c.f #407 #418

Closed k-okada closed 2 years ago

k-okada commented 2 years ago

@kindsenior

407 の https://github.com/jsk-enshu/robot-programming/pull/407/files#diff-08e0e0faabe14a0737b8228dc366c0cdb979c4bba52880aa00c60c593ab195abL15-L16

/cmd_vel/mobile_base/commands/velocity の別名として使うコードを消しているんだけど,これ必要かな?

世の中的には cmd_vel が一般的で,teleop_twist_keyboard.py もデフォルトこれなので,消す必要ないと思うんですがいかがでしょうか? もし,enshuロボットは,/mobile_base/commands/velocity で行くんだということだとすると, https://github.com/jsk-enshu/robot-programming/blob/0c6f524d5cb296b1df2985dc127ada9e1e4793ad/dxl_armed_turtlebot/launch/enshu.perspective#L34-L37

の部分を変更する必要があるかとおもいます. もしこれで良ければ,マージして,以下に善後策を伝えていただければと思います.

416 #417

%新しくコードを追加する前に Travisなり GithubAction なり使えるように戻すべきでした...

kindsenior commented 2 years ago

すみません 遅くなりました

変更 #407 の目的はシミュレーションと実機のlaunchを共通化するためです (joystickの課題でgazeboとjoystickのlaunchを起動するとcmd_vel_renameのノード名が重複する)

これは/cmd_velの別名を消したいということではなくて, mobile_baseを出すパターン(旧gazebo):/cmd_vel → /mobile_base/commands/velocity から cmd_vel_muxを出すパターン(実機):/cmd_vel → /cmd_vel_mux/input/teleop に変更してgazeboと実機のrelayの流れを共通化したということです cmd_vel_muxへのrelayはjoystickのlaunchでやってくださいということです

やりたいこととしてはjoystickの課題でgazeboと実機でlaunchが起動して正常に動作すればよいだけなので以下は考えどころなんでしょうか...? a) 実機に合わせてcmd_vel_muxとした方がいいと思いましたが,今確かめたら実機もmobile_baseパターンで動く気がしてて,cmd_vel_muxが本当に必要なのか(試したときに複数のvelコマンドが出てないだけ?)が分からなくなってます...? cmd_vel_muxではなくmobile_baseに直接relayする方に合わせるのもあるかもしれません? b) 1日目演習資料の課題1のところには「cmd_velを使ってもいい」とあるところに「joystickを起動しろ」と書き忘れてたので,relayするlaunchは考えたほうがいい気もします?(ただし,その場合,turtlebot_bringup/minimalの方に入れるのは変なので,dxl_armed_turtlebot/minimal.launchみたいな演習用のminimalが必要になる?)

k-okada commented 2 years ago

@kindsenior やりたいことの優先度としては

1) 実機もシミュ−ションも cmd_vel で動いてほしい 2) 実機もシミュレションも [turtleot](https://github.com/jsk-enshu/robot-programming/blob/master/dxl_armed_turtlebot/launch/turtlebot_joystick_teleop.launch が動いてほしい,ただし,別のlaunch fileファイルでもよい. 3) 実機とシミュレーションでできるだけファイルは共通化したい.

gazebo では...

/cmd_vel -> ("cmd_vel_renamer") -> /mobile_base/commands/velocity -> ("gazebo")

gazebo -> https://github.com/yujinrobot/kobuki_desktop/blob/ea5b7283d92f61efbd1a2185b46e1ad344e7e81a/kobuki_gazebo_plugins/src/gazebo_ros_kobuki_loads.cpp#L347-L350

実機ではおそらく, https://github.com/jsk-enshu/robot-programming/blob/master/dxl_armed_turtlebot/launch/turtlebot_joystick_teleop.launchは

/cmd_vel -> ("cmd_vel_renamer") -> /cmd_vel_mux/input/teleop -> ("yocs_cmd_vel_mux/CmdVelMuxNodelet") -> /mobile_base/commands/velocity
/cmd_vel_mux/input/teleop_raw -> ("teleop_velocity_smoother")  -> /cmd_vel_mux/input/teleop -> ("yocs_cmd_vel_mux/CmdVelMuxNodelet") -> /mobile_base/commands/velocity
/joy -> (turtlebot_telop_joystick) -> /teleop_velocity_smoother/raw_cmd_vel -> ("teleop_velocity_smoother") -> /cmd_vel_mux/input_teleop ...

だと理解したとして,

解としてはいろいろあって,

などでしょうか.

ちなみに,#416, #417 の人はこの会話を見て自分で,この2行を追加してGazeboでできました,と言ってきていて,これはこれで素晴らしいんですが,もし次の演習までに実機用のなにかコードをrobot-programmingに追加したとして,その時にwstool updateとしてくださいといっても,localに変更があるというエラーがでるはずです.で,そのときには,エラーに気づかず,新しい反映がないワークスペースで作業を進めて動かない,エラーに気づくけど,それを解決する方法がわからない,の2つの可能性があり,これは,問題がおきたときに,トラブルの発見からして難しいパターンになるとおもいます.

そう考えると理想的には何でも良いので動くPRをマージして,wstool update してください,で解決するのが,greedyな評価関数として,結構有効だったりします.

k-okada commented 2 years ago

実機もシミュ−ションも cmd_vel で動いてほしい

の前提は1つのlaunchを動かしたら,この状態にしたい,ということなので,もし,turtlebot_joystick_teleop.launch を立ち上げればよいのでは?ということだったら,dxl_armed_turtlebot_gazebo.launchにこれをインクルードして,かつ,dxl_armed_turtlebot/minimal.launch にもこれを入れる形にするんだとおもいます.ただこの場合,演習の資料を遡って変更(つまりturtlebot_joystick_teleop.launch)を別途たちげるようにはしない)という変更が必要になるって,すくなくとも演習の時点で動いた資料を直すのは,混乱の元だと思うので,やっぱり,これ以外の作戦で,とにかく早めに, 現状,講義の宿題がそのまま動かない状況を修正したいです.

kindsenior commented 2 years ago

419 で対応しました

anonにするのがどちらか迷いましたが,とりあえずjoystickのrenamerをanonにしました 逆がいいなら直します これでどうでしょうか?

演習だけでなく授業の資料の資料も考えないといけないということを深く理解しました 申し訳ございません...