在开发环境中引入VisionFlow#

C++#

对于C++开发人员来说,VisionFlow只是一个预编译的二进制库,需要作为项目的依赖添加。 不同的C++开发人员可能使用不同的项目构建工具,因此以下是使用几种常用构建工具将VisionFlow 集成到项目中的说明:

请将以下代码复制到你项目的 WORKSPACE 文件中,并将URL和SHA256替换为你想要使用的 VisionFlow版本的链接和SHA256哈希值:

http_archive(
    name = "visionflow_windows",
    url = "<VisionFlow_URL>",
    sha256 = "<VisionFlow_SHA256>",
)

http_archive(
    name = "visionflow_linux",
    url = "<VisionFlow_Linux_URL>",
    sha256 = "<VisionFlow_Linux_SHA256>",
)

在上面的代码中,将 <VisionFlow_URL> 替换为所需版本的 VisionFlow 下载链接,将 <VisionFlow_SHA256> 替换为相应版本的 SHA256 摘要。这将指示构建系统从指定的 URL 下载 VisionFlow,并使用提供的 SHA256 摘要进行验证。发布包的链接和 SHA256 都可以在 VisionFlow的发布邮件信息中找到。

然后你可以将 VisionFlow 作为依赖库在你的项目的 Bazel 目标中使用,如下所示:

cc_binary(
    name = "main",
    srcs = ["main.cpp"],
    deps = select({
        "@platforms//os:windows": ["@visionflow_windows//:visionflow"],
        "@platforms//os:linux": ["@visionflow_linux//:visionflow"],
    }),
)

在上述示例中,我们假设你的项目有一个名为 main 的 C++ 二进制目标,其中的 main.cpp 是你的源代码文件。通过添加 deps 部分,我们将 VisionFlow 添加为项目的依赖,使得你的 main 可以使用 VisionFlow 提供的功能。

确保根据你的项目目录结构和构建需求进行相应的调整。这个示例只是为了说明如何将 VisionFlow 添加到 Bazel 构建的项目中。

我们推荐使用 CMake 的 FetchContent 来导入 VisionFlow。在你的项目中创建一个名为 find_visionflow.cmake 的文件,并在其中写入以下内容:

include(FetchContent)

FetchContent_Declare(
    visionflow
    URL <VisionFlow_URL>
    UPDATE_DISCONNECTED
)

FetchContent_GetProperties(visionflow)

if(NOT visionflow_POPULATED)
    FetchContent_Populate(visionflow)

    add_library(VisionFlow SHARED IMPORTED)
    set_target_properties(
        VisionFlow
        PROPERTIES
        IMPORTED_IMPLIB
        ${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
        IMPORTED_IMPLIB_DEBUG
        ${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
        IMPORTED_IMPLIB_RELEASE
        ${visionflow_SOURCE_DIR}/lib/visionflow.if.lib
        IMPORTED_LOCATION
        ${visionflow_SOURCE_DIR}/bin/visionflow.dll
        IMPORTED_LOCATION_DEBUG
        ${visionflow_SOURCE_DIR}/bin/visionflow.dll
        IMPORTED_LOCATION_RELEASE
        ${visionflow_SOURCE_DIR}/bin/visionflow.dll
        INTERFACE_INCLUDE_DIRECTORIES
        ${visionflow_SOURCE_DIR}/include
    )


    install(
        DIRECTORY
        ${visionflow_SOURCE_DIR}/bin/
        DESTINATION release
    )
endif()

接下来,你可以在你的 CMakeLists.txt 文件中包含 find_visionflow.cmake .

要将 VisionFlow 库添加到 Visual Studio 的 C++ 项目中,按照以下步骤进行操作:

  1. 从发布电子邮件中的链接下载预编译的 VisionFlow zip 包。

  2. 将 VisionFlow zip 包的内容解压到计算机上的所需位置。

  3. 在 Visual Studio 中打开你的 C++ 项目。

  4. 在“解决方案资源管理器”中,右键点击项目,从上下文菜单中选择“属性”。

  5. 在“属性页”窗口中,导航到“配置属性” -> “VC++目录”。

6. 在“包含目录”字段中,添加解压后 VisionFlow 包内的“include”文件夹的路径。 这个文件夹包含必要的头文件。你可以手动输入路径,也可以使用“…”按钮浏览并选择文件夹。

7. 在“库目录”字段中,添加解压后 VisionFlow 包内的“lib”文件夹的路径。 这个文件夹包含必要的库文件。同样,你可以手动输入路径,也可以使用“…”按钮浏览并选择文件夹。

  1. 转到“配置属性” -> “链接器” -> “输入”。

  2. 在“附加依赖项”字段中,添加“visionflow.if.lib”。

  3. 点击“确定”以保存更改。

以上步骤说明了如何将 VisionFlow 库添加到 Visual Studio 中的 C++ 项目中。请注意根据你的 项目和文件路径,确保适当地调整路径。现在,你已经将预编译的 VisionFlow 包添加到了 Visual Studio 中的 C++ 项目中。然后注意确保在你的源文件中包含所需的 VisionFlow 头文件即可。

C##

对于C#开发人员来说,VisionFlow 只是一个预编译的二进制库,需要作为项目的依赖添加。 VisionFlow 不仅提供了“visionflow.cs”源代码文件,还提供了基于.NET 6.0的预编译二进制库“csharp_visionflow.dll”。 要在 Visual Studio 中将 VisionFlow 库添加到你的C#项目中,请按照以下步骤进行操作:

  1. 从发布电子邮件中的链接下载预编译的 VisionFlow 包。

  2. VisionFlow 包的内容解压到计算机上的所需位置。

  3. Visual Studio 中打开你的 C# 项目。

如果你想要自己编译源代码或者受限于C#版本,继续按照下步骤操作:

  1. VisionFlow 发布包中的“csharp/visionflow.cs”文件复制到你的C#项目中的所需位置。

  2. 在“解决方案资源管理器”中点击“显示所有文件”,找到“visionflow.cs”并右键点击,选择“包括在项目中”。

  3. 将“bin”目录中的所有文件复制到生成“.exe”文件的文件夹中,或将“bin”添加到环境变量中。

  4. 对于目标框架为.NET Framework的C#项目,需要额外的配置。在“解决方案资源管理器”中,右键点击你的项目, 从上下文菜单中选择“属性”。选择“生成”,确保“首选32位”未选中

注意,C#版本必须大于等于.NET 6.0。

  1. 在“解决方案资源管理器”中右键单击您的项目,然后从上下文菜单中选择“添加” -> “项目引用”。

  2. 点击左侧列表的“浏览”,并选择下方“浏览”,添加“bin”目录中的“csharp_visionflow.dll”。

  3. 勾选“csharp_visionflow.dll”,然后点击下方的“确定”。

  4. 将“bin”目录中的所有文件复制到生成“.exe”的文件夹中,或将“bin”添加到环境变量中。

现在你已经将预构建的 VisionFlow 包添加到了 Visual Studio 中的C#项目中。

Java#

Python#

Linux#

对于Linux平台,我们提供了`Dockerfile`文件协助配置基础的运行环境。 请注意,在运行容器时需要添加GPU相关的参数`–gpus=all`使容器获得宿主机器的硬件资源:

docker run --gpus=all image_name

你也可以指定容器可访问的GPU资源,例如:

docker run -ti --gpus "device=0, 1"

进入容器后,如果你可以通过`nvidia-smi`命令获取到GPU信息,则证明容器能够访问GPU资源。

使用`Bazel`构建系统时,需要指定编译器使用C++17标准,添加参数`–cxxopt=-std=c++17`,否则可能因为C++标准不同导致编译失败。

如果遇到无法连接授权码的问题,通过以下命令检查授权库服务是否处于运行中:

service senseshieldd status

如果出现 senseshield stopped 则需要通过命令 service senseshieldd start 启动服务。

对于硬件狗授权,仅支持Linux宿主机启动docker容器。启动时添加命令: -v /scp/:/scp –privileged 将USB设备挂载到docker容器内。

docker run -it --gpus=all -v /scp/:/scp --privileged image_name

Windows宿主机的docker容器暂不支持硬件狗,仅支持网络狗。