Жесткое преобразование PCL с использованием IterativeClosestPoint - Ошибка: итератор стирания вектора вне диапазона - PullRequest
2 голосов
/ 06 марта 2012

В настоящее время я пытаюсь вычислить жесткое преобразование между двумя наборами точек, поэтому я попытался использовать код, приведенный в руководстве на pointclouds.org:

http://www.pointclouds.org/documentation/tutorials/iterative_closest_point.php#iterative-closest-point

Для моего случая я изменил только часть, где данные генерируются случайным образом, на то, что загружает данные точек, которые я хочу проанализировать. Все остальное точно так же, как в учебнике ... (Я также попытался протестировать именно учебный код со случайными данными, на случай, если у меня что-то не так с чтением моих входных данных)

Поскольку я работаю с Qt, я интегрировал библиотеку PCL, библиотеку Eigen и библиотеку FLANN в свой проект. Он находит все заголовки и успешно компилируется с MSVC 2008 ...

К сожалению, я всегда получаю ошибку во время выполнения на

icp.setInputTarget(cloud_out);

говоря:

Не удалось отладить утверждение! Программа: ... MSVC2008 _Qt_SDK_Release \ release \ Project.exe Файл: c: \ Program Файлы \ Microsoft VIsual Studio 10.0 \ CV \ include \ vector Строка: 1200

Выражение: итератор стирания вектора вне диапазона

[..] ... проверить документацию ... [..]

Кто-нибудь знает, что это значит? Входные облака имеют одинаковый размер и заполненные значения.

Буду благодарен за любую помощь!

ОБНОВЛЕНИЕ 1:

В сообщении об ошибке указывается путь к файлу MSVC 2010 (10.0) ... Поэтому я попытался удалить Visual Studio 2010, поскольку он мне не нужен. Но все же, если я компилирую в режиме отладки, он показывает мне сообщение об ошибке, но вместо Expression: vector iterators incompatible ... Если я сейчас запускаю его в режиме выпуска, он просто падает во время выполнения (в той же строке), но не ' показать это сообщение об ошибке.

1 Ответ

0 голосов
/ 07 марта 2012

Кажется, это проблема с используемой вами библиотекой. Предполагая, что вы выполнили чистую сборку, проверили переменную PATH и все, и что Visual Studio 2010 удален, это может быть проблемой с самой библиотекой. Вы используете правильный?

В текущем Qt SDK есть MSVC2008, так что, думаю, он берет все, где ему нужно. Но либо компилятор в Qt, либо одна из используемых вами библиотек, возможно, захотят версию 2010 года ...

Надеюсь, это поможет!

...