本記事では、ChoreonoidとRviz(ROSの可視化ツール)の連携を行った際にエラー原因が分からず、つまずいた点を掲載します。

発生現象

Choreonoidでシミュレーション開始後Rvizの表示を行ったところ、”fixed”以外(関節タイプに”revolute”、”continuous”等を指定)の関節タイプで、以下のように「Status:Error」が発生しました。

【Rvizのエラー内容】
No transform from [wheel_left_link] to [base_footprint]
No transform from [wheel_right_link] to [base_footprint]

【ターミナル上のエラー内容】
以下のエラーは、関節名が不一致の場合のみ表示されます。

roslaunch cnoid_turtlebot_bringup waffle_open_manipulator_house.launch
[ WARN] [1649310569.634715343, 10.000000000]: Joint state with name: “Gripper_left” was received but not found in URDF

 

図1. ChoreonoidとRvizの画面(一部の関節が白く表示)

発生原因

発生原因として、以下の2点が考えられます。

  • ① Choreonoidのボディファイルの関節名とURDFファイルの関節名(joint要素で指定した関節名)が異なっている。
  • ② launchファイルのnodeタグで ”robot_state_publisher” ノードを記述し、remapタグによりトピック名の変更を以下のように行った際に、「/[ロボット名]/joint_states」のロボット名がChoreonoidのツリービュー上で表示されているロボット名と異なっている。
図2. Choreonoid画面とlaunchファイルの記述内容

対応方法

以下の点を修正することで、Rvizにロボットモデルが正常に表示されます。

  • ① Choreonoidのボディファイルの関節名とURDFファイルの関節名を確認し、同じ関節名となるように修正する。
  • ② ノード名に指定しているロボット名をChoreonoidのツリービュー上に表示されているロボット名と同じ名前に修正する。
  • ※ ロボット名に誤りがある場合、別ターミナルで以下のコマンドを実行すると”joint_states”トピックが表示されません。(大文字、小文字の違いでも正常に表示されなくなるので注意)
rosrun rqt_graph rqt_graph

補足

モデル全体が白色で表示される場合は、launchファイルに “robot_state_publisher” ノードが記述されていないことが原因です。launchファイルに以下の行を追加してください。
 
【robot_state_publisherの記述】

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
  <remap from="joint_states" to="/[ロボット名]/joint_states" />
</node>

 

図3. ChoreonoidとRvizの画面(URDFモデルが白く表示)

 
 
いかがだったでしょうか。
ChoreonoidとROS関連の連携に関する情報が少ないので、少しでも皆様のお役に立つことができれば幸いです。