传感器

本文主要是简述了在使用Carla过程中遇到的关于传感器的一些常见问题。

1、Carla有没有鱼眼摄像头?

答:有,在 Carla的PullRequest中 传了鱼眼传感器。并且在issues和pullrequets中已经形成了比较完整的代码bug修复编译过程,主要是适配UE4.26的代码。

2、Carla有没有鱼眼的语义分割或实例分割传器?

答:可以实现,虽然没注意issues里有没有实现方式。但了解普通RGB和语义分割传感器的知道,这个其实是后处理材质的功劳。

3、为什么一个Carla多个摄像头显卡还是利用率很低?

答:小编分析这个是多个SceneCapture其实是轮流进入渲染队列的。在底层RHI(渲染硬件接口)线程并不能并行执行渲染任务。这个问题应该限制在UE侧。

4、Carla什么时候迁移UE5?

答:现在Carla Github中已有UE5.x的版本。小编认为UE5的渲染效果并不能解决渲染不真的问题,也不能解决渲染性能的问题。当然,“有更好的用更好的”的出发点没啥问题。但高渲染画质伴随着高性能消耗的定律是不会变的。

5、传感器Listen的时候,总是卡死,内存爆炸

答:Carla的数据流基于TCP,一般是在listen()调用的Callback函数运行时间较长。Carla服务端在疯狂从Buffer Pool申请新的内存,在网络端堵塞。这个问题通常在单个传感器产生的数据量很大,而且还高频产出的情况下出现,如果是异步模式,那出现频率更高。

解决办法:优化Python脚本,写个异步处理。

6、Carla 传感器出现眩光

答:一般这种情况会先出现显存不够用的Warning,然后就爆炸了。通常使用大显存可以减少这个问题出现的概率。

7、Carla自带的畸变模型怎么用?

答:参考SynthEyes' lens-distortion畸变算法SynthEyes' lens-distortion畸变算法原理 。当然可以去看实现它的后处理材质蓝图PhysicLensDistortion。

8、Carla能不能实现其他畸变模型?

答:会搞后处理材质蓝图,就可以自定义任何畸变模型。

9、实例分割和语义分割区别在哪?

答:与语义分割只关注像素级别的语义标签不同,实例分割还要求对同类但不是同一个物体实例进行区分和分割。实例分割输出的RGB图像:R通道是语义分割的结果,GB通道组成实例分割ID,实例分割ID是虚幻引擎下的UniqueID,并非Carla层的Actor ID。用两个通道是出于位数大小考虑。

语意分割输出的RGB图像:基于Tagger设置的自定义深度决定材质的自发光颜色。 语意分割材质: 相关Issue

实例分割颜色设置相关代码:

FLinearColor ATagger::GetActorLabelColor(const AActor &Actor, const crp::CityObjectLabel &Label)
{  uint32 id = Actor.GetUniqueID();  
   // TODO: Warn if id > 0xffff.
   // Encode label and id like semantic segmentation does  

   // TODO: Steal bits from R channel and maybe A channel?  
   FLinearColor Color(0.0f, 0.0f, 0.0f, 1.0f);  
   Color.R = CastEnum(Label) / 255.0f;  Color.G = ((id & 0x00ff) >> 0) / 255.0f;  
   Color.B = ((id & 0xff00) >> 8) / 255.0f;

   return Color;
}