コンテンツにスキップ
ステージングサーバー
開発サーバー

はじめに(Smart blaze)#

このトピックでは、Smart blazeカメラのセットアップと設定方法について説明します。

Smart blazeカメラの初期セットアップとIP設定の詳細については、カメラのインストール(blaze)のトピックを参照してください。

情報

このドキュメント全体を通して、以下を置き換えてください ${cameraip} で設定したIPアドレスを使用します pylon IP Configurator。便宜上、次の行をコンピューターの ~/.bashrc ファイルに追加できます(IPアドレスをご自身の実際のIPアドレスに置き換えてください)。

export cameraip=192.168.1.123

これにより、このトピックのコマンドを変更せずにそのままターミナルにコピー&ペーストして実行できるようになります。この行を追加した後は、設定を再読み込みすることを忘れないでください。

source ~/.bashrc

カメラのセットアップとIP設定#

Smart blaze VM Web Interfaceへのアクセス#

Smart blazeには、Debian Trixieベースのデフォルトの仮想マシンが付属しています。

Smart blaze VM Control web interfaceを使用して、VMの制御やステータスの確認を行うことができます。Webインターフェイスにアクセスするには、ターミナルに次のコマンドを入力します。

xdg-open http://${cameraip}

これによりデフォルトのWebブラウザが開き、Smart blaze VM ControlのログインWebインターフェイスが表示されます。ログインするにはデフォルトのパスワードを入力します。デフォルトのパスワードはカメラのラベルに記載されています。セキュリティ上の理由から、Baslerでは初回ログイン後にパスワードを変更することをお勧めします。変更するには、WebインターフェイスのChange Passwordボタンをクリックします。

現在のパスワードを入力すると、Smart blaze VM ControlのWebインターフェイスが表示されます。

Smart blaze VM ControlのWebインターフェイス

VMの実行中、ステータス情報にkvm_machine.serviceがロードされ、アクティブになっていることが示されます。情報エリアには文字列Active: active (running)が含まれている必要があります。

デフォルトのVMを初めて使用する前に、ポップアップ表示されるメッセージダイアログで手動により起動を確認する必要があります。

VMへのIPアドレスの割り当て#

デフォルトでは、VMはDHCP経由でIPアドレスの取得を試みます。カメラがコンピュータに直接接続されており、DHCPサーバーを利用できない場合、この処理は失敗します。その場合は、Smart blaze VM Control Webインターフェイスを使用して、静的IPアドレスを手動で設定してください。

  1. 手動でのIPアドレス設定を行う際、IP Address入力フィールドにIPアドレスを入力するフォーマットは次のとおりです。
    a.b.c.d/maskbits
    末尾のマスクビット値は、サブネットマスクで設定されるビット数を定義します。例:
    192.168.1.127/24を入力すると、次の設定がVMに適用されます。
    IPアドレス:192.168.1.127
    サブネットマスク:255.255.255.0

  2. 手動IP設定用のプライマリおよびセカンダリドメインネームサーバー(DNS)を次の形式で入力するか、空欄のままにします。
    a.b.c.d

  3. ゲートウェイを次の形式で入力するか、空欄のままにします。
    a.b.c.d
    フィールドを空欄のままにすると、DHCPによって提供されたゲートウェイが使用されます。値を入力した場合は、そのゲートウェイが手動IP設定に使用されます。

DHCPセットアップのための現在のIPアドレスの表示#

機能しているDHCP設定がある場合、VMはDHCPサーバーからIPアドレスを自動的に取得します。割り当てられたIPアドレスを確認するには、いくつかの方法があります。

VMにqemu-guest-agentパッケージがインストールされている場合、Smart blaze VM Control WebインターフェイスはVMの現在のIPアドレスを自動的に表示できます。qemu-guest-agentは、ゲストVM内で実行され、ネットワーク構成を含むゲストVMに関する情報をホストシステムに提供するヘルパーデーモンです。

情報

qemu-guest-agentがVMにインストールされ実行されている場合、IPアドレスをSmart blaze VM Control Webインターフェイスに表示できます。エージェントがインストールされていない場合、Webインターフェイスは、VMがネットワーク経由でblazeホストシステムと通信する場合にのみ、VMの現在のIPアドレスを取得できます。

qemu-guest-agentパッケージは、VMのビルドプロセス中にインストールされるように設定されています。これは、blazevm.xmlファイルで指定されています。このファイルは、デフォルトのインストールディレクトリ(/opt/pylon/share/pylon/Samples/blaze/smartblaze/vm/elbe/blazevm.xml)にあります。

カスタムVMイメージをビルドする場合は、設定ファイルのパッケージリストにqemu-guest-agentが含まれていることを確認してください。

エージェントがインストールされ起動された後、Smart blaze VM Control Webインターフェイスは、ステータス情報エリアにVMの現在のIPアドレスを自動的に表示します。

ルーター設定の確認#

VMにどのIPアドレスが割り当てられたかを確認するもう一つの方法は、ルーターのDHCPクライアントリストまたは設定インターフェイスを確認することです。

Telnet経由でのVM Boot Consoleへの接続#

qemu-guest-agentがインストールされていない場合や、直接アクセスしたい場合は、VMのブートコンソールに接続します。これを有効にするには、WebインターフェイスでEnable the serial console telnet portチェックボックスがオンになっていることを確認してください。その後、Telnet経由でコンソールにアクセスできます。

telnet ${cameraip} 4446

次のユーザー名でログインします root およびカメラのラベルに記載されているパスワードを使用してログインします。次のコマンドを入力してIPアドレスを確認します。

$ ip address

出力は次のようになります(実際のIPアドレスは異なります)。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 3e:41:20:7e:d2:ba brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.127/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

SSH経由でのVMへの接続#

情報

次と同様に ${cameraip} 変数、 ${vmip} は、カメラ上で実行されているVMのIPアドレスを参照するために、このマニュアル全体で使用されます。利便性を高めるために、次の行を ~/.bashrc ファイルに追加してください(IPアドレスに合わせて調整してください)。

export vmip=192.168.1.127

VMのIPアドレスを取得したら、次のユーザー名を使用してSSH経由でVMに接続できます root およびカメラのラベルに印刷されているパスワードです:

ssh root@${vmip}

次のコマンドを実行して、 htop 仮想マシン内で何が実行されているかを確認できます:

$ htop
    0[|                                   0.7%] Tasks: 15, 2 thr, 66 kthr; 1 running
    1[|                                   0.6%] Load average: 0.00 0.00 0.00
    2[|                                   2.0%] Uptime: 17:37:58
    3[|                                   0.6%]
  Mem[|||||||                      71.5M/5.79G]
  Swp[                                   0K/0K]

  [Main] [I/O]
    PID USER       PRI  NI  VIRT   RES   SHR S  CPU%-MEM%   TIME+  Command
    643 root        20   0  4740  3156  2428 R   2.6  0.1  0:00.16 htop -M
      1 root        20   0  164M 11032  8308 S   0.0  0.2  1:06.60 /sbin/init
    141 root        20   0 33368 10308  9300 S   0.0  0.2  0:01.34 /lib/systemd/systemd-journal
    162 root        20   0 24824  5752  4108 S   0.0  0.1  0:01.34 /lib/systemd/systemd-udevd
    163 systemd-ti  20   0 90448  6804  5924 S   0.0  0.1  1:44.70 /lib/systemd/systemd-timesyn
    179 systemd-ti  20   0 90448  6804  5924 S   0.0  0.1  0:58.75 /lib/systemd/systemd-timesyn
    193 avahi       20   0  7224  3172  2820 S   0.0  0.1  0:00.13 avahi-daemon: running [Blaze
    194 messagebus  20   0  8304  3436  3000 S   0.0  0.1  0:00.24 /usr/bin/dbus-daemon --syste
    198 root        20   0 16876  6852  5940 S   0.0  0.1  0:01.25 /lib/systemd/systemd-logind
    200 avahi       20   0  7116   308     0 S   0.0  0.0  0:00.00 avahi-daemon: chroot helper
    203 root        20   0  2640   764   688 S   0.0  0.0  0:00.00 /sbin/agetty -o -p -- \u --n
    205 root        20   0  2684   812   736 S   0.0  0.0  0:00.01 /sbin/agetty -o -p -- \u --k
    208 root        20   0 16280  8776  7488 S   0.0  0.1  0:00.09 sshd: /usr/sbin/sshd -D [lis
F1Help  F2Setup F3SearchF4FilterF5Tree  F6SortByF7Nice -F8Nice +F9Kill  F10Quit

より安全で便利なアクセスを実現するために、認証用のキーペアを設定します。まだキーを作成していない場合は、 ~/.ssh/id_rsa コンピュータ上で、次の手順に従ってキーペアを作成できます:

  1. 次のコマンドを実行し、すべてのプロンプトを確認します:

    ssh-keygen
    
  2. パブリックキーをVMにコピーします。
    rootパスワードを使用して、最後に一度だけ確認を行う必要があります。

    ssh-copy-id root@${vmip}
    

これで、毎回パスワードを入力することなく、このマシンからVMに接続できるようになりました。

この認証を使用することで、次を使用してファイルをVMに転送することもできます: scp ツール。より効率的な代替手段は、 rsync ユーティリティです。これはすでにVMにインストールされています。

Smart blaze VM用のソフトウェア開発#

Smart blaze VM向けのソフトウェアを開発するために、Smart blaze SDKには2つのクロス開発環境オプションが用意されています:

  • ELBE SDK:ELBE(Embedded Linux Build Environment)には、クロス開発ツールチェーンと、ターゲットのルートファイルシステムに応じた必要なすべての開発パッケージが含まれています。
  • Docker container:クロス開発ツールチェーンと必要なすべてのパッケージが含まれています。

blaze C++サンプルのビルド#

pylon Supplementary Package for blazeには、Basler pylon SDKを使用してカメラを制御する方法を示すいくつかのC++サンプルが含まれています。

まだ行っていない場合は、開発用コンピュータに最新のpylon SDKとLinux用のpylon Supplementary Package for blazeをインストールしてください。これらのパッケージはBaslerウェブサイトから入手できます。

次のビルド環境から選択できます:

ELBE SDKを使用したサンプルのビルド#

まだ行っていない場合は、Cross-Building Using ELBE SDKに記載されている説明に従って、ELBE SDKを作成およびインストールしてください。

サンプルをビルドしてカメラVMにコピーするには、次のコマンドを実行します:

cp -r /opt/pylon/share/pylon/Samples/blaze/cpp ./blaze_samples
cd blaze_samples
. /opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2/environment-setup-elbe-aarch64-linux-gnu-BlazeVM-1.2
# Adjust the path for the CMake toolchain file from the Smart blaze SDK as needed.
export CMAKE_TOOLCHAIN_FILE=/opt/pylon/share/pylon/Samples/blaze/smartblaze/vm/elbe/cross-toolchain.cmake
cmake -B build .
cmake --build build -j$(nproc)
ssh root@${vmip} mkdir -p samples
scp $(find build/ -type f -executable | egrep -w -v "ColorAndDepth|CMakeFiles") root@${vmip}:samples

Dockerコンテナを使用したサンプルのビルド#

まだ行っていない場合は、 dockerDo に記載されている説明に従ってエイリアスを作成します: Dockerコンテナでのコマンドの実行.

サンプルをビルドしてカメラVMにコピーするには、次のコマンドを実行します。コンテナにはすでに環境変数が定義されています: CMAKE_TOOLCHAIN_FILEこれは、ARM64クロスコンパイラツールチェーンを使用するようCMakeに指示します。

dockerDo cp -r /opt/pylon/share/pylon/Samples/blaze/cpp ./blaze_samples
cd blaze_samples
dockerDo cmake -B build .
dockerDo cmake --build build -j$(nproc)
ssh root@${vmip} mkdir -p samples
scp $(find build/ -type f -executable | egrep -w -v "ColorAndDepth|CMakeFiles") root@${vmip}:samples

blaze C++サンプルの実行#

最初のサンプルは、検出した最初の blaze カメラを開き、10フレームをキャプチャして、いくつかのピクセル値を出力するだけです。サンプルを実行するには:

  1. VMへのSSHシェルを開きます:

    ssh root@${vmip}
    
  2. そのシェル内でサンプルを開始します。
    次のような出力が表示されるはずです:

    root@BlazeCustomerVM:~# ./samples/FirstSample
    Connected to camera Basler blaze-102S (40560199)
    User-defined name:
    Serial Number: 40560199
    x=  11.9 y=  27.4 z=1753.7
    intensity=51091 confidence=25577
    x=  11.9 y=  27.4 z=1754.9
    intensity=51006 confidence=25471
    x=  11.9 y=  27.4 z=1755.7
    intensity=51011 confidence=25478
    x=  11.9 y=  27.4 z=1756.5
    intensity=50728 confidence=25126
    x=  11.9 y=  27.4 z=1757.1
    intensity=50965 confidence=25420
    x=  11.9 y=  27.5 z=1757.7
    intensity=50963 confidence=25417
    x=  11.9 y=  27.5 z=1758.3
    intensity=50963 confidence=25417
    x=  11.9 y=  27.5 z=1758.9
    intensity=50859 confidence=25289
    x=  11.9 y=  27.5 z=1759.5
    intensity=50820 confidence=25240
    x=  11.9 y=  27.5 z=1760.1
    intensity=50803 confidence=25219
    
    Press Enter to exit.
    

インタラクティブなSSHシェルを開かずに、直接サンプルを実行するには、 GENICAM_GENTL64_PATH 環境変数を設定する必要があります:

ssh root@${vmip} GENICAM_GENTL64_PATH=:/opt/pylon/lib/gentlproducer/gtl ./samples/FirstSample

ネットワークフォワーディング#

カメラをパソコンに直接接続した場合、カメラ上のVMはインターネット接続を持っていません。(例えば、Debianアーカイブから追加のパッケージをインストールするなどして)VMでインターネットアクセスが必要な場合は、パソコン上でNAT転送ルールを設定する必要があります: apt-get)

function setIptables() {
    echo "iptables: $@"
    if ! sudo iptables -C "$@"; then
        sudo iptables -A "$@";
    fi
}
DEVICE_WITH_CAMERA=eth0   # The network device on your PC to which the camera is connected
DEVICE_WITH_INTERNET=eth1 # The network device on your PC which provides the internet connection
OWN_IP=192.168.1.2        # Your PC's IP address on $DEVICE_WITH_CAMERA
VM_NET_PREFIX=24

setIptables FORWARD -s ${vmip} -o $DEVICE_WITH_INTERNET -i $DEVICE_WITH_CAMERA -j ACCEPT
setIptables FORWARD -i $DEVICE_WITH_INTERNET -d ${vmip} -m state --state RELATED,ESTABLISHED -j ACCEPT
setIptables POSTROUTING -t nat -o $DEVICE_WITH_INTERNET -j MASQUERADE

ssh root@${vmip} ip r add default via $OWN_IP dev eth0
ssh root@${vmip} bash -c "'echo nameserver 8.8.8.8 >> /etc/resolv.conf'"

これらの設定を行うことで、追加のパッケージをインストールできるようになります:

ssh root@${vmip} apt-get update
ssh root@${vmip} apt-get install chocolate-doom
ssh -X root@${vmip} /usr/games/chocolate-doom

X11フォワーディング#

一部のプログラミングサンプルでは、OpenCVのビジュアライゼーションウィンドウを使用してカメラでキャプチャした画像を表示します。開発中にキャプチャした画像や処理済みの画像を表示することは非常に役立ちます。これは、パフォーマンス低下と引き換えにX11フォワードを使用することで実現できます。X11フォワードにより、仮想マシン上で実行されているアプリケーションが、ローカルマシンのディスプレイにグラフィカルユーザーインターフェイスを表示できるようになります。

X11フォワードを有効にするには:

  1. 設定するピクセルのカラーコンポーネントを指定するには、 -X または -Y SSH経由で接続する際にオプションを指定します:

    ssh -X root@${vmip}
    
  2. 画像ウィンドウを開くサンプルを開始します:

    ./samples/GrabDepthMap
    

    PC上でウィンドウが開き、カメラからのグレースケール深度画像が表示されるはずです。

情報

ターミナルに次のようなエラーが表示される場合があります:

grab loop: Buffer grabbed but no user input buffer available , block ID = 435.

これは、X11フォワードに追加の時間がかかり、取得ループが遅くなってフレームドロップが発生するためです。フレームレートを低く設定することで、これを回避できます。

フレームレートを下げて調整する方法については、Controlling the Frame Rateを参照してください。

X11フォワード中でもフレームドロップのリスクなしで動作するもう1つの動作モードは、ソフトウェアトリガー機能を使用して、現在のフレームの処理が完了した後にのみ次のフレームがトリガーされるようにすることです。これにより、アプリケーションが次の要求を行う前に待機するため、フレームレートが低下します。

blaze Pythonサンプルの実行#

Pythonサンプルでは、OpenCVまたはOpen3Dを使用します。Pythonサンプルを実行するには:

  1. X11フォワードを指定してSSHシェルを開きます:

    ssh -X root@${vmip}
    
  2. そのシェル内で、サンプルディレクトリに移動します:

    cd /opt/pylon/share/pylon/Samples/blaze/Python/pypylon
    
  3. サンプルを実行します。次のような出力と、OpenCVまたはOpen3Dのビジュアライゼーションウィンドウが表示されるはずです:

    python3 SimpleGrab/simple_grab.py
    
    Using device  blaze-102S
    OperatingMode:  LongRange
    FastMode:  False
    FilterSpatial:  True
    FilterTemporal:  True
    FilterStrength:  220
    OutlierRemoval:  True
    ConfidenceThreshold:  320
    GammaCorrection:  True
    Min. Depth [mm]:  0
    Max. Depth [mm]:  9990
    To exit, press ESC in one of the image windows
    
    $ python3 ShowPointCloud/show_point_cloud.py
    Using device  blaze-102S
    [Open3D DEBUG] GLFW init.
    To exit, press ESC in one of the image windows.
    To save a point cloud as .pcd file, press S in one of the image windows.
    [Open3D DEBUG] Add geometry and update bounding box to [(-1565.8367, -1279.5530, 0.0000) - (1694.7946, 50.7543, 2803.0823)]
    [Open3D DEBUG] Global colormap init.