можно сослаться на понимание списка, поскольку оно создается символом '_ [1]'. Например, следующая функция, уникальная-ifies список элементов, не изменяя их порядок путем ссылки на его понимание списка.
def unique(my_list):
return [x for x in my_list if x not in locals()['_[1]']]
Я думаю, что вопрос «как определить, когда использовать то или иное» ошибочен. Вы должны всегда использовать оба датчика для ориентации. Бывают случаи, когда один из них оказывается бесполезным. Однако это крайние случаи.
Если я правильно вас понял, вам понадобится что-то для определения высоты тона (наклона) и ориентации в соответствии со сторонами света (север, восток, юг и запад).
Шаг можно определить с помощью акселерометра.
Ориентацию по сторонам света можно определить с помощью компаса.
Объединение выходных данных от этих двух датчиков правильно с правильной математикой в вашем программном обеспечении, скорее всего, даст вам абсолютную ориентацию.
Я думаю, что это выполнимо.
Удачи.
Ключ состоит в том, чтобы использовать векторное произведение двух векторов, силы тяжести и магнитометра. Перекрестное произведение дает новый вектор, перпендикулярный им обоим. Это означает, что он расположен горизонтально (перпендикулярно вниз) и отклонен от севера на 90 градусов. Теперь у вас есть три ортогональных вектора, которые определяют ориентацию. Это немного некрасиво, потому что не все они перпендикулярны, но это легко исправить. Если вы затем пересечете этот новый вектор обратно с вектором гравитации, который даст третий вектор, перпендикулярный вектору гравитации и вектору плоскости магнита. Теперь у вас есть три перпендикулярных вектора, которые определяют вашу систему координат трехмерной ориентации. Исходный вектор акселерометра (гравитации) определяет Z (вверх / вниз), а два вектора взаимного произведения определяют компоненты ориентации восток / запад и север / юг.