上篇文章分享了关于Oculii 4D雷达的两篇报告。数据集是一个非常重要的研究工具,对于4D雷达领域来说,处于一个研究前沿的位置,鲜有公开的数据集,目前能找到的数据集有: 
这些文章中的数据集有不少博主也写过,但往往都是对于作者原文的翻译,实际的获取和使用基本没有涉猎,本文将更加深入和具体地说明这几个数据集,并给出获取的方法、使用方法及注意事项等。
目录
更新log:
Tj4D数据集已可以获取,需要签署保密协议并发送至邮箱通过对方获取(2月7日后开始处理)。 -------2023. 0207
原文:Automotive Radar Dataset for Deep Learning Based 3D Object Detection
文中写到其获取方式为:www.astyx.net (我打开后并未发现该数据集入口)
目前的获取方式:https://github.com/under-the-radar/radar_dataset_astyx
数据集比较小,直接获取即可。
接下来简单介绍一下这个数据集:
作者建立这个数据集的目的在于为研究界提供高分辨率的雷达数据,促进和促进利用雷达传感器数据的算法研究。因为鲜有关注到雷达的数据集,在那个时候唯一含有雷达数据的自动驾驶数据集是nuScense数据集,但是其中的雷达数据是2D的而且很稀疏(约100),本数据集中的点云可以达到约1000点,采集该数据集使用了的设备是:

雷达在目前看来性能一般,测距范围100m,视场角110*10;激光雷达使用的是威力登16线而相机则采用的是8bit的120W像素的灰点相机。
标定采用的是经典棋盘格和角反的方式,内参的标定都是离线进行的。外参的标定都是两两的标定的。
对于GT box的标注:激光雷达反映真实物理坐标精度在其中是最高的,相机很重要,这里作者将其视作对于激光的一个fine-tune;对于雷达来说,激光雷达的角分辨率以及探测距离限制,远距离的目标可能不会出现在传感器的“共视区”(这点和kitti中的don't care比较类似)这里只要雷达和相机能共视到就会进行标注。如下图:

同时,也会对invisible进行标注,这意味着那些实物没有任何激光雷达或相机测量,但在雷达数据中清晰可见(例如,通过在其他汽车下面传播的多路径反射),并且可以通过时间参考联系起来——在数据记录期间之前或之后变得可见。(意思是对于确实存在,但相机和激光雷达无法捕捉而雷达通过一些方法能发现的物体也做了标注)。
作者从自动预标记的数据N帧中提取网络对其决策最不确定的数据,通过手动微调来纠正这些数据,从而在下一轮训练和预标记回合中最大限度地提高网络的信息增益。(自动标注+人工)

本数据集一共提供了7个类别:Bus, Car, Cyclist, Motorcyclist, Person, Trailer, Truck
标注的目标属性有:

标注的储存格式为txt。
目标的 激光雷达和雷达的点数分布:(不同帧对应多个目标以及大小)

数据分布:

可以看出还是非常的不均衡,右图可以看出三辆车的帧是最多的。场景也较为简单。

汽车car的朝向分布:

下图可以看出lidar对于AB两车已经不可看见了,根据图像和雷达点云,根据朝向进行区分。
评估(并未提及用何种网络):随机分割数据集到训练和测试数据使用4:1的比率,训练两个网络(雷达相机和激光雷达相机)22k次迭代,mini-batch为16和评估结果的分类、定位和定位精度通过使用IoU阈值为0.5。
评估结果:

对于car,radar+camera的结果甚至要好过Lidar+Camera的结果。
通过查看数据集可以发现该数据集非常小,只有546个带注释的短片段帧,每个剪辑包含少于10帧。
整体的结构是:

其中相机数据格式为jpg,lidar数据格式为txt,包含六个维度的信息(xyz、反射性、来自那个激光头以及时间戳),雷达的数据同样也通过txt给出,包含五个维度的信息(xyz,速度,以及mag(应该是强度))此外就是标定信息由json形式给出每一帧的变换。GT标注同样也使用的是json格式,内容实例:
{
"frame_flag": "",
"frame_index": 0,
"header": "Astyx Version_01_00",
"objects": [
{
"center3d": [
15.28,
4.24,
-0.46
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.66,
1.8,
1.45
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7020386802113796,
-0.03287019905010674,
0.005682565197980395,
0.711357118439284
],
"score": -1.0
},
{
"center3d": [
57.75593697820277,
-8.95030337350099,
1.7819997024076009
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.34,
1.81,
1.5098232605535091
],
"label_certainty": 0,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 0,
"orientation_quat": [
0.7194398517786975,
-0.03301020608906757,
0.0048577576720212606,
0.6937528581252859
],
"score": -1.0
},
{
"center3d": [
11.73,
4.59,
-0.64
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.15,
1.8,
1.45
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7058035625491359,
-0.03289943574160317,
0.005508833819764444,
0.7076217993891781
],
"score": -1.0
},
{
"center3d": [
9.145197640200534,
5.274276650959328,
-0.7580683445170724
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.77,
1.8,
1.45
],
"label_certainty": 1,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7199364568101033,
-0.03300232389003559,
0.004846831272768512,
0.6932379483266801
],
"score": -1.0
},
{
"center3d": [
6.479817221419508,
5.247589043270934,
-0.9141820375574657
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.48395807023072,
1.8,
1.45
],
"label_certainty": 1,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.6898415239772513,
-0.004692602780714069,
-0.033023180724797714,
-0.72319162108718
],
"score": -1.0
},
{
"center3d": [
9.994624230481369,
-6.017542527527623,
-0.1464149366341636
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.77,
1.8,
1.3121440590076265
],
"label_certainty": 1,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7130302072899429,
-0.03295292607233075,
0.005173472708666147,
0.7003393915348938
],
"score": -1.0
},
{
"center3d": [
13.167237991660787,
-6.162813630332312,
-0.04708915908300637
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.9561293466010117,
1.8,
1.3121440590076265
],
"label_certainty": 1,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.6950121632719635,
-0.004933161718357779,
-0.03298636965611393,
-0.7182239596646692
],
"score": -1.0
},
{
"center3d": [
18.42,
-6.81,
0.14
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.96,
1.8,
1.31
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7151992798301935,
-0.03296572963883116,
0.005076129151335868,
0.6981242609396919
],
"score": -1.0
},
{
"center3d": [
20.97984695193026,
-6.536436330155294,
0.23764169100863264
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.96,
1.8,
1.37
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7151992798301935,
-0.032965729638831244,
0.005076129151335691,
0.6981242609396919
],
"score": -1.0
},
{
"center3d": [
25.99999984503129,
-6.413659054009911,
0.3289432028830479
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.96,
1.8,
1.37
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
-0.7068649813345358,
0.03289508407018742,
-0.005475805274628736,
-0.7065619768736047
],
"score": -1.0
},
{
"center3d": [
28.57,
-6.72,
0.47
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.96,
1.8,
1.41
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
-0.7071073056108934,
0.005505677989137722,
0.03288670936708505,
0.7063196232645582
],
"score": -1.0
},
{
"center3d": [
17.9417990603285,
4.047919592487037,
-0.4298381193087091
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.66,
1.8,
1.4034827588118874
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7061942370819255,
-0.005447702826512753,
-0.03290636115848807,
-0.7072320647718813
],
"score": -1.0
},
{
"center3d": [
20.45,
4.51,
-0.31
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.18,
2.0,
1.5
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7072691145493584,
-0.032907514186323296,
0.005445972583162032,
0.706157090523962
],
"score": -1.0
},
{
"center3d": [
24.182930691745177,
3.957377988250483,
-0.21057144426054156
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.9935178142256045,
1.8765534659735825,
1.3706025545077207
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7072691145493584,
-0.032907514186323296,
0.005445972583162032,
0.706157090523962
],
"score": -1.0
},
{
"center3d": [
26.56403718760992,
3.4141810443770053,
-0.07728835626150013
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.99,
1.88,
1.37
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7072691145493584,
-0.032907514186323296,
0.005445972583162032,
0.706157090523962
],
"score": -1.0
},
{
"center3d": [
28.9087287526382,
2.7749496885068696,
0.061472400426277635
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.99,
1.88,
1.37
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7072691145493584,
-0.032907514186323296,
0.005445972583162032,
0.706157090523962
],
"score": -1.0
},
{
"center3d": [
31.80376110462618,
2.413184128432301,
0.20248894322203623
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.025175213620685,
1.9424920472975067,
1.37
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
0.7072691145493584,
-0.032907514186323296,
0.005445972583162032,
0.706157090523962
],
"score": -1.0
},
{
"center3d": [
69.01,
0.68,
1.73
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
4.39,
1.83,
1.62
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
-0.7174576529992662,
0.03299615793779559,
-0.0049519706657062896,
-0.695802592479113
],
"score": -1.0
},
{
"center3d": [
42.98202899707613,
-7.929520596676596,
0.993298589588324
],
"classname": "Car",
"created_by": "g.kuschk",
"dimension3d": [
3.7507295994605845,
1.8,
1.4635864010778035
],
"label_certainty": 2,
"measured_by": {
"Camera": 1,
"Lidar": 1,
"Radar": 1
},
"object_id": -1,
"occlusion": 1,
"orientation_quat": [
-0.7071073056108926,
0.005505677989137767,
0.032886709367085126,
0.706319623264559
],
"score": -1.0
}
]
}
使用的时候可以通过:https://github.com/wzan0001/Astyx-radar-dataset-convert-to-kitti-format
将该数据集转换为kitti格式使用,该方法实现了对于radar的转换。
补充:值得注意的是本作者利用该数据集使用AVOD网络将相机和雷达融合的文章为:
Deep learning based 3D object detection for automotive radar and camera.

原文:Multi-Class Road User Detection With 3+1D Radar in the View-of-Delft Dataset
目前的获取方式:https://docs.google.com/forms/d/e/1FAIpQLSdKvkuKbzmJTn8raJBAWgekAJCpaQLS_ED63sUS89Ezo61RCQ/viewform
填写表单申请,需要是学生邮箱,科研用途。符合要求作者会将数据集链接发送到你的邮件中下载即可。可以说是目前能拿到的做的比较好的数据集了,介绍在官网,非常的详尽:The View of Delft dataset | Documentation and development kit
阐述了下一代雷达(4D)会在自动驾驶领域领域有较为重大的意义,在消融研究中,作业也探讨了多级道路用户检测中额外的高度信息(elevation),以及多普勒、雷达截面、时间积累的好处。还对于激光雷达和雷达的点云形式做了对比。
该数据集包含8693帧同步和标定的64线激光雷达、双目相机和3+1D雷达在复杂的城市交通中获取的数据。它由123106个移动和静态物体的三维边界框注释组成,包括26587个行人,10800个自行车手和26949个汽车标签。结果表明,对64线激光雷达数据的目标探测仍然优于3+1D雷达数据,但添加高程信息和连续雷达扫描的集成有助于缩小这一差距。
对于多普勒信息的应用,当把多普勒通道加入PointNet++中有一定的提升。
多普勒维度可以有利于三维对象检测在两个方面:
1)分类,因为类可能有不同的速度模式;
2)在方向估计,作为一个对象的一般速度(移动方向)与其方向高度相关。
数据集对比:

本文三个贡献:
1. 作者同样使用PointPillars作为baseline测试了雷达Doppler维度、RCS以及俯仰角维度的加入对结果的影响;
2. 对比了激光雷达与雷达在目标检测上的性能,结果表明激光雷达仍然要好一些,但是可以预见的是未来radar检测还是很有潜力的,并且对于速度维度的检测雷达是独一份的;
3. 提出VoD数据集。
接下来是对数据集的说明:

主要包含了威力登的64线激光雷达、IDS的双目相机(230W像素),以及采埃孚(ZF)的4D雷达,配合IMU、GPS以及RTK服务以及轮速器。
提供的是与Kitti一样的同步后以帧形式的:由激光雷达点云、校正的mono图像、雷达点云和变换信息。选择激光雷达时间戳作为lead(主要的),选取原则是最近邻的时间戳,最大容差为50毫秒(误差不算小)。这些帧的时间顺序为10Hz(同步后),它们被组织成平均长度为∼40秒的片段。激光雷达是做过运动补偿的,系统的定义也是参考Kitti,包括坐标系的定义以及文件的组织。除了这个同步版本的数据集,还提供“原始”(raw)异步记录数据,包括所有13 Hz的雷达扫描,以及从左右相机获得的30 Hz的校正相机图像。这可以有利于研究人员寻找更丰富的时间数据,用于检测、跟踪、预测或其他任务。
标注规则:在激光雷达传感器50米内,部分或全部在相机视场内(水平视场:±32°,垂直视场:±22°)都用6个自由度(6自由度)3D边界框标注。一共有13个类别,对于每个对象还提供了两种类型的遮挡(“空间”和“照明”)和一个活动属性(“停止”、“移动”、“停车”、“推”、“坐”)的遮挡级别。

(9+4个类别)
标注是由 https://understand.ai, a subsidiary of DSpace.完成的。

使用PointPillars作为Baseline,对于点的encoding,取p = [x, y, z, vrel, RCS], 其中速度是经过补偿的绝对速度。时间合并点云,以激光雷达为标准,合并(merge)到最后一帧。也提出了常规的数据增强可能并不适用,例如RCS和速度维度与空间位置实际上有一定的关系而不能随意的去增强。
对于该数据集性能的测试,作者只选取了三个类别:car、pedestrian、cyclist。将数据集以59%/15%/26%的比例分割为训练、验证和测试集,这样来自同一剪辑的帧将只在一个片段中出现(根据不同片段合理划分)。
评估指标采用了和kitti一样的两个AP以及AOS(一个评估分类一个评估角度),car大目标IoU采用的是50%,而行人和骑行者则采用0.25的IoU。结果来源于 1)整个注释区域(相机视野50米)和2)更安全相关区域称为“驾驶走廊”,定义为一个矩形的地面前[−4m<x<+4m,z<25m]相机坐标。

可以看出当维度全的时候一般都获得了最好的效果,并且当积累5个scan结果要好一些,作者只做了3和5类似的还可以多做几组。baseline是激光雷达的PP,可以看出激光雷达效果更好一点。随着距离整体的AP还是下降的。
对于cyclist来说,所有的有RCS属性的效果都是最好的,车轮和踏板的圆周运动,再加上靠近中心的高反射性金属框架,产生了一个清晰和独特的反射模式,雷达可以更可靠地探测到。

错误检测的例子: (a)合并小对象(两个行人作为一个骑自行车,(b)大的对象分成小的(一个骑自行车是两个行人),(c)强烈的反射和杂乱附近(金属极和高限制)和(d)遥远的物体反射太少(遥远的行人)。
数据集:

原文:Raw High-Definition Radar for Multi-Task Learning
数据集获取方式:GitHub - valeoai/RADIal
下载方式为Google Drive:(提醒:数据集较大包含持续时间为1到4分钟的91个片段,共2小时。)https://drive.google.com/drive/folders/1vCis5mvO5qg7QlM69MqJ3Ni-gFunm5uz?usp=sharing
该数据集时法雷奥公司做的(他们还做过WoodScape数据集)。
提出了一个模型FFT-RadNet,以及两个小时长度的原始数据集(raw,camera、laser、HD radar)RADIal for “Radar, LiDAR et al。

可以看出该数据集的特色是保留了原始的数据,不同的处理方法后的结果都有。.RADIal是唯一提供高清雷达的数据集,结合相机,激光雷达和测程,同时提出检测和自由空间分割任务的数据集。
数据集中分类:

设备信息:

原文:TJ4DRadSet: A 4D Radar Dataset for Autonomous Driving
与本文强相关的文章为(建议一块阅读):3D Object Detection for Multi-frame 4D Automotive Millimeter-wave Radar Point Cloud
(更新---已公开,需要签署保密协议)获取链接:GitHub - TJRadarLab/TJ4DRadSet: TJ4DRadSet: A 4D Radar Dataset for Autonomous Driving
文章的工作主要是使用了Oculii的4D雷达,制作了一个数据集,通过其他文章可以看出该课题组依照这个数据集发表了几篇延伸性的文章。

TJ4DRadSet共包含40K帧的同步数据,其中7757帧,44个序列具有高质量注释的3D边界框和跟踪id。三维标注系统采用联合多传感器标注和多轮手动检查标注。
平台如下:激光雷达(通过参数对比及图片可以确定为Velodyne-32C激光雷达)、4D雷达(Oculii Eagle)以及一个计算平台,有使用惯导并且配有RTK。


然后使用PointPillars作为Baseline测试了一下,结果:


原文:RadarScenes: A Real-World Radar Point CloudData Set for Automotive Application
获取链接:RadarScenes - RadarScenes

正如其名称,由多个场景构成。它由11个对象类别、5个大型主要类别和总共7000多道路参与者组成,100公里的不同街道场景上被手动标记组成。粗略的为:汽车、大型车辆、两轮车、行人组和行人五个类别。不同的场景列结合了诸如天气条件、交通密度或道路类别(高速公路、郊区、市中心)等因素,并且列的序列数据表明是否有时间相干序列可用。
传感器配置:4个77GHz的雷达:

标注了11个类别car, large vehicle, truck, bus, train, bicycle, motorized two-wheeler, pedestrian, pedestrian group, animal, and other


数据集的分布:

总的来说数据集还是比较缺乏的,特别是高质量的数据集,上述四个数据集从不同角度做出了其贡献,在使用数据集的同时分析数据集采集的科学性、以及底层原理的科学性也尤为重要。后续如果有相应更新也会更新到文章中。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf