本記事では、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のツリービュー上で表示されているロボット名と異なっている。
対応方法
以下の点を修正することで、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関連の連携に関する情報が少ないので、少しでも皆様のお役に立つことができれば幸いです。