TMC2参考软件编译

TMC2是点云编码的参考软件,我的电脑的操作系统是Windows10,使用的工具是Visual Studio 2019,TMC2的编译过程大致分为以下几步:

1. 参考软件的下载,包括TMC2,以及TMC2调用的HM和HDRTools共3个参考软件

    我是根据 N18665_PCC_CTC.doc 这篇文档上的链接来下载对应版本的软件的,链接如下:

    TMC2:http://mpegx.int-evry.fr/software/MPEG/PCC/TM/mpeg-pcc-tmc2.git

    HM    :https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-16.20+SCM-8.8

    HDRTools:https://gitlab.com/standards/HDRTools/tags/v0.18

    注:以上材料下载不到的话直接去百度云上下载吧。。。

    链接:https://pan.baidu.com/s/1gLPmOlbOlJb2WG8MUxA7uw 提取码:vgnb

    下载完成后,新建一个文件夹TMC2_test,将TMC2的压缩包解压到TMC2_test中,再在TMC2_test中新建external文件夹,

    将HM和HDRTools解压到external中,然后在TMC2_test中新建ply文件夹,用来存放待编码的点云序列,我这里存放

    loot_vox10_1000.ply 到 loot_vox10_1009.ply 共十帧ply文件

    注:TMC2需要账号密码才能下载(我也没有),HM要用TortoiseSVN来下载

2. 生成可执行文件( .exe ),都以Release版本举例

    2.1 生成TMC2可执行文件:

    打开解TMC2解压后的文件夹 -- 新建 build 文件夹 -- 打开命令行,使用cd命令切换到 build 目录下 -- 根据自己的VS版本在命令

    行输入如下命令:VS2019就输入:cmake .. -G "Visual Studio 16 2019"

                                 VS2017就输入:cmake .. -G "Visual Studio 15 2017 Win64"

                                 VS2015就输入:cmake .. -G "Visual Studio 14 2015 Win64"

     执行命令完成后会发现build文件夹下生成sln文件,双击打开 -- 选择Release,x64(VS上方的菜单中有两个下三角选项,一

     个用来选择是生成Release还是Debug版本的可执行文件,Release版本速度很快,Debu版本用来调试;另一个选项就选 x64

     就可以了,应该会快一点)-- 直接按快捷键 F7 生成解决方案(或者点击 生成 -- 生成解决方案 ),可以在TMC2解压后文件

     夹的 bin 目录下的 Release 目录下发现生成的可执行程序

     2.2 生成HM的可执行文件

     虽然 N18665_PCC_CTC.doc 这篇文档中有说到要给HM打上一个补丁,但是我发现不打补丁也可以正常运行,因此我的博客

     中省去了打补丁的步骤(注:打补丁的方法参考这篇博客 https://blog.csdn.net/machuang1996/article/details/100773444

     具体做法就是在Linux操作系统下,先使用cd命令切换到HM的目录下,然后在命令行输入 svn + patch + patch文件所在的路

     径,回车。亲测这个方法可以正确给HM打补丁。但是目前为止我还没有使用打过补丁的HM来压缩点云序列),对了,

     在TMC2解压目录下的 -> dependencies -> hm-modification 目录下有两个patch文件,两个分别都试一下,哪个能用就用哪个

     -----------------------------------------------------接下来才是真正的生成HM可执行文件的步骤-------------------------------------------------

     来看看如何生成HM的可执行文件:打开解压后的HM的文件夹 -- 打开 build 文件夹,打开sln文件,由于HM只是被TMC2调用

     的,只追求速度最快就好,因此选择Release,x64 -- 在TAppEncoder项目上右击,选择属性,可以看到 配置属性 -> 常规

     -> 输出目录这一栏有一长串地址,为了让路径变的简单,我这里删去了后面多余的路径,只保留到了bin目录下面 -- 对于

     TAppDecoder 执行相同的操作 -- F7编译,可以发现 bin 目录下生成了两个exe

     2.3 生成 HDRTools 的可执行文件

     打开解压后的HDRTools的目录,打开sln,因为同样只是被TMC2调用,所以也选择Release,x64,经查看发现项目的输出目

     录原本就在 bin 目录下,因此直接F7编译生成可执行文件即可

3. 运行,分为Release版本和Debug版本下的运行

    为了方便寻找目录,在 TMC2 解压后的目录下 -- 打开 cfg 文件夹 -- 打开 sequence 文件夹 -- 调用了哪个序列的配置文件,就

    打开哪个配置文件,这里我打开 loot_vox10.cfg ,将 uncompressedDataPath 的值修改为 loot_vox10_%04d.ply

    3.1 Release版本的运行

    编码

    打开powershell(不知道怎么打开就去百度)-- 使用cd命令切换到 TMC2 解压后的文件夹下,复制以下命令行(其中

    frameCount=1 是编码1帧的意思,想编几帧就改成几,由于我的电脑配置还可以,再加上使用的都是Release版本的exe,

    因此编码1帧只用了1分多钟,还是挺快的,但是如果是Debug版的跑一帧就要运行二十分钟。。):

    注:第一个配置文件好像只能用ctc-common.cfg,用其他的会出错,不知道为什么

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

   解码

   使用powershell在同样的路径下,复制以下命令行:

./bin/Release/PccAppDecoder.exe --compressedStreamPath=S26C03R03.bin --videoDecoderPath=../external/HM-16.20+SCM-8.8/bin/TAppDecoder.exe --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --inverseColorSpaceConversionConfig=cfg/hdrconvert/yuv420torgb444.cfg --reconstructedDataPath=S26C03R03_dec_%04d.ply --keepIntermediateFiles=1

   3.2 Debug版本的运行

   运行Debug版本是为了能够调试,方便看代码

   编码

   打开TMC2,选择Debug,x64 -- PccAppEncoder项目上右击 -- 设为启动项目 -- 再右击 -- 属性 -> 配置属性 -> 调试 -- 修改工作

   目录,改为 $(SolutionDir).. -- 再添加命令参数如下:

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

  然后关键的一步!!将 PccLibEncoder 项目中 PCCPatchSegmenter.cpp 文件下的第316行内容为:

  assert( enablePointCloudPartitioning && patchExpansionEnabled == false );  的这一行给注释掉!!不然会报错

  然后 ctrl + F5 运行即可(我实验室的电脑跑一帧大概20分钟)

  解码

  将 PccAppDecoder 设为启动项目,工作目录同样修改为 $(SolutionDir).. ,命令参数如下:

--compressedStreamPath=S26C03R03.bin --videoDecoderPath=../external/HM-16.20+SCM-8.8/bin/TAppDecoder.exe --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --inverseColorSpaceConversionConfig=cfg/hdrconvert/yuv420torgb444.cfg --reconstructedDataPath=S26C03R03_dec_%04d.ply --keepIntermediateFiles=1

  有了编码产生的 bin 文件的话,直接运行就好啦

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答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技术是一种非常实用的电机保护和控制技术,可以帮助用户实现更加稳定和精确的步进电机控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值