Используя контроллер xbox для ноутбука Jupyter, сохраняйте переменные, присвоенные значениям джойстика, в режиме реального времени

#python #jupyter-notebook #nvidia-jetson-nano

#python #jupyter-notebook #nvidia-jetson-nano

Вопрос:

Я использую ноутбук Jupyter для своего проекта с контроллером Xbox для управления роботом в режиме реального времени.

import ipywidgets.widgets as widgets используется

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

Если я присваиваю эти значения переменным, он получает текущее значение во время запуска ячейки.

Вот рабочий код, который присваивает непосредственно двигателю:

 left_link = traitlets.dlink((controller.axes[1], 'value'), (robot.left_motor, 'value'), transform=lambda x: -x)
  

Однако мне нужно рассчитать угол, который я хочу повернуть, поэтому вычисляя arctan2 по двум осям значений джойстика ( transform: lambda я думаю, этого недостаточно?).

Я не понимаю, как мне следует решать эту проблему, поскольку я никогда не работал с постоянно обновляемыми переменными, такими как переменные контроллера Xbox. Пожалуйста, скажите мне, нужна ли вам дополнительная информация.

Ответ №1:

То, что я искал, было Observe(), как здесь:

 import ipywidgets.widgets as widgets

int_range = widgets.IntSlider()
display(int_range)
def on_value_change(change):
    print(change)
    print(change['new'])
int_range.observe(on_value_change, names='value')
  

Это позволяет переназначать значение переменной каждый раз, когда контроллер изменяет его значение.