You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

239 lines
6.6 KiB
JavaScript

// size is the dimension of the object in x/y/z axis, with unit meter.
class ObjectCategory {
obj_type_map = {
Car: {
color: "#86af49",
size: [4.5, 1.8, 1.5],
attr: ["door open", "trunk open"],
},
Pedestrian: {
color: "#ff0000",
size: [0.4, 0.5, 1.7],
attr: ["umbrella", "sitting", "squating", "bending over", "luggage"],
},
Van: {
color: "#00ff00",
size: [4.5, 1.8, 1.5],
attr: ["door open", "trunk open"],
},
Bus: { color: "#ffff00", size: [13, 3, 3.5] },
Truck: { color: "#00ffff", size: [10, 2.8, 3] },
ScooterRider: {
color: "#ff8800",
size: [1.6, 0.6, 1.6],
attr: ["umbrella", "1 passenger", "2 passengers", "3 passengers"],
},
Scooter: { color: "#aaaa00", size: [1.6, 0.6, 1.0] },
BicycleRider: {
color: "#88ff00",
size: [1.6, 0.6, 1.7],
attr: ["umbrella", "1 passenger", "2 passengers", "3 passengers"],
},
Bicycle: { color: "#ff8800", size: [1.6, 0.6, 1.2], attr: ["laying down"] },
Motorcycle: { color: "#aaaa00", size: [1.6, 0.6, 1.2], attr: ["umbrella"] },
MotorcyleRider: {
color: "#ff8800",
size: [1.6, 0.6, 1.6],
attr: ["umbrella", "1 passenger", "2 passengers", "3 passengers"],
},
PoliceCar: { color: "#86af49", size: [4.5, 1.8, 1.5] },
TourCar: { color: "#86af49", size: [4.4, 1.5, 2.2] },
RoadWorker: { color: "#ff0000", size: [0.4, 0.5, 1.7] },
Child: { color: "#ff0000", size: [0.4, 0.5, 1.2] },
//Crowd: {color: '#ff0000', size:[1.6, 0.6, 1.2]},
BabyCart: { color: "#ff0000", size: [0.8, 0.5, 1.0] },
Cart: { color: "#ff0000", size: [0.8, 0.5, 1.0] },
Cone: { color: "#ff0000", size: [0.3, 0.3, 0.6] },
FireHydrant: { color: "#ff0000", size: [0.4, 0.4, 0.6] },
SaftyTriangle: { color: "#ff0000", size: [0.3, 0.4, 0.4] },
PlatformCart: { color: "#ff0000", size: [1.2, 0.8, 1.0] },
ConstructionCart: { color: "#ff0000", size: [1.2, 0.8, 1.0] },
RoadBarrel: { color: "#ff0000", size: [0.5, 0.5, 0.6] },
TrafficBarrier: { color: "#ff0000", size: [1.5, 0.3, 1.2] },
LongVehicle: { color: "#ff0000", size: [16, 3, 3] },
BicycleGroup: { color: "#ff0000", size: [1.6, 0.6, 1.2] },
ConcreteTruck: { color: "#00ffff", size: [10, 2.8, 3] },
Tram: { color: "#00ffff", size: [10, 2.8, 3] },
Excavator: { color: "#00ffff", size: [6, 3, 3] },
Animal: { color: "#00aaff", size: [1.6, 0.6, 1.2] },
TrashCan: { color: "#00aaff", size: [0.6, 0.4, 1.0] },
ForkLift: { color: "#00aaff", size: [5.0, 1.2, 2.0] },
Trimotorcycle: { color: "#00aaff", size: [2.6, 1.0, 1.6] },
FreightTricycle: { color: "#00aaff", size: [2.6, 1.0, 1.6] },
Crane: { color: "#00aaff", size: [5.0, 1.2, 2.0] },
RoadRoller: { color: "#00aaff", size: [2.7, 1.5, 2.0] },
Bulldozer: { color: "#00aaff", size: [3.0, 2.0, 2.0] },
DontCare: { color: "#00ff88", size: [4, 4, 3] },
Misc: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown1: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown2: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown3: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown4: { color: "#008888", size: [4.5, 1.8, 1.5] },
Unknown5: { color: "#008888", size: [4.5, 1.8, 1.5] },
};
constructor() {}
popularCategories = [
"Car",
"Pedestrian",
"Van",
"Bus",
"Truck",
"Scooter",
"ScooterRider",
"Bicycle",
"BicycleRider",
];
guess_obj_type_by_dimension(scale) {
var max_score = 0;
var max_name = 0;
this.popularCategories.forEach((i) => {
var o = this.obj_type_map[i];
var scorex = o.size[0] / scale.x;
var scorey = o.size[1] / scale.y;
var scorez = o.size[2] / scale.z;
if (scorex > 1) scorex = 1 / scorex;
if (scorey > 1) scorey = 1 / scorey;
if (scorez > 1) scorez = 1 / scorez;
if (scorex + scorey + scorez > max_score) {
max_score = scorex + scorey + scorez;
max_name = i;
}
});
console.log("guess type", max_name);
return max_name;
}
global_color_idx = 0;
get_color_by_id(id) {
let idx = parseInt(id);
if (!idx) {
idx = this.global_color_idx;
this.global_color_idx += 1;
}
idx %= 33;
idx = (idx * 19) % 33;
return {
x: (idx * 8) / 256.0,
y: 1 - (idx * 8) / 256.0,
z: idx < 16 ? (idx * 2 * 8) / 256.0 : ((32 - idx) * 2 * 8) / 256.0,
};
}
get_color_by_category(category) {
let target_color_hex = parseInt(
"0x" + this.get_obj_cfg_by_type(category).color.slice(1)
);
return {
x: target_color_hex / 256 / 256 / 255.0,
y: ((target_color_hex / 256) % 256) / 255.0,
z: (target_color_hex % 256) / 255.0,
};
}
get_obj_cfg_by_type(name) {
if (this.obj_type_map[name]) {
return this.obj_type_map[name];
} else {
return this.obj_type_map["Unknown"];
}
}
// name_array = []
// build_name_array(){
// for (var n in this.obj_type_map){
// name_array.push(n);
// }
// }
// get_next_obj_type_name(name){
// if (name_array.length == 0) {
// build_name_array();
// }
// var idx = name_array.findIndex(function(n){return n==name;})
// idx+=1;
// idx %= name_array.length;
// return name_array[idx];
// }
}
const categoryZh = {
Car: "车",
Pedestrian: "行人",
Van: "厢式货车",
Bus: "公交车",
Truck: "卡车",
ScooterRider: "滑板车骑行者",
Scooter: "滑板车",
BicycleRider: "自行车骑行者",
Bicycle: "自行车",
Motorcycle: "摩托车",
MotorcyleRider: "摩托车骑行者",
PoliceCar: "警车",
TourCar: "旅游车",
RoadWorker: "道路施工人员",
Child: "儿童",
BabyCart: "婴儿车",
Cart: "手推车",
Cone: "路锥",
FireHydrant: "消防栓",
SaftyTriangle: "安全三角架",
PlatformCart: "平板车",
ConstructionCart: "工程车",
RoadBarrel: "路障桶",
TrafficBarrier: "交通护栏",
LongVehicle: "长车",
BicycleGroup: "自行车群",
ConcreteTruck: "混凝土搅拌车",
Tram: "有轨电车",
Excavator: "挖掘机",
Animal: "动物",
TrashCan: "垃圾桶",
ForkLift: "叉车",
Trimotorcycle: "三轮摩托车",
FreightTricycle: "货运三轮车",
Crane: "起重机",
RoadRoller: "压路机",
Bulldozer: "推土机",
DontCare: "不关心目标",
Misc: "其他",
Unknown: "未知",
Unknown1: "未知1",
Unknown2: "未知2",
Unknown3: "未知3",
Unknown4: "未知4",
Unknown5: "未知5"
};
let globalObjectCategory = new ObjectCategory();
export { globalObjectCategory, categoryZh };