Robot8 » 16 апр 2019, 21:34
Напишу на компьютере, потом здесь напишу.
Добавлено спустя 2 часа 2 минуты 22 секунды:
Алгоритм основан на аналитической геометрии. Алгоритм этот предназначен для взятия предмета с 2 манипуляторами. При взятии одним манипулятором алгоритм думаю будет легче.
О предмете, который мы должны взять у нас должна быть информация о 3-мерных координатах его точек поверхности.
Файл формата stl подходит для этого.
Потом с помощью какой-нибудь программы определяем центр тяжести.
В формате stl все поверхности разбиты на треугольники.У каждого треугольника по 3 вершины.
Потом задаем максимальное расстояние между манипуляторами робота при взятии объекта Sm. Задаем максимальное расстояние которое может быть от центра тяжести до ближайшей точки манипулятора при взятии предмета Stm. Задаем максимальную толщину обхвата пальцами манипулятора части объекта h. Задаем максимальную ширину обхвата пальцами манипулятора H. Задаем максимальную глубину обхвата пальцам части объекта L. Определяем точки поверхностей которые входят в сферическую область A с центром в центре тяжести (x-xt)^2+(y-yt)^2+(z-zt)^2<=(Sm+Stm)^2 .Примем, что сила тяжести направлена в отрицательную сторону y, вниз.
Из области точек A находим точки поверхностей треугольников у которых направление нормали не сильно отличается от направления силы тяжести. Это точки из области B. От этих точек находим треугольные поверхности на расстоянии не больше L по горизонту у которых точки не ниже точек B. Это точки области C.
Находим точки треугольников из области A, которые расположены выше точек области B не дальше расстояния h и по горизонтальной плоскости не дальше H. И у которых нормали не сильно отличаются от направления y. Это точки из области D. На расстоянии L от них по горизонту не должно быть выше точек треугольников.
Находим точки из области A, которые расположены от точек B не дальше L, не ниже точек B и не выше h и у которых нормали почти перпендикулярны оси y. Это точки области E.
Точки области B, C, D, E образуют места обхвата пальцами части объекта. Это точки области F.
Определяем первое место обхвата F1. Для второго манипулятора область F2 расположена на расстоянии Sm и нормали точек E2 не сильно отличаются от нормалей точек E1. Находим все возможные места обхвата предмета. Если учесть что роботу надо свободное место для манипуляторов и для него самого, то таких областей становится еще меньше.
Потом с помощью расчетов МКЭ находим из этих областей области за которые лучше всего взять.