LoginSignup
10
7

More than 1 year has passed since last update.

ROS講座32 rqt_plotでリアルタイムでグラフ表示する

Last updated at Posted at 2018-07-29

環境

この記事は以下の環境で動いています。

項目
CPU Core i5-8250U
Ubuntu 20.04
ROS Noetic

インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。

概要

rqtにはrqt_plotというリアルタイムにグラフを表示する機能があります(ちなみにややこしい名前のツールとしてrqt_graphがありますが、これはROSノードとROSトピックの接続関係のノードグラフを表示します)。
ROSトピック中の基本的な数値を表示することが出来ます。std_msgs::Float32のようなfloat型ででPublisされている値だけでなく、geometry_msgs::Poseの中のfloatで定義されているposition.xフィールドも表示できます。
rqt_plotではx軸が時間、y軸がトピックの値の2次元プロットを表示します。

準備

今回のlaunchファイルを実行するためには以下のインストールが必要です。

sudo apt-get install ros-kinetic-robot-pose-publisher

実行用に以下のlaunchファイルを使います。移動ロボットをrviz上で再現するためのvis_lectureのmove_robot.launchにrobot_state_publisherを追加しただけです。今回はロボットを動かすのに/cmd_velにコンソールでpublishするか、PS3コントローラーが必要です。/cmd_velではロボットの速度、/poseでロボットの位置を示しています。

info_lecture/launch/move_robot.launch
<launch>
  <arg name="model" default="$(find vis_lecture)/urdf/move_robot.urdf" />
  <arg name="rvizconfig" default="$(find vis_lecture)/rviz/move_robot.rviz" />
  <arg name="joy" default="false" />
  <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />

  <group if="$(arg joy)">
    <node name="joy_node"   pkg="joy" type="joy_node" />
    <node name="basic_twist_publisher" pkg="basic_lecture" type="basic_twist_publisher"/>
  </group>
  <node name="vis_robot_sim" pkg="vis_lecture" type="vis_robot_sim"/>

  <node name="robot_pose_publisher" pkg="robot_pose_publisher" type="robot_pose_publisher">
    <param name="map_frame" value="world" />
    <param name="base_frame" value="base_link" />
    <param name="publish_frequenc" value="20" />
    <remap from="robot_pose" to="/pose" />
  </node>

  <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

実行

roslaunchのターミナルとは別のターミナルでrqt_plotを実行します。各ターミナルごとに実行前にsource ~/catkin_ws/devel/setup.bashを実行する必要があります。

launchの実行
roslaunch vis_lecture move_robot.launch joy:=true
rqt_plotの実行
rosrun rqt_plot rqt_plot 

出てくるrqt_plotの画面で表示したいROSトピック名とそのfield名を入力します。floatやintの数値を含むfieldを指定する必要があります。つまり/cmd_velではなくで/cmd_vel/linear/xと入れて「+」ボタンを押す必要があります(Enterでもできます)。
この状態で動かすと以下の画像のようにリアルタイムにプロットがなされます。表示を減らしたいときはは「―」ボタンを押した後に項目を指定します。

vis_plot.gif

参考

ROSwiki

目次ページへのリンク

ROS講座の目次へのリンク

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7