Neural Network Racing - Part 2
Запись от Storm23 размещена 10.04.2018 в 21:24
Метки c#, games, genetic algorithms, neural networks, racing, unity
Продолжаем. После создания физической модели автомобиля, сделаем модель трека и сенсоры для нашей машинки. Модель трека Обычно, моделирование трека делают в 3D движках. Это делается потому, что в 3D движке типа Unity можно сделать стенки трека в виде коллайдеров и затем искать пересечение лучей сенсоров автомобиля со стенками. Таким образом реализуется машинное зрение, с помощью которого машина "видит" трек. Я так делать не буду. Во-первых потому что я хочу сделать движок независимым от Unity. А во-вторых, моделирование в Unity будет относительно медленным. Если реализовать трек и зрение без Unity, то можно сделать высокоскоростное моделирование (вне реального времени) с помощью которого мы очень быстро будем обучать нашу нейронную сеть. Наш трек будет состоять из соединенных между собой точек (класс PathPoint), образующих замкнутый контур. Ключевые точки рисуются в специальном редакторе. Процесс рисования трека - быстро и удобно
Трек представляет собой двусвязный кольцевой список точек типа PathPoint: Класс PathPoint
Каждая точка содержит координаты отрезков левой и правой стенок трека, а также другую информацию - длину участка трека, определяемого этой точкой, ширину трека в данном месте, вектора направления и нормали трека, и др. При движении автомобиля по треку, машина будет переходить от одной точки трека к другой, а поскольку точка PathPoint содержит отрезки для стенок, то мы всегда можем быстро получить ближайшие к машине стенки трека и таким образом быстро и эффективно реализовать вычисления расстояния от машины до стен. Кстати, трек может иметь самопересечения, что позволит в будущем сделать треки в виде восьмерки или более сложные фигуры. Редактор трека позволяет быстро нарисовать трек, отредактировать его, задать ширину трека в разных точках, задать коэффициент трения для трассы. В результате можно сделать довольно сложные трассы, например такую: Редактор трека сохраняет трек в виде XML файла, а также сохраняет специальное изображение трека, с помощью которого мы потом в Unity сможем автоматически создать трек на террейне. Зрение для автомобиля Для получения информации о стенках трека по которому движется автомобиль, будем использовать пять сенсоров, каждый из которых дает информацию о расстоянии от автомобиля до стены в заданном направлении: Как уже указывалось, при движении по треку автомобиль переходит от одной PathPoint к другой. Поэтому мы всегда можем получить стенки для текущего отрезка дороги, а также получить список стенок для ближайших отрезков, идущих далее по треку. Это позволяет очень быстро находить ближайшие к автомобилю отрезки стенок трека и вычислить расстояние до них вдоль луча сенсора: Поиск расстояний до ближайших стен трека
Полный код для трека и редактора треков будет приведен в дальнейших частях статьи. To be continue ... |
Всего комментариев 0
Комментарии