1083
Виграш. Як зробив об'єкт Tod Bot
Гей, Habr! Ось і знову! Ми продовжуємо розвивати проект «Робота Tod Bot». Цей пост є продовженням знайомства з модулем MoveIt як інструмент управління маніпулятором.
Перш за все, я хочу сказати, що вдалося досягти значних результатів у задачі захоплення та переміщення об'єктів через маніпулятор, а також визнання об'єктів, але про все в порядку.
Захоплення об'єкта може бути представлений у вигляді транспортера, що складається з декількох етапів, в яких розраховується повна траєкторія: від початкового положення маніпулятора до прямого підйому об'єкта. Ці розрахунки базуються на наступних даних:
- Планування сцени, що забезпечує інструмент моніторингу сцени Планування
- Визначення об'єкта для захоплення
- Посада захоплення щітки для цього об'єкту
- Посада та орієнтація маніпулятора
- Виявлена ймовірність успішного захоплення цієї пози
- Передчасний маніпуляторний підхід, який визначається як векторний напрямок – мінімальна / небажана відстань підходу
- Маніпулятор відступає після захоплення, який визначається як напрямок вектора - мінімальна відступна відстань
- Максимальна сила зчеплення
Серед отриманого набору можливих поз, ми повинні з'являтися ті пози, які не задовольняють форму нашого зчеплення / руки, а потім перенести залишилися до транспортера для подальшого планування траєкторії досягнення цих поз.
У конвеєрі підняття предмету можна виділити три основні точки:
1- Початкова позиція; 2 - Попереднє налаштування; 3 - Позиція захоплення;
Під час виконання конвеєра до кінцевого плану підйому об'єкта додано індивідуальні траєкторії. Якщо захоплення успішно пройшла всі етапи, то тільки тоді можна виконати план. Алгоритм транспортера в цілому виглядає так:
- Планується траєкторія з початкового положення до точки передпокою. Якщо ви малюємо аналогію з посадкою літака на ходу, то це буде посадковий підхід.
- Всі об'єкти навколишнього середовища спочатку включені в матрицю зіткнення, оскільки ми тут написані. Для того, щоб наше захоплення досягти успіху, контроль зіткнення вимкнено. Після чого затирають відчинки.
- Розраховується траєкторія маніпуляторного підходу до об’єкту з точки зору попередньої зйомки до точки захоплення.
- Замка.
- Захоплений об'єкт все ще з'являється об'єкт зіткнення, тому що він зараз входить до захоплення і враховується при плануванні траєкторії.
- Потім відступна траєкторія генерується з положення захоплення до точки передпокою, щоб відхилити об'єкт з поверхні і зафіксувати результат підйому об'єкта.
У наших експериментах ми вирішили додати ще два ступені свободи до початкових чотирьох ступенів свободи. У відео і фото вони зображені в червоному кольорі. Це пов'язано з тим, що в разі використання хребта у вигляді виделки або антропоморфної щітки, необхідна хороша гнучкість маніпулятора. До речі, якщо ви використовуєте вакуумний сосок як затирка, то все дещо спрощено і 4 градусів свободи може бути достатньо, так як для захоплення використовується тільки одна площина.
По суті, здатність виконувати захоплення значно залежить від генеруючих позицій захоплення: більш і більш різноманітними позиціями будуть створюватися, простіше буде вибрати оптимальне. Незважаючи на те, що все це має flip сторона монети: чим більше позицій, тим більше часу він буде обробляти їх. У нашому випадку ми створили перші 10, 34 позиції, потім 68, потім 136. Найкращий варіант, який підійде нам 34 позицій. З мінімальною кількістю позицій досить важко для маніпулятора потрапити в утворену позу, як правило, маніпулятор просто не може фізично досягнути її: він не здатний перетворювати так, занадто коротким, занадто довго і т.д. На 34, з 2 до 5 позицій, які задовольняють всі умови.
Для цього ми вирішили використовувати ROS Tabletop_object_detector. В університеті Британської Колумбії вже зарекомендували себе вчені. Хоча, на мій погляд, вибір системи повинен залежати безпосередньо від умов, в яких ви маєте намір застосувати визнання і предмети, які ви хочете виявити. У нашому випадку визнання здійснюється за формою об'єктів, а якщо необхідно відрізнити баню огірків від банки томатів, то цей метод не підходить. Для ідентифікації об'єктів використовується глибинна камера, отримана від Kinect.
Перед тим як розпізнати, потрібно спочатку тренувати систему для створення 3D моделі потрібного об'єкта.
3D модель пакета Pringles
Після цього система порівнює отримані дані з моделями, доступні в базі даних.
Результат визнання виглядає так:
Як ви очікуєте, швидкість пошуку об'єктів безпосередньо залежить від потужності машини, на якій обробляються дані. Ми використовуємо ноутбук з сердечником intel 2 duo 1.8ghz і 3Gb оперативної пам'яті. У той же час ідентифікацію об'єктів зайняла близько 1,5-2 секунд.
І звичайно, знаючи, як ізолювати і виявити об'єкти з навколишнього середовища, тепер ви хочете взяти і перемістити їх. Наступним кроком буде об'єднати завдання визнання і управління маніпулятором на реальному роботі.
Джерело: habrahabr.ru/company/tod/blog/224765/
Samsung запускає виробництво першої флеш-пам'яті галузі 3D V-NAND, яка має 32 шари клітин пам'яті
Колишній хобі або як я виконав мій дитинства мрії