Как стать автором
Обновить

Комментарии 11

круто! это времяпролётная камера, как Kinect?

Realsense D435 проецирует ИК паттерн и затем 2 камеры используются для стереореконструкции. В итоге такой смешанная технология: проектор и стерео. Работает как вблизи, так и вдали как-то

Отличное начало!
Я немного занимался распознаванием образов. Мне кажется, поиск красного цвета можно сделать проще, HSV преобразование занимает много процессорного времени. Если это возможно в OpenCV, попробуйте на исходном RGB массиве:

Если (RGB.red > порога(=80)) И (RGB.red > RGB.Blue*1.8) то оставляем пиксель

Шумов получается меньше, работы CPU тоже поменьше. Поиграться с порогом и коэффициентами можно для круглости. но алгоритм находит центр и так хорошо.
image

То что вы проделали называется Hand-to-eye calibration. Существует множество способов его сделать, и ваш кажется не очень то уж и точный.
Можно использовать какой-нибудь объект, в котором легко посч

Упс… случайно кнопку нажал…
Раз уж вы используете 3д камеру, то я бы на вашем месте сразу использовал объект у которого можно найти 3D Pose напрямую. Например кирпич известных размеров.
Робот, тоже ( в теории) должен выдавать 3D Pose для гриппера/руки. Пусть даже если меняться будут только 4 степени свободы. Таким образом можно получить пары соответствующих поз/трансформов для камеры и руки, и уже классическими методами найти решение. Там будет задача вида AX=XB, которая не очень то линейная, но решить можно.

В вашем же случае вы решаете крайне нелинейную и сложную задачу по поиску трансформа (6 DoF) используя только точечные изменения (3 DoF). Я думаю что и аффинное преобразование вы используете только потому что не смогли найти настоящий трансформ удовлетворительного качества. Короче читайте, дерзайте и у вас все получится.
В свое время я сумел скалибровать промышленный робот с repeatability accuracy меньше миллиметра и absolute accuracy около пяти. Но там ошибки всей связки подсчитывалось: ошибки самого робота + ошибки hand2eye + ошибки tool calibration.
Кстати вопрос как измерять погрешности для роботов сам по себе является не тривиальным. И просто так на глаз утверждать точность не представляется возможным

Вы перепутали задачу. hand-to-eye: где действительно AX=XB (сравните со второй картинкой в статье)

Это не наш случай. Камера смонтирована не на руке, а стационарна.

Мы в свое время решали случай с 3D сканером на роборуке UR, точность (не повторяемость) получилась около 0.5мм. Благо сканер (Artec Spider) был прецизионный и позволял. Там действительно математика поинтересней.

В случае, описанном в статье, есть лишь R,T системы отсчета робота в СО камеры и больше никакой хитрости. Аффинные преобразования были нужны, т.к. оказалось, что параметры камеры realsense не точно соответствовали реальности, а отдельная ее калибровка — лишний шаг. D435 дает точность карты глубин около 5мм в диапазоне от 0.5м до 1м. Именно с такой точностью калибровка в итоге и получилась.
Можно было бы пролистать страницу результатов гугл-поиска чуть дальше. Такие конфигурации как у вас тоже вполне обыденная ситуация для Hand-Eye Calibration.

Что-ж, я не ругаю за афинное преобразование (подумаешь, 12 степеней свободы, когда их должно быть только 6 :). Если оно позволяет решать ваши задачи — это прекрасно. Пусть и не совсем правильно с точки зрения физики. Просто ваше утверждение об универсальности вашего подхода для всех роботов и камер слишком уж… хм… наивно.

Кстати говоря, вы не пробовали добавить и/или удалить одно-два измерения и пересчитать матрицу? Далеко убегает решение? В пределах обозначенной точности хотя бы?

Кстати на счет точности. Один пиксел может и дает большую ошибку, но когда будете фиттить какую-либо поверхность, тот же шар к примеру, точность может многократно возрасти за счет усреднения ошибок.
И все же это не случай «AX=XB». Но, конечно, да. Универсальных решений не бывает.

нет, удалять измерения не пробовали. У нас валидационный набор измерений есть — не вижу повода не доверять оценки точности с точки зрения устойчивости этого решения по математике. А по физике — да, там выше погрешность, чем оценка в 2-3мм по этой валидационной, т.к. есть еще погрешность 3D сканера и метода измерения центра шарика. Но не драматично сейчас — мы же используем дальше для pick&place и там преркасно видна точность. Можно прямо с линейкой измерять и записывать. Выходит разброс «попаданий» около 5мм, что соответствует заявленной точности 3D сканера.

Изначально и делали через оценку центра шара используя все точки, принадлежащие ему. но там другая проблема на самом деле для этого 3D сканера. Есть очень небольшая «нормальная» область шара, где сканер дает адекватные показания. Чем ближе к краю шара, тем серьезной ошибка. В пределе для realsense D435 шар диаметра 2.5см выглядит как диск в 3D…

Зарегистрируйтесь на Хабре, чтобы оставить комментарий