二つのROS Control

ROS対応Choreonoidのメニューに現れる「ROS Control」は,これのことでしょうか?

一方,開発版のドキュメントの[ros_control連携版 Tankチュートリアル — Choreonoid 開発版 ドキュメント](https://ros_control連携版 Tankチュートリアル)の中で使われているROSControlは,
https://github.com/RyodoTanaka/choreonoid_ros_control
ですね?

前者は後者を置き換えるものでしょうか?
前者のドキュメントや実例はありますか?

cnoid_tank_pkgs の issueに投稿しましたが,最新版のChoreonoidでは,cnoid_tank_pkgsでシミュレーションを開始すると,Choreonoidが落ちます.私の環境の問題でしょうか?それとも,cnoid_tank_pkgsの内容が最新版のChoreonoidと合わないのでしょうか?

あちこち探していて,以下のissueを見つけました.

この内容が現在のchoreonoid_rosに取り込まれたのですよね?

取り込まれた内容は,choreonoid_ros_controlと組み合わせて使うのですか?

roslaunch cnoid_tank_bingup choreonoid.launch

の内容は,

に見つけました.これをchoreonoid/cnoid_tank_pkgsと置き換えて試しています.シミュレーションは開始できますが,端末に警告が繰り返し表示され,うまく動作していないようです.

以下のような表示です.シミュレーション開始前から出ていました.

... logging to /home/ubuntu/.ros/log/70706f82-e18f-11ec-81b6-0242ac110002/roslaunch-29b2fae24a28-46494.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

xacro: in-order processing became default in ROS Melodic. You can drop the option.
started roslaunch server http://127.0.0.1:34063/

SUMMARY
========

PARAMETERS
 * /Tank/base_controller/angular/z/has_acceleration_limits: True
 * /Tank/base_controller/angular/z/has_velocity_limits: True
 * /Tank/base_controller/angular/z/max_acceleration: 1.57
 * /Tank/base_controller/angular/z/max_velocity: 6.28
 * /Tank/base_controller/angular/z/min_acceleration: -1.57
 * /Tank/base_controller/angular/z/min_velocity: -6.28
 * /Tank/base_controller/cmd_vel_timeout: 1.0
 * /Tank/base_controller/enable_odom_tf: False
 * /Tank/base_controller/left_wheel: TRACK_L
 * /Tank/base_controller/linear/x/has_acceleration_limits: True
 * /Tank/base_controller/linear/x/has_velocity_limits: True
 * /Tank/base_controller/linear/x/max_acceleration: 1.0
 * /Tank/base_controller/linear/x/max_velocity: 4.0
 * /Tank/base_controller/linear/x/min_acceleration: -1.0
 * /Tank/base_controller/linear/x/min_velocity: -4.0
 * /Tank/base_controller/pose_covariance_diagonal: [0.001, 0.001, 10...
 * /Tank/base_controller/publish_rate: 50.0
 * /Tank/base_controller/right_wheel: TRACK_R
 * /Tank/base_controller/twist_covariance_diagonal: [0.001, 0.001, 10...
 * /Tank/base_controller/type: diff_drive_contro...
 * /Tank/base_controller/wheel_radius: 1.0
 * /Tank/base_controller/wheel_radius_multiplier: 1.0
 * /Tank/base_controller/wheel_separation: 0.44
 * /Tank/base_controller/wheel_separation_multiplier: 1.0
 * /Tank/joint_state_controller/publish_rate: 100
 * /Tank/joint_state_controller/type: joint_state_contr...
 * /Tank/robot_description: <?xml version="1....
 * /Tank/turret_controller/gains/TURRET_P/d: 100
 * /Tank/turret_controller/gains/TURRET_P/i: 1000
 * /Tank/turret_controller/gains/TURRET_P/p: 10000
 * /Tank/turret_controller/gains/TURRET_Y/d: 100
 * /Tank/turret_controller/gains/TURRET_Y/i: 1000
 * /Tank/turret_controller/gains/TURRET_Y/p: 10000
 * /Tank/turret_controller/joints: ['TURRET_Y', 'TUR...
 * /Tank/turret_controller/type: effort_controller...
 * /rosdistro: noetic
 * /rosversion: 1.15.14
 * /use_sim_time: True

NODES
  /
    choreonoid (choreonoid_ros/choreonoid)
    tank_controller_spawner (controller_manager/spawner)
  /Tank/
    robot_state_publisher (robot_state_publisher/robot_state_publisher)

ROS_MASTER_URI=http://127.0.0.1:11311

process[choreonoid-1]: started with pid [46510]
process[Tank/robot_state_publisher-2]: started with pid [46511]
process[tank_controller_spawner-3]: started with pid [46512]
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ubuntu'
[ WARN] [1654082873.860612302]: Shutdown request received.
[ WARN] [1654082873.861384276]: Reason given for shutdown: [[/Tank/robot_state_publisher] Reason: new node registered with same name]
[Tank/robot_state_publisher-2] process has finished cleanly
log file: /home/ubuntu/.ros/log/70706f82-e18f-11ec-81b6-0242ac110002/Tank-robot_state_publisher-2*.log
[Tank/robot_state_publisher-2] restarting process
process[Tank/robot_state_publisher-2]: started with pid [46567]
[INFO] [1654082874.067203, 0.000000]: Controller Spawner: Waiting for service Tank/controller_manager/load_controller
[ WARN] [1654082874.090818164]: Shutdown request received.
[ WARN] [1654082874.091480145]: Reason given for shutdown: [[/Tank/robot_state_publisher] Reason: new node registered with same name]
[Tank/robot_state_publisher-2] process has finished cleanly
log file: /home/ubuntu/.ros/log/70706f82-e18f-11ec-81b6-0242ac110002/Tank-robot_state_publisher-2*.log
[Tank/robot_state_publisher-2] restarting process
process[Tank/robot_state_publisher-2]: started with pid [46592]
[ WARN] [1654082874.258835169]: Shutdown request received.
[ WARN] [1654082874.259909671]: Reason given for shutdown: [[/Tank/robot_state_publisher] Reason: new node registered with same name]
shutdown request: [/tank_controller_spawner] Reason: new node registered with same name
[ WARN] [1654082874.295655887]: Shutdown request received.
[ WARN] [1654082874.295790062]: Reason given for shutdown: [[/Tank/robot_state_publisher] Reason: new node registered with same name]
[WARN] [1654082874.369735, 0.000000]: Controller Spawner couldn't find the expected controller_manager ROS interface.
[Tank/robot_state_publisher-2] process has finished cleanly
log file: /home/ubuntu/.ros/log/70706f82-e18f-11ec-81b6-0242ac110002/Tank-robot_state_publisher-2*.log
[Tank/robot_state_publisher-2] restarting process

(後略)

本件についても来週調査をいたします.今しばらくお待ちください.

お待たせをいたしました.一つずつ回答させていただきます.

一方,開発版のドキュメントの[ros_control連携版 Tankチュートリアル — Choreonoid 開発版 ドキュメント ](https://ros_control連携版 Tankチュートリアル)の中で使われているROSControlは,
https://github.com/RyodoTanaka/choreonoid_ros_control
ですね?

前者は後者を置き換えるものでしょうか?

はい,置き換えるものになっております.
現在,choreonoid_ros_controlは利用せずに,choreonoid_rosのみでの利用が可能になっています.

前者のドキュメントや実例はありますか?

前者を後者を置き換える際に,ドキュメントの更新を行っておりませんでした.申し訳ありません.
基本的には使い方は同じです.ただし,プラグインパスが変わっているため,更新できていなかったサンプルのプロジェクトファイルが不適切な状態になっており,動作しない状況となっているようでした.

取り急ぎですが,以下のブランチに,(Melodicですが)動作確認が取れるところまで修正したものを上げました.
こちらのブランチでシミュレーションが開始できるかどうか,お試しいただけると幸いです.

Choreonoidのros_control対応の整備に不十分なところがありまして申し訳ありません。
Onishiさんご対応ありがとうございます。私の方でも確認してまいります。

応答が遅くなり申し訳ありません.
https://github.com/choreonoid/cnoid_tank_pkgs/tree/fix-ROSControlItem-settings
を試そうとしたのですが,ブランチが見つかりませんでした.

もうマージされていたのですね.

masterブランチで試してみます.

この問題は解消しました.
環境が複雑でシュミレーションの実行が遅く,しっかり動作確認はできていませんが.

追加の報告です.

roslaunch cnoid_tank_bringup rtf_plant.launch

を実行し,Choreonoidでシミュレーションを開始し,別の端末で

rosrun rqt_robot_steering rqt_robot_steering

を実行して,トピック名に/Tank/base_controller/cmd_velを指定して,速度指令をパブリッシュしてもタンクが動いていないようです.

rqt __ns:=/Tank

でJoint trajectory controllerを使いタレットは動かせています.

何か間違っていますか?

さらに報告です.

rosrun rqt_robot_steering rqt_robot_steering

/Tank/base_controller/cmd_velを指定してして動きませんでしたが,

rqt __ns:=/Tank

で起動したrqtの中で,Robot Steeringプラグインで/Tank/base_controller/cmd_velを指定して動きました.

ノードのネームスペースが異なるので,トピック通信ができないということですか?

rqt_graphを見てもよくわかりませんでした.

そして,質問があります.

roslaunch cnoid_tank_bringup rtf_plant.launch

を実行し,Choreonoidでシミュレーションを開始し,一旦シミュレーションを停止した後に,再度初期位置からシミュレーションを開始した場合,コントローラが機能していないようです.ROSControlを使っている他のプロジェクトでもそのような状況を確認しています.これはそういう仕様なのでしょうか?

ROSの仕様では,そのようなことはないはずです.

こちら調査いたします.