刘世龙,马智亮
(清华大学 土木工程系,北京 100084)
在当前的钢筋混凝土预制构件生产中,构件的钢筋骨架质量检查完全依赖人工。质量检查人员通过计数检查钢筋骨架中钢筋的数量,通过钢尺和卡尺分别测量检查钢筋骨架中钢筋的间距及钢筋的直径,然后将检查结果与设计要求进行对比,以确定钢筋骨架的质量是否符合设计要求。这种完全依赖人工的质量检查方法存在检查效率低、容易产生人为错误等问题。
三维重建技术[1-4]和BIM技术[5]的发展为解决这一问题提供了可能。一方面,基于三维重建技术可以以点云的形式获取钢筋骨架的实际模型,称为实际点云;另一方面,应用BIM软件可以建立钢筋骨架的BIM设计模型,然后转化为点云形式,称为设计点云。从理论上讲,将实际点云和设计点云进行比对,即可实现钢筋骨架自动质量检查。笔者已经在前期工作[6]中分别提出了从BIM模型生成钢筋骨架设计点云的方法,以及基于三维重建技术生成钢筋骨架实际点云的方法。在此基础上,本文聚焦于钢筋骨架的自动质量检查。
有关钢筋骨架质量检查方法的研究,Hsua等[7]提出基于增强现实(Augmented Reality,AR)对钢筋骨架中箍筋间距和数量进行检查的方法。该方法基于BIM模型生成AR模型,然后通过摄像机采集钢筋骨架的图像,接着将该图像与AR模型叠加,最后通过人眼观察叠加结果来判断箍筋间距和数量是否符合设计要求。该方法的检查内容局限为箍筋间距和数量,不涉及主筋间距和数量,检查过程需要人工参与,未实现自动检查,也未指出该检查方法的误差有多大。Wang等[8]提出基于三维激光扫描点云对预制构件外露连接钢筋间距进行检查的方法。根据该方法,首先基于点间平均距离和RGB颜色去除三维激光扫描点云中的噪点,然后提取所有钢筋点云,接着识别出单根钢筋的点云,最后估计外露连接钢筋沿某一坐标轴的间距。该方法的检查对象局限于预制构件外露连接钢筋,这种钢筋相互平行,没有交叉,其检查内容只是互相平行的钢筋沿某一方向的间距。Kim等[9]提出基于三维激光扫描仪的钢筋骨架和模板质量检查方法。该方法包括4步,即点云数据获取、噪点去除、模板和钢筋识别以及尺寸估计。通过该方法只能得到横向主筋间距和纵向主筋间距、模板尺寸、混凝土保护层厚度。
综上所述,现有研究提出的钢筋骨架质量检查方法存在以下不足。首先,实际工程中使用的预制构件钢筋骨架较为复杂,不仅包含主筋和箍筋,还包括分布筋等,而现有研究提出的方法针对的检查对象较为简单,难以适应复杂钢筋骨架的需求。其次,根据规范[10],钢筋骨架的检查内容不仅包含钢筋间距,也包含钢筋数量和钢筋直径,而现有研究提出的钢筋间距检查方法尚未实现主筋和箍筋的间距检查,更不用说钢筋的直径。
为此,本文提出了钢筋骨架中钢筋数量和间距自动检查算法。首先介绍该算法的框架,然后对该框架中的关键步骤进行说明,最后通过试验验证该算法的有效性。提出的算法能够实现工程中复杂钢筋骨架的钢筋数量和间距的自动检查,从而提高预制钢筋混凝土构件钢筋骨架的质量检查效率,降低人工成本。
为实现钢筋骨架中钢筋数量和间距的自动检查,需要解决2个问题,一个是如何实现钢筋骨架实际点云与设计点云的高精度配准,另一个是如何基于高精度配准结果实现钢筋骨架中钢筋数量和间距的自动检查算法。针对第一个问题的解决思路是,对钢筋骨架实际点云和设计点云依次进行粗配准和精配准。针对第二个问题的解决思路是,针对钢筋骨架中钢筋的特点,分别设计钢筋数量和钢筋间距的检查算法。在以上思路的基础上,本文提出了如图1所示的基于点云的钢筋骨架中钢筋数量和间距的自动检查算法框架。
图1 算法框架
在该算法框架中,首先对钢筋骨架实际点云和设计点云分别进行降采样,以得到空间密集程度相同的实际点云和设计点云。然后对降采样后的钢筋骨架实际点云和设计点云进行粗配准。接着对粗配准得到的钢筋骨架实际点云和设计点云进行精配准,以得到二者高精度的配准结果。最后基于前述配准结果依次对钢筋骨架进行钢筋数量和钢筋间距检查。以上各步骤均由程序自动执行,无需人工参与。
需要说明的是,钢筋骨架的设计点云基于笔者前期工作[6]提出的方法自动生成,点云中的每个点不仅包含三维坐标信息,还包含该点属于哪根钢筋的语义信息。钢筋骨架实际点云由结构光相机在多个位置扫描的多片点云按照优化后的位姿对齐得到,其中点云中的每个点不仅包含三维坐标信息,还包含该点属于哪次扫描的语义信息。这里的多片点云亦可以用其他三维扫描方法,例如立式三维扫描仪得到。
在图1算法框架中,降采样步骤使用基于体素的方法[11],该方法较为成熟,这里不再赘述。精配准步骤使用基于TrICP的高精度精配准方法,这里亦不再赘述。以下详细说明粗配准、钢筋数量检查以及钢筋间距检查3个关键步骤。
本步骤使用文献[12]提到的主成分分析(Principal Component Analysis,PCA)算法进行粗配准。
PCA算法常用于降低数据集的维度,同时尽可能保持原数据集的信息量[13]。以点云为例,其基本原理[14]是,对点云依次进行标准化、协方差矩阵计算、特征值和特征向量计算操作,最终生成点云的主成分,这些主成分本质上是一系列向量。例如,对于图2所示点云,其所在坐标系由X轴、Y轴和Z轴构成,利用PCA算法处理该点云,可以得到第一、第二和第三主成分,3个主成分的方向分别与图中的红色x轴方向、绿色y轴方向和蓝色z轴方向相同。可以看出,第一主成分的方向近似沿着点云的最长边,第二主成分的方向近似沿着点云的次长边,第三主成分的方向近似沿着点云的最短边。
图2 PCA算法示例
根据PCA算法原理可知,使用PCA算法分别处理钢筋骨架实际点云和设计点云,能够得到3个主成分,而且3个主成分构成一个坐标系。虽然钢筋骨架实际点云和设计点云略有差别,但二者对应的钢筋骨架是一样的,所以根据PCA算法求得的第一主成分、第二主成分和第三主成分的方向大体相同,3个主成分构成的坐标系大体相同。
由此可以构建基于PCA算法的钢筋骨架实际点云和设计点云粗配准算法。具体来说,首先用PCA算法分别对钢筋骨架实际点云和设计点云进行处理,分别得到3个主成分,并分别以此构建坐标系。然后将钢筋骨架实际点云和设计点云分别从现有坐标系转换至基于各自主成分构建的坐标系,即可实现钢筋骨架实际点云和设计点云的粗配准。
相比钢筋数量,钢筋是否存在能表示更丰富的信息,即钢筋是否存在不仅能表示各类钢筋各有多少根,而且能清楚地表示缺少的钢筋对应设计要求里的哪根钢筋。因此,本研究将用钢筋是否存在的检查替代钢筋数量的检查。
钢筋骨架实际点云和设计点云在精配准后,同一根钢筋的实际点云与设计点云距离很近。由此可以根据一根钢筋的设计点云附近是否有足够的实际点云来判断该钢筋是否存在。基于这样的思想,本研究设计了如图3所示的钢筋数量检查算法。
图3 钢筋数量检查算法
在该算法中,首先从精配准后的钢筋骨架设计点云中获取每根钢筋的设计点云。然后,遍历每根钢筋,对每根钢筋执行以下步骤:①对该根钢筋设计点云中的每个点,判断其领域内是否有精配准后钢筋骨架实际点云中的点,如果有则将该点加入集合N;②根据集合N中的点数和该根钢筋设计点云中的点数,判断该根钢筋是否存在。遍历完成后,即可实现钢筋骨架中钢筋数量的检查。
2.2.1 获取每根钢筋的设计点云
本步骤基于钢筋骨架设计点云中的语义信息,获取每根钢筋的设计点云,以便后续对每根钢筋是否存在进行检查。这里的语义信息指的是钢筋ID[1],具体来说分为2个子步骤。
首先,获取钢筋ID集合。遍历钢筋骨架设计点云中的每个点,把每个点的语义信息加入集合IDs中。遍历完成即可得到钢筋ID的集合IDs。需要说明的是,若集合IDs中有重复的钢筋ID,则对重复的钢筋ID只保留一个。
其次,获取每个钢筋ID对应的点的集合,即每根钢筋的设计点云。对于集合IDs中的每个钢筋ID,遍历钢筋骨架设计点云中的每个点,若该点的语义信息与该钢筋ID相同,则把该点加入该钢筋ID对应的钢筋设计点云中,该钢筋设计点云初始点数为0。遍历完钢筋骨架设计点云中的每个点,即可得到该钢筋ID对应的钢筋设计点云。遍历完集合IDs中的每个ID,即可得到每根钢筋的设计点云。
2.2.2 获取邻域内有实际点云的点的集合
本步骤的目的是将钢筋设计点云中每个点附近的钢筋实际点云中的点加入集合N,每个点的附近区域用该点的邻域表示。对每个点,以该点为中心,以r为半径的球体即为该点的邻域。
本步骤的具体过程是,遍历钢筋设计点云中的每个点,对每个点,判断其以r为半径的邻域内是否有钢筋实际点云中的点,如果有,则将该钢筋设计点云中的点加入集合N。
本步骤中,r的值应小于钢筋骨架中钢筋间距的最小值,否则钢筋设计点云中某些点的邻域可能包含其他钢筋实际点云中的点,从而影响钢筋数量检查结果的准确性。考虑到工程上钢筋骨架中钢筋间距的最小值约为20 mm,所以本步骤中的r取15 mm。
2.2.3 判断钢筋是否存在
在获取每根钢筋设计点云对应的集合N后,即可根据式(1)的结果R判断该根钢筋是否存在。
(1)
式中:size(N)为集合N的点数;size(Q)为该钢筋设计点云的点数。
通常由于钢筋之间相互遮挡,钢筋实际点云有缺失,所以size(N) 如果某根钢筋存在,则进行与之相关的钢筋间距检查,否则不进行与之相关的钢筋间距检查。 根据钢筋形状的不同,可以将钢筋骨架中的钢筋分为2类:一类是只有平直段的钢筋,例如主筋和分布筋,如图4(a)所示;另一类既有平直段又有弯曲段,例如箍筋,如图4(b)所示。 图4 钢筋平直段和弯曲段示意图 由于钢筋的直径远远小于其长度,所以钢筋的平直段可以用直线段表示,弯曲段可以用曲线段表示。由此,钢筋骨架中的主筋和分布筋可以简化为直线段,而箍筋可以简化为直线段和曲线段的组合。由于2条直线段间的间距求解比较简单,因此可以根据钢筋的实际点云获取近似表示该钢筋的直线段,然后用直线段间距的计算替代钢筋间距的计算,从而实现钢筋间距的计算。基于此,本文提出了如图5所示的钢筋间距检查算法。 图5 钢筋间距检查算法 由于钢筋骨架存在多种类型的钢筋,且钢筋横竖交错,难以通过自动的方式从钢筋骨架实际点云和设计点云中判断需要检查哪些钢筋的间距,因此在图5中引入间距检查表。间距检查表对应于待检查钢筋骨架的BIM模型,是一个文本文件,存储的信息包括钢筋ID、是否为箍筋、与其相邻钢筋的ID、设计间距。间距检查表通过手工或半自动的方式在钢筋骨架中钢筋数量和间距的自动检查之前生成。间距检查表的生成不影响钢筋间距检查算法的自动进行。 在钢筋间距检查算法中,首先从精配准后的钢筋骨架实际点云中提取每根钢筋的实际点云。接下来遍历每根钢筋,并对每根钢筋做如下处理:根据间距检查表判断其是否为箍筋。如果这根钢筋是箍筋,则获取其平直段点云;如果不是,则获取与间距计算有关的点云。至此,无论这根钢筋是否为箍筋,均得到了其平直段点云。然后,根据这根钢筋的平直段点云获取能代表该钢筋的直线段。遍历每根钢筋完成后,基于代表钢筋的直线段计算需要进行间距检查的2根钢筋的间距,并将该间距与间距检查表中的设计间距对比,从而判断钢筋间距是否符合设计要求。以下对各关键步骤进行说明。 2.3.1 获取每根钢筋实际点云 本步骤的目的是从精配准后的钢筋骨架实际点云中获取每根钢筋的实际点云。 本步骤将以每根钢筋的设计点云为基础,获取每根钢筋的实际点云。每根钢筋的设计点云获取方法已经在第2.2节钢筋数量检查中介绍,这里不再赘述。获取某根钢筋实际点云的过程是,对于该根钢筋,遍历其设计点云中的每个点,获取该点以r为半径的邻域中所有精配准后的钢筋骨架实际点云中的点,并把这些点加入集合P。遍历完成后,即可得到该根钢筋的实际点云P。对每根钢筋均进行上述处理,即可得到每根钢筋实际点云。需要说明的是,如果P中存在重复的点,则这些重复的点只保留一个。r的取值与第2.2.2节中r的取值相同。 2.3.2 判断是否为箍筋 本步骤的目的是判断钢筋是否为箍筋,以便为其选择合适的后续处理步骤。 因为间距检查表中包含钢筋是否为箍筋的信息,所以本步骤结合间距检查表来实现钢筋是否为箍筋的判断。具体来说,首先读取间距检查表并解析。然后从与钢筋实际点云对应的设计点云中提取钢筋ID。接着根据该钢筋ID在解析后的间距检查表获取该钢筋是否为箍筋的信息,即可实现钢筋是否为箍筋的判断。 2.3.3 获取箍筋平直段点云 本步骤的目的是从箍筋实际点云中提取属于平直段的点云。本步骤基于随机采样一致(Radnom Sample Consensus,RANSAC)算法实现箍筋平直段点云的获取。其中几何模型选择直线,因为箍筋平直段点云均在该平直段的轴线附近,且该轴线为直线。通常箍筋含有4个平直段,且其中2个平直段较长,点云较多,而另外2个平直段较短,点云较少。根据RANSAC算法的原理[15]可知,RANSAC算法能够输出较长平直段的点云,但究竟得到的是哪一个较长平直段的点云则难以确定。 通常钢筋骨架平放在模板上,主筋和分布筋平行于模板,而箍筋所在平面垂直于模板,箍筋2个较长的平直段则平行于模板,如图6所示。在精配准步骤,钢筋骨架实际点云所在坐标系转换为钢筋骨架设计点云所在坐标系。由于钢筋骨架设计点云所在坐标系来自于粗配准步骤中PCA算法的处理结果,且该坐标系的z轴垂直于模板向上。精配准后钢筋骨架实际点云所在坐标系的z轴垂直于模板向上。因此,上述基于RANSAC算法获取的箍筋较长的2个平直段点云中,总是一个平直段点云中每个点的z值均大于另一个平直段点云中每个点的z值。可以统一选择z值较大的平直段点云作为获取的箍筋平直段点云,从而有利于后续对箍筋间距的计算。 图6 钢筋骨架 本步骤的具体流程为:首先用以直线为几何模型的RANSAC算法处理箍筋实际点云,获取该箍筋第一个平直段点云;然后在该箍筋实际点云中去除第一个平直段点云,用以直线为几何模型的RANSAC算法对剩下的点云进行处理,得到该箍筋的第二个平直段点云;最后选择z值较大的平直段点云作为本步骤输出的箍筋平直段点云。 需要说明的是,本步骤提取的箍筋平直段点云不含有与该箍筋相交的其他钢筋的点云,所以本步骤输出的箍筋平直段点云不含与计算间距无关的点。 2.3.4 获取与间距计算有关的点云 若钢筋不是箍筋,即钢筋为主筋或分布筋,则执行此步骤。 获取每根钢筋实际点云的步骤是基于参数r获取每根钢筋实际点云,所以钢筋实际点云中会包含与该钢筋相交的其他钢筋的点云。后者与间距计算无关,它的存在会影响间距的计算,因此需要从钢筋实际点云中获取与间距计算有关的点云。 由于主筋和分布筋没有弯曲段,只有平直段,所以可以用以直线为几何模型的RANSAC算法获取平直段点云,从而提取与间距计算有关的点云。具体流程为,用以直线为几何模型的RANSAC算法处理钢筋实际点云,所得内点即为与间距计算有关的点云。 2.3.5 获取代表钢筋的直线段 本步骤的目的是根据钢筋的平直段点云,计算直线段,从而简化钢筋的表示,方便后续钢筋间距的计算。 在“获取箍筋平直段点云”和“获取与间距计算有关的点云”2个步骤中,RANSAC算法会输出与平直段点云相关的直线参数,该直线的位置和方向与钢筋平直段的轴线位置和方向近似,所以本步骤基于该直线和平直段点云获取代表钢筋的直线段。 本步骤的具体流程为:首先将钢筋平直段点云中每个点向该直线投影,并计算投影点;然后获取欧式距离最大的2个投影点。其方法为在所有投影点中任取一点,计算其他所有投影点与该点的欧式距离,记欧式距离最大的一个投影点为a。最后,计算所有其他投影点与a的欧式距离,记欧式距离最大的投影点为b。a和b即为欧式距离最大的2个投影点,亦为直线段的2个端点。至此,得到了代表该钢筋的直线段。 2.3.6 计算钢筋间距并判断是否合格 在本步骤中用代表钢筋直线段的间距计算来替代钢筋间距的计算。 规范[10]规定钢筋间距的检查方法为,用钢尺在需要检查间距的2根钢筋的2个端部和中间各量测1次距离,然后计算3次量测距离与设计间距的最大偏差值,再将该最大偏差值与规范容许最大偏差值比较。 本文基于该检查方法设计本步骤的流程。假定需要检测间距的2根钢筋的直线段分别为m和n,首先分别计算直线段m的2个端点和中点距离直线段n所在直线的欧式距离。其次分别计算直线段n的2个端点和中点距离直线段m所在直线的欧式距离。然后计算这实际间距与设计间距的最大偏差值,判断钢筋间距是否合格。如果最大偏差值大于规范容许最大偏差值,则不合格,否则合格。 为了验证本文提出的算法的可行性,开展了相关试验。首先根据标准图集建立了钢筋骨架的BIM模型,并根据该BIM模型实际制作了钢筋骨架试件。其次用文献[6]中的方法获取该钢筋骨架的设计点云,并基于图优化方法获取该钢筋骨架的实际点云。最后用本文提出的算法处理该钢筋骨架的实际点云和设计点云,并分析钢筋数量和间距检查结果的准确率。 本试验根据标准图集[16]建立的钢筋骨架BIM模型如图7所示,用文献[16]中的方法得到该钢筋骨架的设计点云如图8所示。根据该BIM模型建立的钢筋骨架及其尺寸如图9所示。由于工人制作钢筋时粗心,导致实际制作的钢筋骨架缺少2根箍筋,这2根箍筋如图7中虚线所示。本试验基于图优化方法得到该钢筋骨架的实际点云,如图10所示。 图7 钢筋骨架BIM模型 图8 钢筋骨架设计点云 图9 钢筋骨架及其尺寸 图10 钢筋骨架实际点云 当前预制构件厂在预制钢筋混凝土构件钢筋骨架制作中普遍采用焊接封闭箍筋,而非普通封闭箍筋,所以图9中的钢筋骨架也采用焊接封闭箍筋。然而,目前在主流BIM建模软件Revit中尚不能绘制焊接封闭箍筋,只能绘制普通封闭箍筋,这将导致箍筋的BIM模型与其实际情况不同,给钢筋骨架质量检查带来不良影响。为了让钢筋骨架BIM模型能够与钢筋骨架的实际情况吻合,本研究采取的措施是,在Revit软件中绘制有开口的箍筋,开口长度为20 mm,如图11所示。由于箍筋开口较小,所以对钢筋骨架质量检查带来的影响可以忽略不计。 图11 在Revit中绘制的有开口箍筋 间距检查表通过手工录入生成,其包含的信息为钢筋ID,是否为箍筋,与其相邻钢筋的ID、设计间距。由于间距检查表中的信息包括钢筋ID和相邻钢筋ID,所以2根相邻钢筋会在间距检查表中产生2条数据,即“钢筋ID1,相邻钢筋ID2,……”和“钢筋ID2,相邻钢筋ID1,……”,这会导致钢筋间距的重复计算,降低算法的效率。为此,在间距检查表中对相邻钢筋只保留一条数据。 由于试验所用钢筋骨架中钢筋种类较多,且同种钢筋的轴线方向可能不同,所以只对同种钢筋中轴线方向相同的钢筋检查间距。 此外,由于试验所用钢筋骨架包含主筋、箍筋和分布筋,且每种钢筋数量较多,为了后续更方便地表示试验结果,预先对各钢筋进行编号,如图12、13中数字所示。图12表示平放在模板上的钢筋骨架的上层钢筋,图13表示平放在模板上的钢筋骨架的下层钢筋,箍筋的编号只在图12中出现。 图12 钢筋骨架上层钢筋的编号 图13 钢筋骨架下层钢筋的编号 使用本文提出的算法对第3.1节的试验数据进行处理,即可得到钢筋数量检查结果。手动将该检查结果可视化,如图14所示。在图14中,钢筋旁边的数字代表该根钢筋的编号,钢筋旁边的“是”和“否”分别表示本文提出的算法检查到这根钢筋是否存在。 图14 钢筋数量检查结果 从图14可以看出,本文算法检测到有2根钢筋不存在,而其余钢筋都存在。这2根不存在的钢筋正是图9中被工人由于粗心而忘记绑扎的钢筋。从试验结果可以得到,本文提出的钢筋数量检查算法可以检查钢筋骨架中每根钢筋是否存在,且检查结果的准确率为100%。 使用本文提出的算法对第3.1节的试验数据进行处理,即可得到钢筋间距的检查结果。钢筋间距检查结果可以分为4种情况: (1)钢筋间距实际合格,被算法判定为合格,这称为True Positive(TP)。 (2)钢筋间距实际合格,被算法判定为不合格,这称为False Negative(FN)。 (3)钢筋间距实际不合格,被算法判定为合格,这称为False Positive(FP)。 (4)钢筋间距实际不合格,被算法判定为不合格,这称为True Negative(TN)。 将钢筋间距检查结果可视化,如图15所示。在图15中,“nTP”“nFN”“nFP”和“nTN”中的n表示钢筋间距的编号。 图15 钢筋间距检查结果 把属于True Positive情况的钢筋间距个数记为nTPs,属于False Negative情况的钢筋间距个数记为nFNs,属于False Positive情况的钢筋间距个数记为nFPs,属于True Negative情况的钢筋间距个数记为nTNs。显然,当nTPs和nTNs越大,nFNs和nFPs越小,钢筋间距检查结果就越好。本试验钢筋间距检查结果中,nTPs为23,nFPs为1,nFNs为6,nTNs为5。 本文以精确率(Precision,记为P)和准确率(Accuracy,记为A)来衡量钢筋间距检查结果,其计算公式分别如式(2)、(3)所示。 (2) (3) 根据以上公式可得,本试验中钢筋间距检查结果的准确率为80%,精确率为95.8%。这说明实际钢筋间距合格且被算法判定为合格和实际钢筋间距不合格且被算法判定为不合格的个数占总个数的比例为80%,实际钢筋间距合格且被算法判断为合格的个数占所有被算法判断为合格的个数的比例为95.8%。 (1)针对当前研究提出的钢筋骨架质量检查方法不适用于实际工程复杂钢筋骨架,不能兼顾主筋和箍筋质量检查,需要人工参与检查等问题,本文提出了基于点云的钢筋骨架中钢筋数量和间距的自动检查算法。 (2)相比于当前各项研究提出的钢筋骨架质量检查方法,本文提出的基于点云的钢筋骨架质量检查算法能够对工程中复杂钢筋骨架进行自动质量检查,检查内容包括主筋、箍筋和分布筋的数量和间距。该算法在获取钢筋骨架实际点云和设计点云的基础上,首先对这2片点云分别进行降采样;其次对降采样后的钢筋骨架实际点云和设计点云进行粗配准;然后对它们进行精配准;最后基于精配准后得到的点云,依次对钢筋骨架中的钢筋数量和钢筋间距进行检查。根据试验结果,钢筋数量检查结果的准确率为100%,钢筋间距检查结果的准确率为80%。 (3)本文提出的基于点云的钢筋骨架中钢筋数量和间距的自动检查算法能够有效降低钢筋骨架质量检查工作量,提高钢筋骨架质量检查效率。今后将继续研究钢筋骨架中钢筋直径的自动检测算法,从而彻底解决基于点云的钢架骨架自动质量检查问题。2.3 钢筋间距检查
3 试验验证
3.1 试验数据准备
3.2 钢筋数量检查试验结果
3.3 钢筋间距检查试验结果
4 结 语