Skip to content

ソフトウェア構成

Mori edited this page Aug 12, 2018 · 7 revisions

ソフトウェア構成図

motoman_projectのソフトウェア構成の概要を図で示します。

リポジトリ構成図

下図のようになっています。プライマリとなるのがmotoman_projectです。

repository_configuration

パッケージ構成図

ざっくり下図の通りです。

package_configuration

controller 部構成図

ざっと比較できるように、それぞれの構成図を併記します。実機側の作りがかなり異なることが見て取れると思います。シミュレータ側はGazeboを使うので、当然変わりはありません。

このIssueでの議論とソースコードを参照して書いてあります。変なことが書いてあったり、ここが分からないとかあれば、遠慮なくご指摘ください。

特筆事項

本リポジトリのソフトウェア構成について最も注意すべき点は、Motoman側のコントローラがros_controlに適合していないという点です。そのため実機・シミュレーションで、共通のros_controllerHardwareInterfaceを用いるという、一般的なros_controlの設計思想とは異なる作りになります。

YaskawaROS-I版コントローラであるmotoman_driverに関しては、MotoPlusなるソフトウェアの仕様に合わせてそのような構成になるとのことです。

とはいえ多分、これはYaskawaだからという話ではなく、おそらくメーカ問わず手っ取り早くROS-I対応させようとしたときに生じてしまう問題です。ros_controllerを作るとなると、既存の制御器をまるごと作り直しになりますし、パソコンでしかもROSの不安定な周期で制御するとなった瞬間に既存のリアルタイム性を担保できなくなるとか、結構な色々な問題を抱えることになるかと。

一般的なros_controllerを用いたときの構成図

ros_control

motoman_projectにおける構成図

  • robot_state_publisherTFメッセージはなんとなく追加。

motoman_project

motoman_projectにおける実機での相違点

使用しないもの

  • RobotHWを使用しない。
    • そのかわり、中身はブラックボックスに。
    • 会社の技術資産だから守っているのと、流用したほうが楽ちんだから。
  • ControllerManagerを使用しない。
  • JointStateControllerを使用しない。

代わりに使用するもの

  • ROS-Imotoman_driverを使用する。
  • Moveit!actionlib_msgをハンドリングするためのmotoman_control_nodeを使用する(研究室オリジナルで作っている)。
    • motoman_driverが指令値としてサブスクライブするtopic_msgに変換をかけている。
    • 目標到達判定もここでやっている。action_servergoal状態を判定するため。
  • JointStateControllerの代わりにjoint_statesをパブリッシュしているのは、多分motoman_driverだよね(それ以外この情報を持っている人がいないと思う)。