FreeCAD Logo FreeCAD 1.0
  • Английский Африкаанс Арабский Белорусский Каталанский Чешский Немецкий Греческий Испанский Испанский Баскский Финский Филиппинский Французский Галисийский Хорватский Венгерский Индонезийский Итальянский Японский Кабильский Корейский Литовский Нидерландский Норвежская букмол Польский Португальский Португальский Румынский Русский Словацкий Словенский Сербский Шведский Турецкий Украинский Валенсианский Вьетнамский Китайский Китайский
  • Возможности
  • Скачать
  • Блог
  • Документация
    Индекс документации Приступая к работе Пользовательская документация Руководство по FreeCAD Документация верстаков Документация по кодированию на Python Документация по коду C++ Уроки Часто задаваемые вопросы Политика конфиденциальности О программе FreeCAD
  • Внести вклад
    Как помочь Sponsor Сообщить об ошибке Сделать запрос Задачи и финансирование Руководство по участию в разработке Руководство для разработчиков Переводы
  • Сообщество
    Кодекс поведения Форум The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Календарь
  • ♥ Donate

Donate

$
Информация о SEPA
Пожалуйста, настройте банковский перевод SEPA:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Банковское агентство: BNP Paribas Fortis
Адрес: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Руководство
Тема
Верстак Робот
Уровень
Средний
Время для завершения
Авторы
FreeCAD версия
Примеры файлов
Смотрите также
None

Верстак Robot в FreeCAD остался без поддержки. Пожалуйста, сообщите на форуме FreeCAD, если Вы заинтересованы в поддержке этого верстака.

Обзор

В этом руководстве рассказывается, как использовать FreeCAD и Верстак Симуляции Робота для моделирования движений 6-осевого серийного робота. Руководство посвящено созданию VRML-файла, используемого в качестве визуализации. Основой VRML-файла является модель FreeCAD. Используемая версия FreeCAD - 0.11.4252ppa1 на Ubuntu 32bit.

Открытиеытие файла или создание файла с помощью FreeCAD

Руководство основано на STEP-файле робора Stäubli TX40 (TX40-HB.stp). Вы можете скачать этот файл с сайта Stäubli. Однако, хотя у меня не было времени проверить это, метод должен быть применим и к модели, полностью сделанной в FreeCAD. После открытия файла ты должен получить следующее:

Обрати внимание, что при импорте робот состоит из 8 фигур, расположенных непосредственно в корне дерева документа. Структура экспортируемого VRML-файла может измениться, если используются группы. Элементы расположены в порядке от основания к инструменту. Последний элемент содержит оси вращения всех осей робота. Имя корреляции фигуры - задаётся именем детали (на данный момент (март 2011) FreeCAD не импортирует имена, включённые в STEP-файлы):

FreeCAD имя STEP имя английский STEP имя русский
TX40_HB HORIZONTAL BASE CABLE OUTLET ГОРИЗОНТАЛЬНОЕ ОСНОВАНИЕ КАБЕЛЬНЫЙ ВЫВОД
TX40_HB001 SHOULDER ПЛЕЧО
TX40_HB002 ARM РУКА
TX40_HB003 ELBOW ЛОКОТЬ
TX40_HB004 FOREARM ПРЕДПЛЕЧЬЕ
TX40_HB005 WRIST ЗАПЯСТЬЕ
TX40_HB006 TOOL FLANGE ФЛАНЕЦ ИНСТРУМЕНТА
TX40_HB007 ? ?

Для этого импорта измени "Стиль представления" каждой фигуры, за исключением TX40_HB007, с "Плоские линии" на "Только грани", чтобы экспорт VRML выглядел хорошо. Я также изменил цвета на [245, 196, 0] и [204, 204, 204], чтобы они лучше соответствовали жёлтому цвету Stäubli. Скройте TX40_HB007, потому что он содержит оси всех сочленений и не может быть отсоединён.

Определение геометрических характеристик

Для того чтобы построить таблицу Денавита-Хартенберга (смотри Робот 6-Осевой) и подготовить vrml-файл, необходимо получить характеристики робота. На данный момент инструмент измерения в FreeCAD не готов, вы можете использовать оси, входящие в TX40_HB007 (координаты указываются слева внизу при наведении на объект мышью) или использовать консоль Python для получения некоторой информации о геометрии. Обратите внимание, что DH-таблица нужна только в том случае, если вам нужно использовать обратную кинематику, то есть получить декартовы координаты или управлять роботом с помощью декартовых координат. DH-таблица для этого робота выглядит следующим образом (мм, град и град/с):

i d θ r α θмин θмакс Скорость вращения оси
1 320 q1 0 -90 -180 180 555
2 35 q2 - 90 225 0 -125 125 475
3 0 q3 + 90 0 90 -138 138 585
4 225 q4 0 -90 -270 270 1035
5 0 q5 0 90 -120 133.5 1135
6 65 q6 0 0 -270 270 1575

Затем создаётся csv файл:

a  , alpha, d  , theta, rotDir, maxAngle, minAngle, AxisVelocity
0  ,   -90, 320,     0,      1,      180,     -180, 555
225,     0,  35,   -90,      1,      125,     -125, 475
0  ,    90,   0,    90,      1,      138,     -138, 585
0  ,   -90, 225,     0,      1,      270,     -270, 1035
0  ,    90,   0,     0,      1,    133.5,     -120, 1135
0  ,     0,  65,     0,      1,      270,     -270, 1575

Экспорт в VRML

Экспортируй документ в VRML-файл. Структура VRML-файла выглядит следующим образом:

#VRML V2.0 utf8


Group {
  children 
    Group {
      children [ 
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        },
          
        Group {
        …

        } ]

    }

}

Вы можете заметить, что у нас есть 8 независимых групп, соответствующих 8 элементам.

Подготовка vrml-файла

Все элементы в VRML-файле выражены в базовом кадре, независимо друг от друга. Для Верстака Симуляции Робота нам нужно создать структуру, в которой движение одного элемента вызывает движение всех последующих элементов структуры. Расположение элементов будет относительным по отношению к предыдущему элементу, поэтому нам необходимо включить некоторые преобразования из абсолютной системы отсчета в относительную. Эти переводы описаны на следующем рисунке:

Здесь

A=(0, 0, 168)
B=(0, 107.8, 320)
C=(0, 104.15, 545)
D=(0, 35, 601)
E=(0, 35, 770)
F=(0, 35, 835).

Рассмотрим пример оси 4 между ELBOW - ЛОКТЕМ и FOREARM - ПРЕДПЛЕЧЬЕМ, расположенной в точке D=(xd, yd, zd). Привязкой для оси FreeCAD является

"DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children ["

Это соответствует вращению вокруг оси y. В CAD-модели вращение происходит вокруг оси z. Таким образом, нам нужен поворот вокруг оси x на π перед определением оси FreeCAD и на −π после него. Также перемещение (-xd, -yd, -zd) необходимо непосредственно перед группой, соответствующей определению FOREARM - ПРЕДПЛЕЧЬЯ, чтобы выразить его в относительной системе отсчета с центром в точке D. Это означает, что перемещение (xd, yd, zd) должно быть вставлено перед первым вращением. В итоге VRML-файл от определения ELBOW - ЛОКТЯ до определения FOREARM - ПРЕДПЛЕЧЬЯ выглядит следующим образом:

      # ELBOW
      Group {
        … here comes the unmodified definition of ELBOW
  
      },
        
      Transform {
        translation 0 35 601
        rotation 1 0 0 1.5707963
        children
          DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children
            Transform {
              rotation 1 0 0 -1.5707963
              children
                Transform {
                  translation 0 -35 -601
                  children [
      # FOREARM  
      Group {
        ... here comes the unmodified definition of FOREARM
  
      },

В конце документа необходимо вставить соответствующие закрывающие скобки: ]}}}}, для каждой из 6 осей. В итоге документ выглядит так (не знаю, можно ли давать здесь ссылку на файл из-за авторских прав):

#VRML V2.0 utf8
  
  
Group {
  children
  Group {
    children [ 
      # HORIZONTAL BASE CABLE OUTLET 
      Group {
          ... here comes the unmodified definition of HORIZONTAL BASE CABLE OUTLET
   
      },
        
      Transform {
        translation 0 0 168
        rotation 1 0 0 1.5707963
        children
          DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children
            Transform {
              rotation 1 0 0 -1.5707963
              children
                Transform {
                  translation 0 0 -168
                  children [
      # SHOULDER
      Group {
          ... here comes the unmodified definition of SHOULDER 
  
      },
        
      Transform {
        translation 0 107.8 320
        #rotation 0 0 1 0
        children
          DEF FREECAD_AXIS2 Transform { rotation 0 1 0 0 children
            Transform {
              #rotation 0 0 1 0
              children
                Transform {
                  translation 0 -107.8 -320
                  children [
      # ARM  
      Group {
          ... here comes the unmodified definition of ARM 
  
      },
        
      Transform {
        translation 0 104.15 545
        #rotation 0 0 1 0
        children
          DEF FREECAD_AXIS3 Transform { rotation 0 1 0 0 children
            Transform {
              #rotation 0 0 1 0
              children
                Transform {
                  translation 0 -104.15 -545
                  children [
      # ELBOW
      Group {
          ... here comes the unmodified definition of ELBOW
  
      },
        
      Transform {
        translation 0 35 601
        rotation 1 0 0 1.5707963
        children
          DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children
            Transform {
              rotation 1 0 0 -1.5707963
              children
                Transform {
                  translation 0 -35 -601
                  children [
      # FOREARM  
      Group {
          ... here comes the unmodified definition of FOREARM
  
      },
        
      Transform {
        translation 0 35 770
        #rotation 0 0 1 0
        children
          DEF FREECAD_AXIS5 Transform { rotation 0 1 0 0 children
            Transform {
              #rotation 0 0 1 0
              children
                Transform {
                  translation 0 -35 -770
                  children [
      # WRIST
      Group {
          ... here comes the unmodified definition of WRIST
  
      },
        
      Transform {
        translation 0 35 835
        rotation 1 0 0 1.5707963
        children
          DEF FREECAD_AXIS6 Transform { rotation 0 1 0 0 children
            Transform {
              rotation 1 0 0 -1.5707963
              children
                Transform {
                  translation 0 -35 -835
                  children [
      # TOOL FLANGE
      Group {
          ... here comes the unmodified definition of TOOL FRAME
  
      },
        
      Group {
          ... here comes the unmodified definition of TX40_HB007
  
      } # "]" was deleted from this line
    ]}}}},
    ]}}}},
    ]}}}},
    ]}}}},
    ]}}}},
    ]}}}},
    ] # this is the "]" deleted from the line above
  }
}

Вот исправление для получения VRML-файла, подходящего для моделирования роботов:

7a8
>         # HORIZONTAL BASE CABLE OUTLET 
95968a95970,95981
>         Transform {
>           translation 0 0 168
>           rotation 1 0 0 1.5707963
>           children
>             DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children
>               Transform {
>                 rotation 1 0 0 -1.5707963
>                 children
>                   Transform {
>                     translation 0 0 -168
>                     children [
>         # SHOULDER
128428a128442,128453
>         Transform {
>           translation 0 107.8 320
>           #rotation 0 0 1 0
>           children
>             DEF FREECAD_AXIS2 Transform { rotation 0 1 0 0 children
>               Transform {
>                 #rotation 0 0 1 0
>                 children
>                   Transform {
>                     translation 0 -107.8 -320
>                     children [
>         # ARM  
206503a206529,206540
>         Transform {
>           translation 0 104.15 545
>           #rotation 0 0 1 0
>           children
>             DEF FREECAD_AXIS3 Transform { rotation 0 1 0 0 children
>               Transform {
>                 #rotation 0 0 1 0
>                 children
>                   Transform {
>                     translation 0 -104.15 -545
>                     children [
>         # ELBOW
267111a267149,267160
>         Transform {
>           translation 0 35 601
>           rotation 1 0 0 1.5707963
>           children
>             DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children
>               Transform {
>                 rotation 1 0 0 -1.5707963
>                 children
>                   Transform {
>                     translation 0 -35 -601
>                     children [
>         # FOREARM  
417854a417904,417915
>         Transform {
>           translation 0 35 770
>           #rotation 0 0 1 0
>           children
>             DEF FREECAD_AXIS5 Transform { rotation 0 1 0 0 children
>               Transform {
>                 #rotation 0 0 1 0
>                 children
>                   Transform {
>                     translation 0 -35 -770
>                     children [
>         # WRIST
422053a422115,422126
>         Transform {
>           translation 0 35 835
>           rotation 1 0 0 1.5707963
>           children
>             DEF FREECAD_AXIS6 Transform { rotation 0 1 0 0 children
>               Transform {
>                 rotation 1 0 0 -1.5707963
>                 children
>                   Transform {
>                     translation 0 -35 -835
>                     children [
>         # TOOL FLANGE
435627c435700,435707
<         } ]
---
>         } 
>       ]}}}},
>       ]}}}},
>       ]}}}},
>       ]}}}},
>       ]}}}},
>       ]}}}},
>       ]

Эта страница получена от https://wiki.freecad.org/VRML_Preparation_for_Robot_Simulation

Свяжитесь с нами!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

©Команда FreeCAD. Авторы изображений (сверху вниз): ppemawm, r-frank, epileftric, regis, regis, rider_mortagnais, bejant.

Этот проект поддерживается: , KiCad Services Corp. и другие спонсоры

GitHubУлучшить эту страницу на GitHub