Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question regarding running extrinsic_calib #49

Open
SongZhijun opened this issue Dec 21, 2015 · 1 comment
Open

Question regarding running extrinsic_calib #49

SongZhijun opened this issue Dec 21, 2015 · 1 comment

Comments

@SongZhijun
Copy link

There is a problem that has already been bothering me for a long time.

When it runs to m_camOdoCalib.calibrate(H_cam_odo),
if (!m_camOdoTransformUseEstimate)
{
// m_camOdoCalib.writeMotionSegmentsToFile(filename);
Eigen::Matrix4d H_cam_odo;
m_camOdoCalib.calibrate(H_cam_odo);
m_camOdoTransform = H_cam_odo;
}

I always get the error:
F1221 00:53:49.959568 4757 problem_impl.cc:65] Check failed: it != parameter_map.end() Parameter block not found: 0x7f2063ffd7a0
Check failure stack trace:
F1221 00:53:49.959614 4756 problem_impl.cc:65] Check failed: it != parameter_map.end() Parameter block not found: 0x7f2068bae7a0
Check failure stack trace:
@ 0x7f208d6959fd google::LogMessage::Fail()
@ 0x7f208d6959fd google::LogMessage::Fail()
@ 0x7f208d69789d google::LogMessage::SendToLog()
@ 0x7f208d69789d google::LogMessage::SendToLog()
@ 0x7f208d6955ec google::LogMessage::Flush()
@ 0x7f208d6955ec google::LogMessage::Flush()
@ 0x7f208d6981be google::LogMessageFatal::~LogMessageFatal()
@ 0x452280 ceres::internal::ProblemImpl::SetParameterization()
@ 0x7f208d6981be google::LogMessageFatal::~LogMessageFatal()
@ 0x452280 ceres::internal::ProblemImpl::SetParameterization()
@ 0x7f20901d8c1f camodocal::CamOdoCalibration::refineEstimate()
@ 0x7f20901d8c1f camodocal::CamOdoCalibration::refineEstimate()
@ 0x7f20901db84f camodocal::CamOdoCalibration::estimate()
@ 0x7f20901db84f camodocal::CamOdoCalibration::estimate()
@ 0x7f20901dc709 camodocal::CamOdoCalibration::calibrate()
@ 0x7f20901dc709 camodocal::CamOdoCalibration::calibrate()
@ 0x7f20901f231b camodocal::CamOdoThread::threadFunction()
@ 0x7f20901f231b camodocal::CamOdoThread::threadFunction()
@ 0x7f208cba0a4a (unknown)
@ 0x7f208cba0a4a (unknown)
@ 0x7f208d8c1182 start_thread
@ 0x7f208d8c1182 start_thread
@ 0x7f208cea547d (unknown)

I found that the reason seems to be in

    framePrev = frame;
    if (!camValid)
    {
        std::vector<Eigen::Matrix4d, Eigen::aligned_allocator<Eigen::Matrix4d> > voPoses = tracker.getPoses();
        if (odometryPoses.size() >= k_minVOSegmentSize)
        {
            addCamOdoCalibData(voPoses, odometryPoses, tracker.getFrames());
        }

        if (!odometryPoses.empty())
        {
            odometryPoses.erase(odometryPoses.begin(), odometryPoses.begin() + voPoses.size() - 1);
        }
        ++trackBreaks;
    }

I don't quit understand when camValid is true and when it is false. If camValid is always true, it cannot go to addCamOdoCalibData, and the program cannot run down.
Is the File containing estimate for the extrinsic calibration always necessary? If the answer is yes, then what is the format of the file?

I'd be very grateful if you could give me some advice.

@stanathong
Copy link

@SongZhijun

Possibly #30 could help, if you haven't figured out that already.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants