ORB-SALM3 鱼眼双目匹配导致CreateNewMapPoints()出现段错误
报错描述
segmentation fault
// LocalMapping.cc
LocalMapping::CreateNewMapPoints(){
// ...
float kp1_ur=mpCurrentKeyFrame->mvuRight[idx1]; // 该处报错 segmentation fault
// ...
原因
mvuRight
访问越界,鱼眼双目匹配过程中mvuRight
长度只给到Nleft
,但在createNewMapPoints
中索引到了N (>Nleft)
,导致越界报错。
修改
mvuRight
是左目提取的有效深度点对应的右图列坐标,只有在行对齐双目下才有有效数值,在鱼眼双目匹配过程中并无有效数值(全置为了-1),因此简单修改方法是将Frame.cc
中鱼眼双目匹配Frame::ComputeHSTStereoFishEyeMatches()
方法中:mvuRight = vector<float>(Nleft,-1)
改为mvuRight = vector<float>(N,-1)
。