ROSを複数のPC(パソコン)で動かす手順について簡単に説明します。ここではロボットに搭載するPCをPC1(NUC)、遠隔のPCをPC2(OMEN)としています。
PC1
Intel NUC IPアドレス 192.168.0.6 |
PC2
HP OMEN IPアドレス 192.168.0.8 |
設定
PC1の.bashrcファイルに以下を記述します。PC2をマスターに設定します。
export ROS_MASTER_URI=http://192.168.0.8:11311 export ROS_IP=192.168.0.6
PC2の.bashrcファイルに以下を記述します。PC2をマスターに設定します。
export ROS_MASTER_URI=http://192.168.0.8:11311 export ROS_IP=192.168.0.8
使用例
PC1に接続したUSBカメラの映像を、PC2の画面に表示してみます。
PC2をマスターとするので、PC2でroscoreを起動します。
sakamoto@OMEN:~$ roscore
PC1でカメラノードuvc_camera_nodeを起動します。
sakamoto@NUC:~$ rosrun uvc_camera uvc_camera_node [ INFO] [1566540270.914017011]: using default calibration URL [ INFO] [1566540270.914209789]: camera calibration URL: file:///home/sakamoto/.ros/camera_info/camera.yaml [ INFO] [1566540270.914351711]: Unable to open camera calibration file [/home/sakamoto/.ros/camera_info/camera.yaml] [ WARN] [1566540270.914415426]: Camera calibration file /home/sakamoto/.ros/camera_info/camera.yaml not found. opening /dev/video0 pixfmt 0 = 'YUYV' desc = 'YUYV 4:2:2' discrete: 640x480: 1/30 discrete: 160x120: 1/30 discrete: 176x144: 1/30 discrete: 320x240: 1/30 discrete: 352x288: 1/30 discrete: 800x600: 1/10 discrete: 1280x720: 1/8 discrete: 1920x1080: 1/5 pixfmt 1 = 'MJPG' desc = 'Motion-JPEG' discrete: 640x480: 1/30 discrete: 160x120: 1/30 discrete: 176x144: 1/30 discrete: 320x240: 1/30 discrete: 352x288: 1/30 discrete: 800x600: 1/30 discrete: 1280x720: 1/30 discrete: 1920x1080: 1/30 int (Brightness, 0, id = 980900): -64 to 64 (1) int (Contrast, 0, id = 980901): 0 to 95 (1) int (Saturation, 0, id = 980902): 0 to 100 (1) int (Hue, 0, id = 980903): -2000 to 2000 (1) bool (White Balance Temperature, Auto, 0, id = 98090c): 0 to 1 (1) int (Gamma, 0, id = 980910): 100 to 300 (1) menu (Power Line Frequency, 0, id = 980918): 0 to 2 (1) 0: Disabled 1: 50 Hz 2: 60 Hz int (White Balance Temperature, 16, id = 98091a): 2800 to 6500 (10) int (Sharpness, 0, id = 98091b): 1 to 7 (1) int (Backlight Compensation, 0, id = 98091c): 0 to 1 (1) menu (Exposure, Auto, 0, id = 9a0901): 0 to 3 (1) int (Exposure (Absolute), 16, id = 9a0902): 50 to 10000 (1)
PC2でカメラ映像を表示します。
映像をrqt_image_viewに表示させてみると、/image_rawでは、速い動きはブレますが、/image_raw/compressedでは、ブレがほとんどありません。
(以下の画面キャプチャーでは分かりにくいですが)
映像をrqt_image_viewに表示させてみると、/image_rawでは、速い動きはブレますが、/image_raw/compressedでは、ブレがほとんどありません。
(以下の画面キャプチャーでは分かりにくいですが)
sakamoto@OMEN:~$ rqt_image_view
ROSのトピックを表示してみます。
sakamoto@OMEN:~$ rostopic list /camera_info /image_raw /image_raw/compressed /image_raw/compressed/parameter_descriptions /image_raw/compressed/parameter_updates /image_raw/compressedDepth /image_raw/compressedDepth/parameter_descriptions /image_raw/compressedDepth/parameter_updates /image_raw/theora /image_raw/theora/parameter_descriptions /image_raw/theora/parameter_updates /rosout /rosout_agg /rqt_gui_cpp_node_4215/theora/parameter_descriptions /rqt_gui_cpp_node_4215/theora/parameter_updates
カメラ映像の生データ/image_rawと圧縮されたデータ/image_raw/compressedの更新周波数を調べます。/image_rawは4Hzと遅いですが、/image_raw/compressedは20Hz出ています。
sakamoto@OMEN:~$ rostopic hz /image_raw subscribed to [/image_raw] average rate: 3.533 min: 0.282s max: 0.284s std dev: 0.00094s window: 3 average rate: 3.578 min: 0.261s max: 0.290s std dev: 0.00984s window: 6 average rate: 3.691 min: 0.224s max: 0.290s std dev: 0.01894s window: 10 average rate: 3.743 min: 0.224s max: 0.290s std dev: 0.01701s window: 14 average rate: 3.785 min: 0.224s max: 0.290s std dev: 0.01736s window: 18 average rate: 3.796 min: 0.216s max: 0.301s std dev: 0.02074s window: 22
sakamoto@OMEN:~$ rostopic hz /image_raw/compressed subscribed to [/image_raw/compressed] average rate: 20.496 min: 0.042s max: 0.059s std dev: 0.00450s window: 19 average rate: 20.486 min: 0.039s max: 0.059s std dev: 0.00560s window: 40 average rate: 20.393 min: 0.039s max: 0.059s std dev: 0.00534s window: 60 average rate: 20.389 min: 0.039s max: 0.064s std dev: 0.00552s window: 80 average rate: 20.392 min: 0.039s max: 0.064s std dev: 0.00547s window: 101 average rate: 20.377 min: 0.039s max: 0.064s std dev: 0.00528s window: 121