- BrainTools - https://www.braintools.ru -

Airsim умер, да здравствует GRID

Airsim умер, да здравствует GRID - 1

Проблема, с которой часто встречаются разработчики, в том числе и компании, заключается в обучении [1] дронов и роботов. До недавнего времени эту проблему позволяла решить Aerial Informatics and Robotics Platform [2] (AirSim [3]), и данная статья [4] неплохо описывает это решение. Однако в 2023 году компания Microsoft объявила о закрытии [5]данного проекта и сокращении штата, который им занимался.

Но надежда есть, и появилась компания, которая продолжила плодотворные традиции AirSim. Теперь это целая система, и называется она Scaled Foundations [6]. Команда поняла современные тренды и не стала останавливаться на беспилотниках, а начала заниматься практически всеми возможными видами умных помощников, и соответственно моделировать для них среду, максимально приближенную к реальной.

Scaled Foundations предлагает более широкий спектр возможностей, чем AirSim, включая симуляцию различных сред, таких как города, здания и природные ландшафты. Это позволяет разработчикам тестировать и обучать своих роботов и дронов в более реалистичных условиях, что может привести к значительному улучшению их производительности и эффективности.

Кроме того, Scaled Foundations предоставляет разработчикам доступ к большому количеству инструментов и ресурсов, включая библиотеки и фреймворки, которые могут помочь им создать более сложные и реалистичные симуляции. Это может быть особенно полезно для компаний, которые работают над разработкой автономных транспортных средств, дронов и других типов роботов, которые требуют высокого уровня точности и надежности.

В целом, Scaled Foundations представляет собой перспективное решение для разработчиков, которым необходима симуляция и тестирование их роботов и дронов в реалистичной среде. Это развитие является важным шагом на пути к созданию более совершенных и автономных систем, которые могут быть эффективно использованы в различных областях, включая транспорт, логистику, строительство и другие, где точность и надежность имеют первостепенное значение.

Компания предлагает два решения: для идейных(Open Grid [7]) и для платёжоспособных(Grid Enterprice [8]).Разница в том что Open Grid запускается облачно и имеет определённые виды роботов, дронов, локаций, а платная версия позволяет разворачивать локально и кроме того использовать ещё дополнительные функции для более глубокого обучения и интеграции в проект.Как описывает компания бесплатная версия для небольшой команды разработчиков, а Grid Enterprice для стартапов, компаний(что и так понятно из названия)

Рассмотрим функционал Open Grid

Сначала регистрируемся на сайте, не переживайте что долго не приходит подтверждение, это нормально.

Airsim умер, да здравствует GRID - 2

Переходим в главное меню и здесь у нас появляется выбор.

Airsim умер, да здравствует GRID - 3
  • Robot: Здесь вы выбирайте и настраивайте роботизированную платформу.

  • Scene: Выбираете и настраиваете виртуальную среду, максимально приближенную к реальной.Соответственно как вы можете заметить здесь есть примерные тест-кейсы которые позволяют поместить робота в боевую среду.

  • Sensors: Настраивайте параметры камеры, чтобы получить желаемые виды и параметры для моделирования и настройте датчики вашего робота для обнаружения и взаимодействия в данной среде.

  • AI models: Предварительно настройте модели искусственного интеллекта [9], которые будут использоваться в моделировании.

Airsim умер, да здравствует GRID - 4

Перейдём к практике

Заполним нужные параметры и переходим уже в “среду разработки”

  • Инициализируйте среду: Начните с запуска шаблонного кода для инициализации API Airgen и загрузки необходимых весов для модели Grounded SAM.

Airsim умер, да здравствует GRID - 5
  • Управление автомобилем: Используйте API setCarTargetSpeed() (документация CarClient [10]) для перемещения автомобиля вперед, а затем захватите изображения с помощью API getImages(). Следующий блок кода демонстрирует, как расположить автомобиль и захватить изображение.

Airsim умер, да здравствует GRID - 6

Сегментация изображений с помощью Grounded SAM:

  • Сегментация дороги: Примените модель Grounded SAM для сегментирования дороги на только что полученном изображении. Визуализируйте результат с помощью модуля повторного выполнения. Мы выполним приведенный ниже код для сегментирования дороги.

    road = seg_gsam_0.run(image[0][0], "road")

Airsim умер, да здравствует GRID - 7
  • Альтернативный вид камеры: Попробуйте захватить и сегментировать изображение с камеры “back_center”, чтобы посмотреть на ситуацию с другой стороны. Следующий блок кода захватывает изображение с задней камеры.

    image_new = client.getImages("back_center", [0])
    rr.log("Car", rr.Image(image_new[0][0]))

    Airsim умер, да здравствует GRID - 8

Теперь давайте сегментируем изображение, полученное с задней камеры.

car = seg_gsam_0.run(image_new[0][0], "car")

Airsim умер, да здравствует GRID - 9

Навигация по сцене

  • Переместим на определенную позицию: Переместим автомобиль в положение x = -120 метров с помощью следующего кода.

    client.setCarTargetSpeed(5)
    while True:
    if client.simGetVehiclePose().position.x_val <= -120:
    client.setCarTargetSpeed(0)
    break
    print(client.simGetVehiclePose().position)

  • Выполнение поворота влево: Чтобы выполнить левый поворот, установите рулевое управление на 1,0 для резкого поворота, а затем медленно перемещайте автомобиль для завершения маневра.

    controls = client.getCarControls()
    controls.is_manual_gear = False
    controls.steering = 1.0
    client.setCarControls(controls)
    client.setCarTargetSpeed(2.1)
    time.sleep(3)
    client.setCarTargetSpeed(0)

  • Вернитесь к прямолинейному движению: Сбросьте значение рулевого управления до 0,0, чтобы возобновить прямолинейное движение.

    controls.steering = 0.0
    client.setCarControls(controls)
    client.setCarTargetSpeed(2)
    time.sleep(3)
    client.setCarTargetSpeed(0)

Работа с данными LiDAR

  • Создаем объект точек: Используйте API getLidardata() (документация LiDAR [11]) для получения данных LiDAR. В приведенном ниже фрагменте кода показано, как преобразовать исходные данные в список точек с соответствующими преобразованиями координат.

def get_lidar_data(client):
  lidar_data = client.getLidarData()
  if len(lidar_data.point_cloud) < 3:
      print("No points received from Lidar")
  else:
      points = np.array(lidar_data.point_cloud, dtype=np.float32)
      points = np.reshape(points, (int(points.shape[0] / 3), 3))
      points_xyz = np.zeros_like(points)
      points_xyz[:, 0] = points[:, 0]
      points_xyz[:, 1] = points[:, 1]
      points_xyz[:, 2] = -points[:, 2] + 1
      print("Got LiDAR Data")
      return points_xyz
  • Визуализируем: С помощью Matplotlib расставьте данные облака точек LiDAR и сохраните график в виде изображения. Вы можете найти каталог сессии через переменную GRID_USER_SESSION_BLOB_DIR. Ниже показано, как будет выглядеть вкладка хранилища после сохранения данных LiDAR.

%matplotlib inline
import os
from grid import GRID_USER_SESSION_BLOB_DIR
import numpy as np
import matplotlib.pyplot as plt
points = get_lidar_data(client)
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
for point in points:
    ax.scatter(point[0], point[1], point[2])
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
save_path = os.path.join(GRID_USER_SESSION_BLOB_DIR, "pcl.png")
plt.savefig(save_path, bbox_inches='tight')
print("Saved!")
Airsim умер, да здравствует GRID - 10
Сохранённое облако выглядит примерно так.

Сохранённое облако выглядит примерно так.

Бонус! Компания будет проводить мастер класс 17 марта 2025 [12]на котором покажут как разрабатывать реальные решения.Рекомендую!Будет очень полезно если вы только вкатывайтесь.

Подводя итоги

Итак, в данной вводной статье моя задача была показать вам что есть такое мощное и практичное решение которое поможет разработчикам сэкономить время и повысить эффективность работы.На мой взгляд, ключевым преимуществом Scaled Foundations является возможность создания систем, способных функционировать в реальных условиях.Не бойтесь экспериментировать, творить и учиться на ошибках — этот продукт станет вашим надежным помощником на пути к достижению целей!

Спасибо за внимание [13]!

Автор: dmitr3mart

Источник [14]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/12514

URLs in this post:

[1] обучении: http://www.braintools.ru/article/5125

[2] Aerial Informatics and Robotics Platform: https://www.microsoft.com/en-us/research/project/aerial-informatics-robotics-platform/

[3] AirSim: https://github.com/microsoft/AirSim?ysclid=m7funr5oxw309798208

[4] данная статья: https://habr.com/ru/articles/401639/

[5] закрытии : https://mpost.io/ru/microsoft-project-airsim-concludes-as-focus-shifts-to-openai-collaboration/

[6] Scaled Foundations: https://www.scaledfoundations.ai/

[7] Open Grid: https://www.scaledfoundations.ai/product/grid

[8] Grid Enterprice: https://www.scaledfoundations.ai/product/grid-enterprise

[9] интеллекта: http://www.braintools.ru/article/7605

[10] (документация CarClient: https://docs.scaledfoundations.ai/simulation/airgen/reference/car-client#moveonpath

[11] (документация LiDAR: https://docs.scaledfoundations.ai/simulation/airgen/features/sensors#lidar

[12] 17 марта 2025 : https://www.nvidia.com/gtc/session-catalog/?search=DLIT74633#/

[13] внимание: http://www.braintools.ru/article/7595

[14] Источник: https://habr.com/ru/articles/885332/?utm_source=habrahabr&utm_medium=rss&utm_campaign=885332

www.BrainTools.ru

Rambler's Top100