|
@@ -22,6 +22,54 @@ float ComputeDis(cv::Point2f po1, cv::Point2f po2)
|
|
|
return (sqrt(pow((po1.x-po2.x),2) + pow((po1.y-po2.y),2)));
|
|
|
}
|
|
|
|
|
|
+void ObsToNormal(iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array)
|
|
|
+{
|
|
|
+ for(int i = 0; i < lidar_radar_fusion_object_array.obj_size(); i++)
|
|
|
+ {
|
|
|
+// if((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0) &&(lidar_radar_fusion_object_array.obj(i).centroid().y() > 20 || abs(lidar_radar_fusion_object_array.obj(i).centroid().x())>10) ) continue;
|
|
|
+// if ((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0)&&(lidar_radar_fusion_object_array.obj(i).centroid().y()>10 && abs(lidar_radar_fusion_object_array.obj(i).centroid().x())<1.3)) continue;
|
|
|
+// if((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0)&&(lidar_radar_fusion_object_array.obj(i).centroid().y() <1.0 && abs(lidar_radar_fusion_object_array.obj(i).centroid().x())<1.3)) continue;
|
|
|
+
|
|
|
+ if((lidar_radar_fusion_object_array.obj(i).dimensions().x()>0)&&
|
|
|
+ (lidar_radar_fusion_object_array.obj(i).dimensions().y()>0))
|
|
|
+ {
|
|
|
+ int xp = (int)((lidar_radar_fusion_object_array.obj(i).dimensions().x()/0.2)/2.0);
|
|
|
+ if(xp == 0)xp=1;
|
|
|
+ int yp = (int)((lidar_radar_fusion_object_array.obj(i).dimensions().y()/0.2)/2.0);
|
|
|
+ if(yp == 0)yp=1;
|
|
|
+ int ix,iy;
|
|
|
+ for(ix = 0; ix<(xp*2); ix++)
|
|
|
+ {
|
|
|
+ for(iy = 0; iy<(yp*2); iy++)
|
|
|
+ {
|
|
|
+ iv::fusion::NomalXYZ nomal_centroid;
|
|
|
+ iv::fusion::NomalXYZ *nomal_centroid_;
|
|
|
+ float nomal_x = ix*0.2 - xp*0.2;
|
|
|
+ float nomal_y = iy*0.2 - yp*0.2;
|
|
|
+ float nomal_z = 1.0;
|
|
|
+ float s = nomal_x*cos(lidar_radar_fusion_object_array.obj(i).yaw())
|
|
|
+ - nomal_y*sin(lidar_radar_fusion_object_array.obj(i).yaw());
|
|
|
+ float t = nomal_x*sin(lidar_radar_fusion_object_array.obj(i).yaw())
|
|
|
+ + nomal_y*cos(lidar_radar_fusion_object_array.obj(i).yaw());
|
|
|
+ nomal_centroid.set_nomal_x(lidar_radar_fusion_object_array.obj(i).centroid().x() + s);
|
|
|
+ nomal_centroid.set_nomal_y(lidar_radar_fusion_object_array.obj(i).centroid().y() + t);
|
|
|
+ if(abs(lidar_radar_fusion_object_array.obj(i).centroid().x() + s) <0.4 &&
|
|
|
+ (lidar_radar_fusion_object_array.obj(i).centroid().y() + t) <0.3 ||
|
|
|
+ (lidar_radar_fusion_object_array.obj(i).centroid().y() + t) <-1.0 ) continue;
|
|
|
+ else{
|
|
|
+ nomal_centroid.set_nomal_x(lidar_radar_fusion_object_array.obj(i).centroid().x() + s);
|
|
|
+ nomal_centroid.set_nomal_y(lidar_radar_fusion_object_array.obj(i).centroid().y() + t);
|
|
|
+ iv::fusion::fusionobject &fusion_obj = (iv::fusion::fusionobject &)lidar_radar_fusion_object_array.obj(i);
|
|
|
+ nomal_centroid_ = fusion_obj.add_nomal_centroid();
|
|
|
+ nomal_centroid_->CopyFrom(nomal_centroid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+}
|
|
|
+
|
|
|
void Get_AssociationMat(iv::lidar::objectarray& lidar_object_arry,iv::radar::radarobjectarray& radar_object_array,
|
|
|
std::vector<match_index>& match_idx,std::vector<int>&radar_idx)
|
|
|
{
|
|
@@ -91,7 +139,7 @@ void Get_AssociationMat(iv::lidar::objectarray& lidar_object_arry,iv::radar::rad
|
|
|
void RLfusion(iv::lidar::objectarray& lidar_object_arr,iv::radar::radarobjectarray& radar_object_array, iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array)
|
|
|
{
|
|
|
// std::cout<< " get fusion begin "<<std::endl;
|
|
|
- lidar_radar_fusion_object_array.Clear();
|
|
|
+// lidar_radar_fusion_object_array.Clear();
|
|
|
std::vector<match_index> match_idx;
|
|
|
std::vector<int> radar_idx;
|
|
|
Get_AssociationMat(lidar_object_arr,radar_object_array,match_idx,radar_idx);
|
|
@@ -208,53 +256,11 @@ void RLfusion(iv::lidar::objectarray& lidar_object_arr,iv::radar::radarobjectarr
|
|
|
iv::fusion::fusionobject *obj = lidar_radar_fusion_object_array.add_obj();
|
|
|
obj->CopyFrom(fusion_obj);
|
|
|
}
|
|
|
-// std::cout<<" fusion end "<<std::endl;
|
|
|
+ ObsToNormal(lidar_radar_fusion_object_array);
|
|
|
+// std::cout<<" fusion end "<<std::endl;
|
|
|
}
|
|
|
|
|
|
-void AddMobileye(iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array, iv::mobileye::mobileye& xobs_info)
|
|
|
-{
|
|
|
- int time_step = 0.3;
|
|
|
-// lidar_radar_fusion_object_array.Clear();
|
|
|
- for(int j = 0; j< xobs_info.xobj_size() ; j++){
|
|
|
- iv::fusion::fusionobject fusion_obj;
|
|
|
- fusion_obj.set_sensor_type(1);
|
|
|
- fusion_obj.set_yaw(0);
|
|
|
- iv::fusion::VelXY vel_relative;
|
|
|
- iv::fusion::VelXY *vel_relative_;
|
|
|
- if(xobs_info.xobj(j).obstype() == iv::mobileye::obs_OBSTYPE::obs_OBSTYPE_PED)
|
|
|
- {
|
|
|
- fusion_obj.set_type(2);
|
|
|
- }else{
|
|
|
- fusion_obj.set_type(1);
|
|
|
- vel_relative.set_x(xobs_info.xobj(j).obs_rel_vel_x() * tan(xobs_info.xobj(j).obsang()));
|
|
|
- vel_relative.set_y(xobs_info.xobj(j).obs_rel_vel_x());
|
|
|
- }
|
|
|
- vel_relative_ = fusion_obj.mutable_vel_relative();
|
|
|
- vel_relative_->CopyFrom(vel_relative);
|
|
|
|
|
|
- iv::fusion::PointXYZ centroid;
|
|
|
- iv::fusion::PointXYZ *centroid_;
|
|
|
- centroid.set_x(-(xobs_info.xobj(j).pos_y()));
|
|
|
- centroid.set_y(xobs_info.xobj(j).pos_x());
|
|
|
- centroid.set_z(1.0);
|
|
|
- centroid_ = fusion_obj.mutable_centroid();
|
|
|
- centroid_->CopyFrom(centroid);
|
|
|
-#ifdef DEBUG_SHOW
|
|
|
-// std::cout<<"mobileye: "<<centroid.x()<<","<<centroid.y()<<","<<centroid.z()<<std::endl;
|
|
|
-#endif
|
|
|
-
|
|
|
- iv::fusion::Dimension dimension;
|
|
|
- iv::fusion::Dimension *dimension_;
|
|
|
- dimension.set_x(xobs_info.xobj(j).obswidth());
|
|
|
- dimension.set_y(2.0);
|
|
|
- dimension.set_z(1.0);
|
|
|
- dimension_ = fusion_obj.mutable_dimensions();
|
|
|
- dimension_->CopyFrom(dimension);
|
|
|
- iv::fusion::fusionobject *obj = lidar_radar_fusion_object_array.add_obj();
|
|
|
- obj->CopyFrom(fusion_obj);
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
|
|
|
void AddRadarBack(iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array, iv::radar::radarobjectarray& radar_info)
|
|
|
{
|
|
@@ -293,53 +299,6 @@ void AddRadarBack(iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void ObsToNormal(iv::fusion::fusionobjectarray& lidar_radar_fusion_object_array)
|
|
|
-{
|
|
|
- for(int i = 0; i < lidar_radar_fusion_object_array.obj_size(); i++)
|
|
|
- {
|
|
|
-// if((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0) &&(lidar_radar_fusion_object_array.obj(i).centroid().y() > 20 || abs(lidar_radar_fusion_object_array.obj(i).centroid().x())>10) ) continue;
|
|
|
-// if ((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0)&&(lidar_radar_fusion_object_array.obj(i).centroid().y()>10 && abs(lidar_radar_fusion_object_array.obj(i).centroid().x())<1.3)) continue;
|
|
|
- if((lidar_radar_fusion_object_array.obj(i).sensor_type() == 0)&&(lidar_radar_fusion_object_array.obj(i).centroid().y() <1.0 && abs(lidar_radar_fusion_object_array.obj(i).centroid().x())<1.3)) continue;
|
|
|
-
|
|
|
- if((lidar_radar_fusion_object_array.obj(i).dimensions().x()>0)&&
|
|
|
- (lidar_radar_fusion_object_array.obj(i).dimensions().y()>0))
|
|
|
- {
|
|
|
- int xp = (int)((lidar_radar_fusion_object_array.obj(i).dimensions().x()/0.2)/2.0);
|
|
|
- if(xp == 0)xp=1;
|
|
|
- int yp = (int)((lidar_radar_fusion_object_array.obj(i).dimensions().y()/0.2)/2.0);
|
|
|
- if(yp == 0)yp=1;
|
|
|
- int ix,iy;
|
|
|
- for(ix = 0; ix<(xp*2); ix++)
|
|
|
- {
|
|
|
- for(iy = 0; iy<(yp*2); iy++)
|
|
|
- {
|
|
|
- iv::fusion::NomalXYZ nomal_centroid;
|
|
|
- iv::fusion::NomalXYZ *nomal_centroid_;
|
|
|
- float nomal_x = ix*0.2 - xp*0.2;
|
|
|
- float nomal_y = iy*0.2 - yp*0.2;
|
|
|
- float nomal_z = 1.0;
|
|
|
- float s = nomal_x*cos(lidar_radar_fusion_object_array.obj(i).yaw())
|
|
|
- - nomal_y*sin(lidar_radar_fusion_object_array.obj(i).yaw());
|
|
|
- float t = nomal_x*sin(lidar_radar_fusion_object_array.obj(i).yaw())
|
|
|
- + nomal_y*cos(lidar_radar_fusion_object_array.obj(i).yaw());
|
|
|
- nomal_centroid.set_nomal_x(lidar_radar_fusion_object_array.obj(i).centroid().x() + s);
|
|
|
- nomal_centroid.set_nomal_y(lidar_radar_fusion_object_array.obj(i).centroid().y() + t);
|
|
|
- if(abs(lidar_radar_fusion_object_array.obj(i).centroid().x() + s) <1.3 &&
|
|
|
- (lidar_radar_fusion_object_array.obj(i).centroid().y() + t) <1.0 ||
|
|
|
- (lidar_radar_fusion_object_array.obj(i).centroid().y() + t) <-1.0 ) continue;
|
|
|
- else{
|
|
|
- nomal_centroid.set_nomal_x(lidar_radar_fusion_object_array.obj(i).centroid().x() + s);
|
|
|
- nomal_centroid.set_nomal_y(lidar_radar_fusion_object_array.obj(i).centroid().y() + t);
|
|
|
- iv::fusion::fusionobject &fusion_obj = (iv::fusion::fusionobject &)lidar_radar_fusion_object_array.obj(i);
|
|
|
- nomal_centroid_ = fusion_obj.add_nomal_centroid();
|
|
|
- nomal_centroid_->CopyFrom(nomal_centroid);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
-}
|
|
|
|
|
|
}
|
|
|
}
|