ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

産業用カメラとROS2をつなげる

AIロボよりもCOVID-19が雇用崩壊人手不足解消に大活躍している今日この頃。

今日もヤバいイカれた(特に金に飢えた氷河期世代)優秀な人たちが業務にAIを結びつけて雇用崩壊を企んでいます生産性UPに貢献しています。

同じ商品を製造している大企業の工場内はすでにほぼ無人です。

また、電気自動車製造ラインもほぼ無人です。

トヨタ県にいる期間労働者の方々のゲームオーバーは近いのでベーシックインカムあるいは連続給付金くれくれ運動の準備をしてください。

さて現在、工場では主に産業用カメラを使用し、画像入力が行われています。

そして、もしカメラとロボットをコネクションするのであればROSのようなミドルウェアが必要になるかもしれません。

産業用カメラ(GigE Vision Camera)とROSをつなげるプロジェクトとして、camera_aravis

GitHub - ssafarik/camera_aravis: ROS Camera Driver for GigE Cameras

camera_aravis - ROS Wiki

というものがあります。

camera_aravis for ROS2

ROS2はより業務に導入しやすいようになりました。
そのROS2バージョンがなかったので、 とりあえず、α ver作成。

github.com

環境

Ubuntu 20.04
ROS2 Rolling Ridley

Prerequisite

GigE Vision用のドライバの一つ Aravis(オープンソースプロジェクト)をインストール

$ sudo apt install aravis-tools

Viewerの起動

$ arv-viewer

f:id:nullpo24:20201103134631p:plain

Viewerを起動すると、現在接続可能な
Vendor Name, Model, Serial(GuID)を確認することができます。
上の画像は 私が持っている非実用的な中国の安物GigE Vision カメラを接続したときの画像です。

Vendor:MindVision
Model:GE500C
Serial:057031310037

このとき、Aravisの場合cameraを インスタンス化するとき(arv_camera_new)の引数nameは"MindVision-057031310037"となります。
なぜ作成者はこのような引数nameにしたのだろうか...。

実行

$ ./camnode [VendorName]-[Serial]

$ ./camnode MindVision-057031310037

今後のタスク

リファクタリングは暇人に任せた。

ゆくゆくはGenTL Producer(CoaXPress USB3 GigEVisionカメラの共通インターフェース)に対応させたものを作ろう。

また、産業用カメラのPythonライブラリ
GitHub - genicam/harvesters: 🌈 Friendly Image Acquisition Library for Computer Vision People
もあるのでrclpyを使って画像データをパブリッシュするのも面白いかもしれない。