Главная страница
Навигация по странице:

  • Последовательность выполнения работы

  • Пример устойчивого ШаБота

  • Создание простого робота в среде CoppeliaSim. Лаб_444_КУМО_. Лабораторная работа Создание простого робота в среде CoppeliaSim


    Скачать 7.57 Mb.
    НазваниеЛабораторная работа Создание простого робота в среде CoppeliaSim
    АнкорСоздание простого робота в среде CoppeliaSim
    Дата25.01.2022
    Размер7.57 Mb.
    Формат файлаdoc
    Имя файлаЛаб_444_КУМО_.doc
    ТипЛабораторная работа
    #341689

    Лабораторная работа
    Создание простого робота в среде CoppeliaSim
    Задание № 1

    Попробуем спроектировать простого мобильного робота ШаБота, используя возможности программы V-REP.

    ШаБот – это сокращение от двух слов – «робот» и «шар», так как наш робот будет иметь шаровидную форму/
    Последовательность выполнения работы




    Действие

    Пояснения

    1

    Добавляем примитив шар

    диаметром 0.2 к сцене [Add --> Primitive shape --> Sphere, X-size = 0.2]

    и нажимаем .

    Созданный шарик появится в видимом слое 1 по умолчанию и будет подвижным и взаимодействующим, то есть способным реагировать на столкновения с другими предметами (обладающими свойством взаимодействия) при помощи физического движка.

    2

    Если требуется изменить свойства объекта, можно его выделить и нажать на кнопку на панели инструментов «Scene Object Properties», в появившемся окне выбрать «Show dynamic properties dialog» (свойства «Body is respondable» и «Body is dynamic»

    включены).

    Во вкладке «Shape» можно изменить внешний вид шарика.

    3

    Доступ к нему возможен через кнопку

    Calculation module properties

    Потребуется, чтобы тело нашего ШаБота можно было обрабатывать с помощью модулей расчетов (например, minimum distance calculation module).

    4

    Проверьте, что у объекта шар были подключены такие свойства,

    как «Collidable», «Measurable», «Renderable» и «Detectable»

    Кнопка , вкладка «Common». Поставьте галочки, если свойства

    не подключены.


    5

    Открываем окно «Object/item position/orientation» с помощью кнопки (вкладка «Position/Translations»), в поле «Object/item translation & position scaling operations» вводим значение 0.02 для «Along Z(m)» и проверяем, что в поле «Relative to»

    выбрано «World». Кликаем по «Translate selection»

    Все выделенные объекты передвинутся на 2 см вдоль абсолютной оси Z и шарик немного поднимется

    6

    В окне «Scene hierarchy» дважды кликните по названию шарика и дайте ему имя, например, bubbleRob, и нажмите .




    7

    Добавим датчик близости (proximity sensor), чтобы наш ШаБот знал о приближении к препятствиям: [Add --> Proximity sensor --> Cone type].




    8

    «Object/item position/orientation» (вкладка «Orientation/Rotations»), в разделе «Object/item rotation operations» введите 90 в полях «Around Y(m)» и «Around Z(m)», кликните «Rotate selection».

    Далее во вкладке «Position/Translations» в поле «Object/item position» введите 0.1 в поле «X-coord» и 0.12 в поле «Z-coord»

    Датчик близости корректно прикреплен к нашему ШаБоту

    9

    Дважды кликните по значку датчика в окне «Scene hierarchy» и откройте его свойства. Кликните «Show volume parameter», откроется окно «Detection Volume Properties». Введите в поле «Offset» значение 0.005, «Angle» – 30 и «Range» – 0.15.




    10

    Вернитесь к окну свойств сенсора и выберите «Show detection parameters».

    В открывшемся окне уберите галочку (если она стоит) напротив «Don't allow detections if distance smaller than» и закройте окно




    11

    Поменяйте имя сенсора на bubbleRob_sensingNose, дважды кликнув в окне «Scene hierarchy» по значку сенсора




    12

    Выделите значок сенсора и, зажав , значок робота в окне «Scene hierarchy»,

    далее [Edit --> Make last selected object parent].

    Сенсор прикрепится к роботу

    13

    ШаБот будет выглядеть следующим образом



    14

    Создадим отдельную сцену [File --> New scene]. Будем создавать колеса




    15

    Добавьте к сцене объект цилиндр [Add --> Primitive shape --> Cylinder] с параметрами измерений [0.08, 0.08 (автоматически пропишется), 0.02].

    Шару ставим галочку у свойств «Collidable», «Measurable», «Renderable» and «Detectable»

    16

    В окне «Object/item position/orientation» устанавливаем абсолютную позицию в (0.05, 0.1, 0.04) и абсолютную ориентацию

    в (-90,0,0). Мы получили левое колесо и надо переименовать объект в bubbleRob_leftWheel

    Копируем колесо, устанавливаем по абсолютной оси Y значение -0.1 и даем имя bubbleRob_rightWheel.

    17

    Копируем оба колеса, вставляем на первую сцену







    Добавим шарнир (или мотор) к колесам: [Add --> Joint -->Revolute]. Новые объекты появляются всегда в одном месте сцены и нам потребуется перенести мотор к центру колеса: выделяем мотор и левое колесо (с ), заходим в «Position/Translations», секция [Object/item position --> Apply to selection]

    Во вкладке «Orientation/Rotations» секции «Object/item orientation» нажимаем «Apply to selection»

    18

    Переименуйте мотор в bubbleRob_leftMotor




    19

    Откройте свойствамотора (дважды кликнув на значок у мотора в окне «Scene hierarchy»), нажмите кнопку «Show dynamic properties dialog», откроется окно «Joint Dynamic Properties», в нем ставим 2 галочки: «Motor enabled» и «Lock motor when target velocity is zero».

    Аналогично добавляем мотор для правого колеса и проделываем с ним те же процедуры, называем bubbleRob_rightMotor.

    20

    Далее присоединяем левое колесо к левому мотору (выделяем оба объекта, [Edit--> Make last selected object parent]), правое – к правому, и оба мотора – к bubbleRob.





    21





    22

    Запустите моделирование.

    Робот опрокинулся! Почему?

    Потому что мы забыли дать ему третью точку опоры на плоскость. Остановите моделирование.

    23

    В новой сцене добавьте шар (sphere) с диаметром 0.05 и установите ему свойства «Collidable», «Measurable», «Renderable» и «Detectable», далее переименуйте его в bubbleRob_slider.

    Добавим маленькое поддерживающее колесико сзади.

    24

    В окне «Scene Object Properties» нажмите «Show dynamic properties dialog» и в появившемся окне в качестве материала (Material) выберите «noFrictionMaterial»




    25

    Добавляем датчик силы: [Add --> Force sensor]. Переименовываем его в bubbleRob_connection и поднимаем его вверх на 0.05 («Object/item position/orientation», вкладка «object/item position», «Z-coord»).


    Чтобы связать сделанный шарик с роботом

    26

    Закрепляем шарик за датчиком силы (как это делали с колесами и моторами

    Копируем оба объекта и добавляем на основную сцену

    27

    Передвинуть датчик силы на -0.07 по оси X и прикрепить к телу робота




    28

    Запустить моделирование

    Поддерживающий шарик и тело робота постоянно слегка сталкиваются друг с другом и как бы дрожат. Это происходит потому, что оба объекта (bubbleRob_slider и bubbleRob) сталкиваются друг с другом.

    28

    В [Scene Object Properties -> Show dynamic properties] (окно «Dynamics properties») для bubbleRob_slider укажите 00001111 в качестве «local respondable mask» (уберите галочки там, где должны быть 0), а для bubbleRob –11110000.

    Исправить поведение

    29

    Пример устойчивого ШаБота

    30





    31

    Запустить моделирование

    ШаБот почти не движется, ведь его моторы заблокированы

    32

    Исправим нашего робота.

    Выберите 2 колеса и поддерживающий шарик, и в окне «Dynamics properties» кликните 3 раза «M=M*2 (for selection)».
    В итоге масса каждого из выбранных объектов увеличится в 8 раз.

    Стабильность динамических моделей тесно связана с массами и инерцией вовлеченных нестатических объектов. Следует помнить,

    что массы объекта и соединенного с ним мотора или датчика силы не должны отличаться более, чем в 10 раз, иначе сенсор или мотор будут работать некорректно.

    33

    Проделайте те же действия с инерциями этих объектов: «I = I*2 (for selection)».




    34

    Запустить моделирование

    Стабильность достигнута

    35

    Для обоих моторов в окне «Dynamics properties» установите «Target velocity» (скорость) равной 50.

    ШаБот может двигаться вперед и в итоге упадет в пропасть.

    36

    Верните «Target velocity» значение 0 для обоих моторов







    написать администратору сайта