使用VS运行TMC2参考软件

目录

0 环境配置

0.1 材料准备

0.2 解压文件

1 生成并编译

1.1 CMake生成TMC2

1.2 生成TMC2的可执行文件

1.3 生成HDRTools

2 测试编码

2.1 测试序列下载

2.2 修改测试序列的配置文件

2.3 运行测试

3 参数解释

4 参考文章


0 环境配置

2022·8·23更新:官网已更新至18.0版本,CMake过程的VTM可能已换源,如果仍用15.0进行配置会出错,即使跳过VTM的clone过程在生成过程中也会因为缺失CommonLib报错,建议用18.0版本(当前maste版本)进行配置,实测以下配置过程可以在18.0上使用。

本文使用的版本是TMC2 v15.0

0.1 材料准备

        (官方)Visual Studio下载

        (GitHub)TMC2软件参考模型

        (官方)CMake

        (官方) Git

        (GitLab)HDRTools下载

        (官方)VPCC测试序列


       (百度云)TMC2资料整合,提取码2222

0.2 解压文件

Visual Studio、CMake和Git是常用工具,这里不再赘述安装方法,CMake过程中需要用到Git否则会报错。下文中所用Visual Studio版本为2019,CMake所用版本为3.21.3。

首先建立一个MPEG-PCC-TMC2的文件夹(下文的截图中均错写成了MEPG-PCC-TMC2,见谅),下文将此文件夹作为根目录,用/表示,然后在此文件夹下建立external, mpeg-pcc-tmc2-master, ply三个文件夹,解压后的包结构如下图

  1. mpeg-pcc-tmc2-master:TMC2参考软件本体,将软件参考模型解压至此文件夹下;
  2. ply:存放.ply文件,将下载的测试序列解压在此处,作为软件输入的测试文件,解压后的包结构会在2.1部分说明;
  3. extral:将下载的HDRTools解压到/external下,作为外部调用位置,有的博客会说此文件夹下还需要额外下载编码软件并patch,下载地址在“0.1 材料准备”中给出的GitHub文章中也有给出,但如果直接使用GitHub上下载软件中的CMakeList,在CMake过程可于/mpeg-pcc-tmc2-master/dependencies位置下直接生成patch过的依赖(按后文步骤进行即可,但注意需要保证此时网络可访问GitHub),在一些地方会看到说需要将外部下载的patch过的编解码软件存放在external下,但笔者在使用TMC2过程中发现软件会直接寻找/mepeg-pcc-tmc2-master/dependencies下对应的编解码软件,因此可以不将生成的外部调用放在external中(按后文步骤即可)。

注意解压后尽量不要存在中间包,否则容易给后续设置输出目录或查找文件带来麻烦,即比如TMC2下的source的所在路径为“/mpeg-pcc-tmc2-master”而不是“/mpeg-pcc-tmc2-master/mpeg-pcc-tmc2-master”,external下的HDRTools-v0.18同理。

1 生成并编译

1.1 CMake生成TMC2

首先进入/mpeg-pcc-tmc2-master,创建名为build的文件夹

然后打开CMake,源代码选择CMakeList.txt所在的位置,也就是刚才新建的build文件夹所在的目录,生成代码选择build文件夹下,然后点击Configure→选择自己VS的版本→Finish

在出现Configuring done后点击Generate,出现Generating done后生成结束

注意:在刚才CMake的过程中已经在/mpeg-pcc-tmc2-master/dependencies位置下生成了patch过的依赖(即编码软件),此时进入/mpeg-pcc-tmc2-master/dependencies可以看到增加了几个文件夹

这是CMake前dependencies文件夹下的内容
这是CMake后dependencies文件夹下的内容

根据笔者的使用,配置文件指定编解码器后TMC2会直接将此处的编解码软件源码合并到项目中使用,不会调用/external下的可执行文件,如果要对编解码软件进行修改优化的工作,需要在此处进入修改。

1.2 生成TMC2的可执行文件

在/mpeg-pcc-tmc2-master下创建一个bin文件夹,然后用VS打开/mpeg-pcc-tmc2-master/build/TMC2.sln

如果没有TMC2.sln则用CMake再次Configure和Generate。

在ALL_BUILD上右键→属性→配置属性→常规→输出目录,设置为/bin/Release(后续如果需要用Debug模式调试建议将生成目录设置为/bin/Debug)

注意左上角的配置设置为所有配置,平台设置为x64

修改解决方案的配置和平台为Release和x64,然后生成

生成结束后可能有如下报错,但只要控制台没有生成失败的提示,就可以无视该报错

 此时/mpeg-pcc-tmc2-master/bin/Release下应有如下可执行文件

1.3 生成HDRTools

打开/extral/HDRTools-v0.18/HDRTools.sln

由于版本问题可能出现下图的提示,确定更新即可

不建议修改HDRTools的输出目录,HDRTools的bin目录下本身就已经有一部分可执行文件了,这些可执行文件放在一起也方便后续的查找,修改此处输出目录的话,在2.3运行测试部分使用的参数要同步修改。

将解决方案配置改为Release,平台改为刚才属性页配置的对应情况

选择8个项目然后右键→生成选定内容

8个生成成功后,/extral/HDRTools-v0.18/bin/Release会有如下图中的这些新增文件(用Debug配置可能会生成出错,也没有必要使用Debug模式生成HDRTools)

2 测试编码

2.1 测试序列下载

进入"这里"去找官方的测试序列

官方给出了两个数据集

第一个是8i Voxelized Surface Light Field (8iVSLF),数据内容如下:

2022.4.19日更新:官方已经更改了提供的8i数据集,现在使用的是vox12版本,不再是以前的vox10,且只提供一个300帧的高分辨率序列,其他六个序列均为单帧点云,不提供法线。

官方声明(机翻)如下:

我在0.1材料准备中的百度云资料整合里更新了soldier序列的32帧测试序列和对应法线,可以保证程序的运行,经评论补充,在这里可以下载到部分测试序列。

以下为博客原文。

后续均以Soldier数据集为例,此外注意红框框住的部分下载的仅为简单的一帧测试帧,如果需要完整的多帧测试集需要从蓝色框住的链接下载,在0.1材料准备的百度云整合资料中包含了Soldier数据集的压缩包。

第二个是Owlii Dynamic Human Textured Mesh,与上一个数据集类似,只是内容是MPEG后来补充的数据集,不再赘述

下载好后将文件解压到/ply下,建议将解压出的soldier/Ply中的测试序列移到/ply/soldier下,并删除多余文件夹,保持包结构清晰,即

2.2 修改测试序列的配置文件

进入/mpeg-pcc-tmc2-master/cfg/sequence/soldier_vox10.cfg(如果使用的是别的测试序列则修改对应名称的文件,如果需要无损模式则使用lossless后缀的配置文件)

 注释掉原本的路径值,改为刚才解压到的位置

2.3 运行测试

使用VS的运行参数:

--configurationFolder=cfg/  --config=cfg/common/ctc-common.cfg  --config=cfg/condition/ctc-all-intra.cfg  --config=cfg/sequence/soldier_vox10.cfg --config=cfg/rate/ctc-r3.cfg --uncompressedDataFolder=../ply/ --frameCount=1 --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --reconstructedDataPath=S26C03R03_rec_%04d.ply --compressedStreamPath=S26C03R03.bin --keepIntermediateFiles=1 --apply3dMotionCompensation=0

使用powershell的运行参数:

bin/Release/PccAppEncoder.exe --configurationFolder=cfg/  --config=cfg/common/ctc-common.cfg  --config=cfg/condition/ctc-all-intra.cfg  --config=cfg/sequence/soldier_vox10.cfg --config=cfg/rate/ctc-r3.cfg --uncompressedDataFolder=../ply/ --frameCount=1 --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --reconstructedDataPath=S26C03R03_rec_%04d.ply --compressedStreamPath=S26C03R03.bin --keepIntermediateFiles=1 --apply3dMotionCompensation=0

官方教程中,运行参数有一项 --videoEncoderPath,此参数已不使用,取而代之的是--videoEncoderOccupancyPath, --videoEncoderGeometryPath, --videoEncoderAttributePath,对占位图、几何(深度)图、属性(纹理)图的编码软件可以分开选择。

本文以使用VS运行为例

进入/mpeg-pcc-tmc2-master/build/TMC2.sln

找到PccAppEncoder,右键→设为启动项

然后继续对PccAppEncoder右键→属性→配置属性→调试→命令参数,修改为刚才的“使用VS的运行参数”,工作目录使用“浏览”设置为/mpeg-pcc-tmc2-master下的位置,也可以手动输入../../../..,然后注意检查“配置”和“平台”,分别为“所有配置”和“x64”

调试前检查是否为Release模式和x64,然后使用调试

成功开始对patch进行划分说明参数没有问题,否则要去检查参数是否出错。 

注意,如果出现以下错误,请检查/external/HDRTools-v0.18/bin下是否有生成的.exe文件,如果之前修改了HDRTools的输出目录,要把前面的参数中 --colorSpaceConversionPath 的值同步修改

运行结果如下图所示时,表示编码结束运行成功

此时进入/mpeg-pcc-tmc2-master,发现多了一些文件

其中 S26C03R03_GOF0_attribute_1280x1280_8bit_p420.yuv 是属性(纹理)图,包含两帧,一帧是近Map一帧是远Map,S26C03R03_GOF0_attribute_rec_1280x1280_16bit_p444.yuv 是属性(纹理)图的重建结果,.bin是二进制压缩处理结果,占位图、几何(深度)图同理。

3 参数解释

首先注意,参数不要含反斜杠“\”,全部用正斜杠“/”,且目录名中不要含空格,比如像

mpeg-pcc-tmc2-master (2)这种解压后没有调整目录名称的情况,在使用VS时也许没问题,但在调用外部资源时如果在命令中出现这种情况,很容易出现找不到命令的错误。

然后来看刚才使用的参数

        --configurationFolder:指定配置文件位置

        --config:指定要使用的配置文件(关于编码软件的配置文件要如何使用请查看专门的博客)

        --uncompressedDataFolder:指定输入数据的文件根目录,如果不想要这个参数需要在配置序列参数时写全路径

        --frameCount:设置编码帧的数量,这里设置为1就只输入了一个.ply帧,在对patch进行划分之前会显示此次运行编码了多少个3D帧

        --colorSpaceConversionPath:指定外部调用的色域变换处理文件的位置,即HDRTools生成的可执行文件所在的位置,要包含可执行文件的文件名

        --reconstructedDataPath:重建帧的存放位置,要包含文件名

4 参考文章

MPEGGroup/mpeg-pcc-tmc2: Video codec based point cloud compression (V-PCC) test model

TMC2参考软件编译_Tracytang97的博客-CSDN博客

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: TMC2660是一款可以实现高级步进控制的驱动芯片,具有多种功能,例如实现StallGuard2。StallGuard2是一种通过监测电机的负载来检测电机是否出现卡顿的功能。 实现StallGuard2的关键在于设置参数,首先需要通过相应的接口将控制器与芯片连接起来,然后进行参数设置。在设置参数时,需要注意一些关键的参数,例如微步分辨率、最大电流等。 一旦设置完成后,StallGuard2便可以实现了。通过监测电机的负载,StallGuard2可以发现一些和电机运转有关的问题,例如电机卡顿、电机失速等。这些问题都会导致电机运转不稳定,进而影响整个机器的工作效率。 总的来说,TMC2660实现StallGuard2并不复杂,只需要正确设置参数,并根据实际需要调整参数就可以了。通过StallGuard2,我们可以在电机出现问题时快速发现并解决问题,提高整个机器的生产效率。 ### 回答2: TMC2660 StallGuard2 是一种针对步进电机的运动控制芯片,它可以通过内置的 StallGuard2 技术检测步进电机的负载情况,从而实现更高效的驱动控制。在使用 TMC2660 StallGuard2 时,需要进行以下几个步骤: 1. 配置芯片寄存器: TMC2660 StallGuard2 的运作需要先对其进行初始化和配置,这可以通过设置芯片的寄存器来完成。具体而言,需要设置 StallGuard2 相关的寄存器参数,如 MODE、SG_THR 等,来适配具体的步进电机。 2. 启用 StallGuard2 功能:在配置完寄存器参数后,还需要通过相应指令来启用 StallGuard2 功能。根据具体应用场景的不同,可以选择不同的工作模式,包括 Standy、Normal、Test 等模式。 3. 监测步进电机行程:TMC2660 StallGuard2 通过检测步进电机的行程来实现负载检测。当电机出现堵转或阻力大时,会在芯片中触发回调函数并产生异常信号,通知控制器进行相应的处理。 总的来说,TMC2660 StallGuard2 的实现需要涉及到寄存器配置、功能启用和步进电机行程监测等多个方面。通过合理的设置和使用,可以实现更加精准的步进电机控制,提高运动控制系统的性能和效率。 ### 回答3: TMC2660是一种高性能步进驱动器芯片,它可以实现驱动步进电机的精准控制和保护。其中TMC2660的StallGuard2技术是一种先进的电机失步检测技术,能够实时监测电机是否失步,并在电机失步时自动进行调整,从而确保电机运行的精度和稳定性。 具体来说,TMC2660的StallGuard2技术通过检测电机的反电动势来判断电机是否失步,如果检测到电机失步,则自动调整电流或降低步进速度,以防止电机失步持续发生。此外,TMC2660还可以根据电机的负载情况进行自适应调整,从而实现更加精确的控制和保护效果。 在实际应用中,用户可以通过软件或硬件方式配置TMC2660的StallGuard2技术,具体配置方法可以参考相关文档和资料,以满足不同的实际需求。总之,TMC2660的StallGuard2技术是一种非常实用的电机保护和控制技术,可以帮助用户实现更加稳定和精确的步进电机控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值