ose-support-ros / stcamera_ros2

ROS2 package for OMRON SENTECH cameras.
Other
1 stars 0 forks source link

カメラは読み込まれるが、画像がPublishされない #1

Closed hama6767 closed 1 year ago

hama6767 commented 1 year ago

失礼いたします。

カメラモデル STC-MCS70BU3V Sentech SDK version 1.2.1

Linux環境のコンピュータにUSBカメラを接続した後、StViewerでカメラ画像の表示を確認できるのですが、ROS2 node として読み込んだ際に画像がPublishされません。arv-viewer等汎用USB3 Visionビューアーでも画像の表示ができています。 カメラは読み込まれているように見えるのですが、rqt_image_viewやros2 topic echo でコールしてもトピックに画像が流れていない現象が発生しています。以下ログになります

icsiauto@icsiauto-ELSA-VELUGA:~/dev_ws/src$ ros2 run usb_camera_driver usb_camera_driver_node
[INFO] [1691504024.300781811] [usb_camera_driver]: camera calibration URL: file://config/camera.yaml
[ERROR] [1691504024.300837776] [usb_camera_driver]: Invalid camera calibration URL: file://config/camera.yaml
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
^C[INFO] [1691504041.803130334] [rclcpp]: signal_handler(signal_value=2)
icsiauto@icsiauto-ELSA-VELUGA:~/dev_ws/src$ ros2 launch stcamera_launch stcamera_launch.py 
[INFO] [launch]: All log files can be found below /home/icsiauto/.ros/log/2023-08-08-23-21-13-617523-icsiauto-ELSA-VELUGA-10350
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [stcamera_launch-1]: process started with pid [10352]
[stcamera_launch-1] 1691504473.708514711 [stcamera_launch.stcameras] [INFO] Setting severity threshold to 20
[stcamera_launch-1] 1691504475.407771501 [stcamera_launch.stcameras] [INFO] StCameraInterface::StCameraInterface Openning device dev_142122B11642
[stcamera_launch-1] 1691504475.420655299 [stcamera_launch.stcameras] [INFO] using default calibration URL
[stcamera_launch-1] 1691504475.420692191 [stcamera_launch.stcameras] [INFO] camera calibration URL: file:///home/icsiauto/.ros/camera_info/dev_142122B11642.yaml
[stcamera_launch-1] 1691504475.420739052 [camera_calibration_parsers] [ERROR] Unable to open camera calibration file [/home/icsiauto/.ros/camera_info/dev_142122B11642.yaml]
[stcamera_launch-1] 1691504475.420747643 [stcamera_launch.stcameras] [WARN] Camera calibration file /home/icsiauto/.ros/camera_info/dev_142122B11642.yaml not found
[stcamera_launch-1] 1691504475.442124159 [stcamera_launch.stcameras] [INFO] /home/icsiauto/dev_ws/src/stcamera_ros2/stcamera_components/src/stcamera_node_impl.cpp initializeCamera 285: 142122B11642 (STC-MCS70BU3V(22LB642)) is successfully initialized as dev_142122B11642

トリガーモードはOFFになっているようです

icsiauto@icsiauto-ELSA-VELUGA:~$ ros2 service call /stcamera_launch/dev_142122B11642/get_trigger_list stcamera_msgs/srv/GetTriggerList 
requester: making request: stcamera_msgs.srv.GetTriggerList_Request()

response:
stcamera_msgs.srv.GetTriggerList_Response(error_info=stcamera_msgs.msg.ErrorInfo(error_code=0, description=''), trigger_selector_list=['FrameStart', 'ExposureStart', 'ExposureEnd'], trigger_mode_list=[False, False, False], trigger_source_list=['Software', 'Line0', 'Line1', 'Line2', 'Disabled'], trigger_delayus_list=[0.0, 0.0, 0.0])

画像の読み込みは有効化されています。

icsiauto@icsiauto-ELSA-VELUGA:~$ ros2 service call /stcamera_launch/dev_142122B11642/get_image_acquisition_status stcamera_msgs/srv/GetImageAcquisitionStatus 
requester: making request: stcamera_msgs.srv.GetImageAcquisitionStatus_Request()

response:
stcamera_msgs.srv.GetImageAcquisitionStatus_Response(error_info=stcamera_msgs.msg.ErrorInfo(error_code=0, description=''), value=True)

image

image

以上になります。 お手数おかけしますが、よろしくお願いいたします。

ose-support-ros commented 1 year ago

usb_camera_driver_nodeの生成を行わなかった場合も、症状は同じでしょうか?

hama6767 commented 1 year ago

はい、launchファイルのみの起動でusb_camera_driver_nodeの生成を行わない場合もログ、症状は同様になります。

ose-support-ros commented 1 year ago

StViewerで画像が取得できている状態とROS2で画像が取得できていない状態のログをWireSharkで取得し比較することで、どの時点(画像取得前? 画像取得後?)で問題が発生しているかがわかるかもしれません。 ※ 明日から夏季休業期間に入る為、1週間ほど回答出来ませんが、予めご了承ください。

hama6767 commented 1 year ago

@ose-support-ros 様 こちらの問題ですが、StViewerの再インストールにてROS2ノードはうまく起動するようになりました。 一方で、時々カメラ自体がUbuntuより接続が遮断されてしまう現象が発生しています。 こちらに関しては、StViewerでも下記画像のエラーが出てそれ以降認識されなくなります。 物理的に再接続することで再度認識可能になりますが、現在リモートを交えた開発を実施しており、対策が厳しい状態です。

icsiauto@icsiauto-ELSA-VELUGA:~$ ros2 launch stcamera_launch stcamera_launch.py 
[INFO] [launch]: All log files can be found below /home/icsiauto/.ros/log/2023-08-31-17-49-22-359476-icsiauto-ELSA-VELUGA-591610
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [stcamera_launch-1]: process started with pid [591612]
[stcamera_launch-1] 1693471762.450767355 [stcamera_launch.stcameras] [INFO] Setting severity threshold to 20
[stcamera_launch-1] 1693471770.533060768 [stcamera_launch.stcameras] [ERROR] /home/icsiauto/dev_ws/src/stcamera_ros2/stcamera_components/src/stcamera_node_impl.cpp initSystemsAndInterfaces 198: Unable to initialize OMRON SENTECH GenTL Producer: -1011 = IFUpdateDeviceList(0x0x55de7a665030, 0x0x7ffcf1b6e7b3, 500) An operation timeout time expired before it could be completed.
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[stcamera_launch-1] 1693471789.264797325 [rclcpp] [INFO] signal_handler(signal_value=2)
[INFO] [stcamera_launch-1]: process has finished cleanly [pid 591612]

image

チケットの問題とは別である可能性が高そうです。 必要に応じて別のチケットをreopenか別所での対応としてください。

上記、お手数おかけしますがよろしくお願いいたします。

ose-support-ros commented 1 year ago

再現頻度はどの程度でしょうか? また、ケーブル長やその他のUSB機器の接続など再現環境に何か特徴的なことはありませんでしょうか?

hama6767 commented 1 year ago

再現頻度に関しては、数分〜2、3時間の使用で発生します。 こちらはまだ詳細な検証ができていませんが、ROS2ノードでの読み込みを実施した後での発生頻度が高い気がします。

ケーブルに関してはこちらの2mのものになります。 https://jp.misumi-ec.com/vona2/detail/222300108097/?HissuCode=1U30A-MB2-SA1-200&utm_medium=ppc&utm_source=google&utm_campaign=19752747500_149556079914_dsa-2001483285778&lisid=lisid_google_new-x_dsa-2001483285778:cr-649784629560:sl-76786494925:adg-149556079914:dev-c:cam-19752747500&gclid=Cj0KCQjw9MCnBhCYARIsAB1WQVXjX91WPBBiiG5ezt1pfd98uACgMaN0866YbKMZpExtfB74gSVFoecaAvEdEALw_wcB&gclsrc=aw.ds

他のUSB機器の接続等はありません。ハブも使用しておらず、PCのポートに直接接続しております。

ose-support-ros commented 1 year ago

情報ありがとうございます。 品質のよいケーブルを使用されているようなので、ケーブルの問題ではなさそうです。 コンピュータ名からして、使用されているPCはELSA VELUGA G5-ND 3100Lでしょうか?

hama6767 commented 1 year ago

@ose-support-ros PCについては、ノートタイプのELSA VELUGA A5000 G3-15になります

https://www.elsa-jp.co.jp/products/detail/veluga-a5000-g3-15-for-win/

ose-support-ros commented 1 year ago

情報ありがとうございます。 頂いたURLはWindowsのものでしたが、OSをLinuxに入れ替えて使用されているということでしょうか? それとも仮想環境で使用されているのでしょうか? あるいは購入されたのは、下記の製品でしょうか? ELSA VELUGA A5000 G3-15 for Linux

hama6767 commented 1 year ago

仮想環境は使っておらず、仰るとおり https://www.elsa-jp.co.jp/products/detail/elsa-veluga-a5000-g3-15-for-linux/ の製品を利用した直接インストールされたUbuntuを利用しております。

ose-support-ros commented 1 year ago

情報ありがとうございます。 こちらでも検証し、何かわかりましたらご連絡いたします。

hama6767 commented 1 year ago

続報がありますので報告いたします。

こちらですが、画像を3216x2208, 50FPS, 3000Mbps程度で転送していたため、ケーブルかOSかどこかでハングしていたようです。StViewer経由で解像度とFPSを調整したところ、ROS2Nodeもうまく動くようになりました。 3000MbpsはUSB3.0の実測値を大幅に上回っているようなので、注意を払う必要がありそうです。

ose-support-ros commented 1 year ago

ご連絡ありがとうございます。

USB 3.2 Gen1(Super Speed)は5GHzですが、カメラ内部で使用されているチップの制限により理論値で4000Mbpsですが、プロトコルのオーバーヘッド等やセンサーの制限等により、それを下回る速度(本カメラでは約364Mbps)となります。 USB 3.0が登場したばかりの頃のホストコントローラーやそのドライバではそこまで高速には動作しませんでした。最近の環境ではデータを受け取るだけなら問題はないようですが、その後の処理(ROSのトピック生成のためのデータのコピーなど)が追い付かなくなっているのかもしれません。 FPSを低下させても支障がないようでしたら、既にお試しのように解像度やFPSを下げたり、ソフトトリガーモードで使用(必要な時だけ画像データを取得)することで、問題を回避できると思われます。

hama6767 commented 1 year ago

承知しました、ビットレートを最適化する方針で利用します。

可能であれば参考までに伺いたいのですが、上記の条件でSTCさんの環境では問題なく動作しますでしょうか? 問題自体は解決しましたので、このチケットはCloseします。ご対応ありがとうございました。

ose-support-ros commented 1 year ago

弊社でもバスパワーで使用した場合に、環境によっては途中で映像が取得できなくなってしまう現象が確認できました。 本製品はフリーランモードで使用すると、900mAを超えてしまうため、外部電源のご利用を推奨しております。ただし、環境(PCおよびケーブル)によってはバスパワーでも正常に動作する場合もあります。 フレームレートを落とすことで消費電力を抑えられる(40FPS時およそ905mA, 30FPS時およそ860mA)ため、フレームレートを低下させることで現象が改善したのであれば、消費電力が原因だった可能性があります。