Firmware Update

Zivid는 카메라에 대한 지속적인 업데이트를 제공합니다. 여기에는 호스트 컴퓨터에서 실행되는 것과 카메라 자체가 모두 포함됩니다. 호스트 컴퓨터의 이미지 처리를 개선하는 Zivid SDK의 정기적인 업데이트가 있습니다. SDK에는 최신 카메라 펌웨어도 포함되어 있습니다. 호스트 컴퓨터 소프트웨어 Zivid SDK는 카메라 펌웨어보다 자주 업데이트됩니다. 이러한 업데이트는 안정성, 견고성 및 획득 속도를 개선합니다.

카메라 펌웨어를 업데이트하려면 Zivid Studio, CLI Tool 또는 SDK API를 사용하세요.

각 SDK 버전은 카메라 펌웨어와 일치하며, SDK는 필요한 경우 이전 펌웨어 버전으로 롤백하는 것을 포함하여 카메라가 호환되는 펌웨어를 실행하는지 확인합니다.

각 Zivid SDK 버전은 특정 카메라 펌웨어 버전과 매칭됩니다. SDK를 업그레이드할 때마다 두 버전 간의 호환성을 유지하기 위해 카메라 펌웨어도 업데이트해야 합니다.

새 카메라는 특히 애플리케이션이 특정 SDK 버전에 고정되어 있는 경우, 애플리케이션에서 사용하는 SDK 버전보다 더 최신 펌웨어와 함께 제공될 가능성이 높습니다. 새 카메라를 생산에 투입하기 전에, 애플리케이션에서 사용하는 SDK 버전에 맞춰 펌웨어를 업데이트하세요.

Zivid Studio

Zivid Studio가 카메라에 연결되면 카메라에 맞는 펌웨어가 있는지 확인합니다. 펌웨어가 맞지 않으면 Zivid Studio에서 직접 업데이트할 수 있습니다.

CLI Tool
Windows

키보드에서 Win + R 키를 눌러 Command Prompt를 실행한 다음 cmd 을 입력하고 Enter 를 누르세요.

Zivid 소프트웨어를 설치한 폴더로 이동합니다.

cd C:/Program Files/Zivid/bin

ZividFirmwareUpdater 를 실행합니다.

ZividFirmwareUpdater.exe
Ubuntu

ZividFirmwareUpdater 는 Ubuntu용 Zivid Tools 패키지의 일부입니다. 아직 설치하지 않았다면 Software Installation 의 단계에 따라 설치하세요.

이제 다음을 통해 ZividFirmwareUpdater 를 실행할 수 있습니다.

ZividFirmwareUpdater
Jetson Linux

ZividFirmwareUpdater 는 Ubuntu용 Zivid Tools 패키지의 일부입니다. 아직 설치하지 않았다면 Software Installation 의 단계에 따라 설치하세요.

이제 다음을 통해 ZividFirmwareUpdater 를 실행할 수 있습니다.

ZividFirmwareUpdater

버전 1.6.6에서 버전 1.6.7로 펌웨어 업데이트

ZividFirmwareUpdater를 실행할 때의 출력 예

ZividFirmwareUpdater 소스 코드는 here 에서 찾을 수 있습니다 .

API

SDK는 카메라의 펌웨어를 업데이트하는 기능을 제공합니다.

소스로 이동

소스

int main()
{
    try
    {
        Zivid::Application zivid;

        auto cameras = zivid.cameras();
        for(auto &camera : cameras)
        {
            if(!Zivid::Firmware::isUpToDate(camera))
            {
                std::cout << "Firmware update required" << std::endl;
                std::cout << "Updating firmware on camera " << camera.info().serialNumber()
                          << ", model name: " << camera.info().modelName()
                          << ", firmware version: " << camera.info().firmwareVersion() << std::endl;
                Zivid::Firmware::update(camera, [](double progressPercentage, const std::string &stageDescription) {
                    std::cout << std::round(progressPercentage) << " % : " << stageDescription
                              << (progressPercentage < 100 ? "..." : "") << std::endl;
                });
            }
            else
            {
                std::cout << "Skipping update of camera " << camera.info().serialNumber()
                          << ", model name: " << camera.info().modelName()
                          << ", firmware version: " << camera.info().firmwareVersion() << std::endl;
            }
        }
    }

    return EXIT_SUCCESS;
}
소스로 이동

소스

static int Main()
{
    try
    {
        var zivid = new Zivid.NET.Application();

        var cameras = zivid.Cameras;
        foreach (var camera in cameras)
        {
            if (!Updater.IsUpToDate(camera))
            {
                Console.WriteLine("Firmware update required");
                Console.WriteLine("Updating firmware on camera {0}, model name: {1}, firmware version: {2}",
                    camera.Info.SerialNumber, camera.Info.ModelName, camera.Info.FirmwareVersion);
                Updater.Update(camera, callback: (progressPercentage, stageDescription) =>
                {
                    Console.WriteLine("{0}% : {1}" + ((progressPercentage < 100) ? "..." : ""), progressPercentage, stageDescription);
                });
            }
            else
            {
                Console.WriteLine("Skipping update of camera {0}, model name: {1}, firmware version: {2}",
                    camera.Info.SerialNumber, camera.Info.ModelName, camera.Info.FirmwareVersion);
            }
        }
    }

    return 0;
}
소스로 이동

소스

def _main() -> None:
    app = zivid.Application()

    cameras = app.cameras()
    for camera in cameras:
        if not zivid.firmware.is_up_to_date(camera):
            print("Firmware update required")
            print(
                f"Updating firmware on camera {camera.info.serial_number}, model name: {camera.info.model_name}, firmware version: {camera.info.firmware_version}"
            )
            zivid.firmware.update(
                camera,
                progress_callback=lambda progress, description: print(
                    f'{progress}% : {description}{("","...")[progress < 100]}'
                ),
            )
        else:
            print(
                f"Skipping update of camera {camera.info.serial_number}, model name: {camera.info.model_name}, firmware version: {camera.info.firmware_version}"
            )


if __name__ == "__main__":
    _main()

해당 API에 대한 내용은 Firmware (namespace) 를 참조하세요.