ゼロからのROS入門

ROSにおけるシミュレータ

大阪大学 中島優作


← シリーズ一覧に戻る

本スライドの担当範囲

本スライドではシミュレータ上でロボットを動かす方法を説明します。

環境構築がまだの方は→環境構築はこちら

ROSのシミュレータの種類

動作確認

  • fake_joint
  • ロボットと周りの環境との接触は考慮されませんが動作が軽い
  • 位置制御のみ使える

物理シミュレータ

  • Gazebo
  • ロボットと周りの環境との接触等を含めた物理シミュレータ
  • 物理計算が重いのでGPUがあった方が良いです

fake_joint vs Gazebo 比較

全画面表示

fake_joint

fake_joint詳細

使い方↓

fake_joint

  • fake_jointはTORK-A(東京オープンソースロボティクス協会)が開発したROS1のパッケージで、Rviz上で直接ロボットの動きをシミュレーションできます。
  • 元々ROSにはない仕組みでしたが、ROS2ではMockComponentという名前で公式から同様の機能が提供されています。

fake jointとロボットコントローラとのつながり

ros_control構成図

fake_jointを使うlaunchの例

  • launchディレクトリにur5e_sim.launchという名前で左のコードを保存
  • ビルドします(小文字の"b"で自動的にビルドが走ります)
  • 次のコマンドで実行してください"roslaunch ros_study ur5e_sim.launch"

このような画面になればok

fake_joint表示デモ

GUIで関節を動かせます

このGUIはJointTrajectoryControllerというロボットコントローラです

GUIで関節を動かせます

対応関係

ros_control構成図
<!-- Load URDF -->
<param name="robot_description" command="$(find xacro)/xacro '$(arg model)'" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

<!-- launch rviz -->
<node name="rviz" pkg="rviz" type="rviz" respawn="false" args="-d $(arg rviz_config)" output="screen"/>
<!-- Load controllers -->
<rosparam file="$(arg controller_config_file)" command="load"/>
<node name="ros_control_controller_spawner" pkg="controller_manager" type="spawner"
      args="$(arg controllers)" output="screen" respawn="false" />

<!-- Launch moveit -->
<include file="$(find ur5e_moveit_config)/launch/move_group.launch">
  <arg name="allow_trajectory_execution" default="true" />
  <arg name="fake_execution" value="false" />
</include>
<!--Run Fake joint driver -->
<node name="fake_joint_driver" pkg="fake_joint_driver" type="fake_joint_driver_node" />

<!-- GUI for joint control -->
<node name="rqt_joint_trajectory_controller" pkg="rqt_joint_trajectory_controller" type="rqt_joint_trajectory_controller" output="screen"/>

<!-- Plot for monitoring -->
<node name="rqt_plot" pkg="rqt_plot" type="rqt_plot" output="screen"/>

gazebo

Gazebo詳細
  • GazeboはROSの公式なシミュレータで、3D環境でロボットを動かすことができます。
  • GazeboはROSと密接に統合されており、センサデータやロボットの状態をリアルタイムで取得できます。

現在作成中ですm(__)m

ありがとうございました

← シリーズ一覧に戻る