2016-01-02 6 views
3

Я хотел бы улучшить свой маленький робот с машинным обучением.Использование машинного обучения для простого управления роботом

До настоящего времени он использует простые, а если тогда решения в его основной функции действуют как робот для газонокосилки.

Моя идея - использовать SKLearn для этой цели.

Пожалуйста, помогите мне найти правильные первые шаги.

у меня есть несколько датчиков, которые говорят о мире otside:

Мир = {рыскания, панорамирование, наклон, distance_to_front_obstacle, ground_color}

У меня есть вектор состояния

State = {left_motor , right_motor, cutter_motor}

, который контролирует 3 действующих лиц робота.

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

Один пример: если двигатели включены, и робот должен двигаться вперед, но измеритель расстояния сообщает о постоянных значениях, робот, по-видимому, заблокирован. Теперь он должен решить отступить и повернуться и перейти в другое направление.

Прежде всего, как вы думаете, это возможно с помощью sklearn и второго, как мне начать?

My (простой) управление роботом код здесь: http://github.com/bgewehr/RPiMower

Пожалуйста, помогите мне с первыми шагами!

ответ

1

В пакете sklearn содержится много полезных инструментов для машинного обучения, поэтому я не думаю, что это проблема. Если это так, то есть, безусловно, другие полезные пакеты python. Я думаю, что сбор данных для контролируемой фазы обучения станет сложной задачей, и задаться вопросом, было бы разумно сделать дорожку с лентой в сетке. Это упростит перевод дорожки на метки (x, y позиции в сетке). Каждая ячейка в сетке должна быть небольшой, если вы захотите сделать сложные треки позже, я думаю. Это может быть очень умно, чтобы проверить, как они это делали в машине, управляющей автомобилем.

6

Я предлагаю использовать Reinforcement Learning. Здесь у вас есть учебник Q-Learning, который хорошо вписывается в вашу проблему.

Если вы хотите код в python, прямо сейчас, я думаю, что нет реализации Q-обучения в scikit-learn. Тем не менее, я могу привести несколько примеров кода на питоне, который вы могли бы использовать: 1, 2 и 3.

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

Удачи :-)

+0

Спасибо! Задача решения лабиринта - это четкое совпадение с подходом Q-обучения. Но как я научу роботу корреляцию между «моими колесами поворачиваются» и «я не двигаюсь», чтобы понять, что он заблокирован каким-то «невидимым» препятствием? Это не проблема Q-Learning, верно? Вопрос о самосознании, не так ли? –

+0

Вы должны установить все с точки зрения вознаграждения. Если робот пытается идти в сторону препятствия, вы даете плохую награду. Если робот идет туда, где вы хотите, то вы дадите хорошую награду. –

+0

Я попробую попробовать, нужно глубже мыслить! –