環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
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でロボットの位置を示しています。
<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
を実行する必要があります。
roslaunch vis_lecture move_robot.launch joy:=true
rosrun rqt_plot rqt_plot
出てくるrqt_plotの画面で表示したいROSトピック名とそのfield名を入力します。floatやintの数値を含むfieldを指定する必要があります。つまり/cmd_vel
ではなくで/cmd_vel/linear/x
と入れて「+」ボタンを押す必要があります(Enterでもできます)。
この状態で動かすと以下の画像のようにリアルタイムにプロットがなされます。表示を減らしたいときはは「―」ボタンを押した後に項目を指定します。
#参考
ROSwiki