Робот-собака МОРС
  • Общая информация
  • Технические характеристики
  • Комплект поставки
  • Безопасность
  • Быстрый старт
  • Полезные ссылки
  • Обозначения
  • Настройка и обслуживание
    • Джойстик RadioLink T8S
    • Зарядка батареи
    • Выключение робота
    • Подключение к роботу по сети
      • Параметры точки доступа
      • Подключение через SSH
      • Подключение через Remote Desktop Protocol (RDP)
      • Подключение через SFTP
      • Настройка VSCode
    • Подключение робота к Интернету
    • Подключение к ROS на роботе
    • Установка ПО
    • Графический интерфейс
    • Ubuntu-сервис
    • Смена пароля пользователя
    • Обновление дампа памяти BLDC драйвера 10А
    • Замена приводного ремня
    • Переинициализация приводов
    • Подключение дополнительных устройств
      • Подключение головы VBRoboHead
      • Подключение видеокамеры Intel Realsense D435i
      • Подключение видеокамеры Luxonis OAK-D Lite
      • Подключение лидара RPLIDAR A1M8-R5
    • Обновление управляющего ПО
    • Возврат к заводским настройкам
    • Устранение неполадок
  • Симуляция
    • Описание имитационной модели
    • Параметры файла bringup_sim.launch
    • Подключение джойстиков к ПК
    • ROS-параметры
    • OpenAI Gymnasium
  • Устройство робота
    • Электроника
    • Программное обеспечение
    • Файлы и папки в системе
    • Советы по разработке собственного ПО
    • Примеры
    • ROS-пакеты
      • mors_hardware
        • bhi360_imu_node
        • ds4_teleop
        • power_bridge
        • radiolink_teleop
        • status_tracker
      • mors_base
        • champ_msgs
        • cmd_commutator
        • joy_converter
        • locomotion_controller
        • log_writer
        • mors
        • servo_state_lcm2ros
        • servo_cmd_ros2lcm
      • mors_pc
        • robogui
        • mors_sim
    • ROS-топики
    • ROS-сервисы
      • robot_mode
      • robot_action
      • stride_height
      • joints_kp
      • joints_kd
    • LCM-каналы
Powered by GitBook
On this page
  1. Симуляция

OpenAI Gymnasium

PreviousROS-параметрыNextЭлектроника

Last updated 8 months ago

Модель робота МОРС, созданная в Pybullet, соответствует стандарту . Python-модули, совместимые с этим стандартом удобно использовать для методов обучения с подкреплнием. Более того, этот стандарт поддерживается большим количеством RL-библиотек, таких как StableBaselines3, CleanRL и RLlib.

Файл с классом для работы с OpenAi Gymnasium находится по адресу:

Пример кода для работы с моделью:

from mors_gym_env import MorsBulletEnv
from stable_baselines3.common.env_checker import check_env
import numpy as np

t = 0.0
dt = 1.0/240.0
environment = MorsBulletEnv(urdf_root="./urdf",
                                    world="empty",
                                    sim_freq=240,
                                    hard_reset=True,
                                    render=True,
                                    on_rack=False,
                                    self_collision_enabled=False,
                                    max_timesteps = np.inf,
                                    debug_mode = False,
                                    floating_camera=False,
                                    step_enabled=True,

                                    accurate_motor_model_enabled=False,
                                    simple_motor_model_enabled=False,
                                    torque_control_enabled=False,
                                    motor_kp=0,
                                    motor_kd=0,
                                    motor_velocity_limit=np.inf,
                                    
                                    action_repeat=1,
                                    rew_scale = 1,
                                    distance_limit=float("inf"),
                                    observation_noise_stdev=0.0,
                                    normalization = True,

                                    ext_disturbance_enabled = False,
                                    lidar_enabled=False,
                                    camera_enabled = False
                                    )

environment.reset()

for i in range(1000):
    ref_angle = np.sin(t) * 0.7
    action = [ref_angle]*12
    observation, _, _, _, _ = environment.step(action)

    t += dt
environment.close()

Аргументы конструктора класса MorsBulletEnv

  • urdf_root - папка, где лежит urdf-файл робота

  • sim_freq - с какой частотой производится симуляция

  • hard_reset - если True, то при выполнении функции reset() сбрасывается всё, включая urdf. Если false, то сбрасывается только положение робота. Во время обучения удобнее использовать false, чтобы не тратить лишнее время на загрузку модели.

  • render - отображать симуляцию или нет

  • on_rack - привязать корпус робота к фиксированному положению или дать ему свободно двигаться

  • self_collision_enabled - не дает ногам проходить друг через друга (в настоящий момент работает плохо)

  • debug_mode - вывести на экран различные элементы управления

  • floating_camera - жестко привязать камеру, чтобы она всегда двигалась за роботом, или дать возможность пользователю управлять положением камеры

  • step_enabled - если True, то команды двигателям отправляются через функцию step(). Если false, то команды двигателю надо задавать через функцию set_motor_commands()

  • accurate_motor_model_enabled - включает точную модель двигателей, но замедляет выполнение симуляции (пока отсутствует)

  • simple_motor_model_enabled - включает простую модель двигателей (загрузка симулятора средняя) (пока отсутствует)

  • torque_control_enabled - управлять двигателями по моменту или по углу

  • motor_kp - пропорциональный коэффициент ПД-регулятора двигателя

  • motor_kd - дифференциальный коэффициент ПД-регулятора двигателя

  • motor_velocity_limit - максимальная скорость двигателей

  • max_timesteps - ограничение по выполнению симуляции

  • action_repeat - сколько раз применять action за одно выполнение функции step()

  • rew_scale - коэффициент масштабирования вознаграждения

  • distance_limit - ограничение по расстоянию, куда робот может уйти. Если робот уйдет более дальнее расстояние, то симуляция прекратится.

  • observation_noise_stdev - стандартное отклонение шума наблюдения

  • normalization - если true, то вектор наблюдения нормализуется. Если false, то в векторе наблюдения указываются реальные значения с симулируемых датчиков

  • camera_enabled - если true, то на передней части робота размещается видеокамера

  • lidar_enabled - если true, то на спине робота размещается лидар

  • ext_disturbance_enabled - если true, то на рбота действую постоянные внешние возмущения со случайным интервалом времени, в случайном направлении и случайной прилагаемой силой

world - название окружения. Доустпные на данный момент окружения: empty - плоская поверхность, random1 - случайные неровности, random2 - второй вариант случайных неровностей, gazebo_racetrack_day - окружение из Gazebo

OpenAi Gymnasium
https://github.com/voltdog/mors_pc/blob/main/mors_sim/scripts/mors_sim/mors_gym_env.py
RacetrackWorld