Инструментарий tf от ros может легко реализовать преобразование координат между произвольными системами координат. Однако, если вы просто хотите легко проверить свои идеи и не хотите писать слишком сложный код, рассмотрите возможность написания собственной функции для 2D-вращения. Другой задачей, двойственной задаче двумерного вращения, является преобразование вращения двумерной системы координат.这两个问题的形式基本一样,只是旋转的角度相差一个负号。
Это то, что легко спутать, так что сделайте пометку для дальнейшего использования.
1. Формула двумерного вращения (алгоритм)
И (эта статья только для двумерных) вращение должно представлять точку координатУгол поворота против часовой стрелки (вперед) вокруг начала координат в определенной системе координатПосле получения новых координат.
Вывод: предполагаемый,, как показано на рисунке выше(Обратите внимание, что на изображении выше есть несколько ошибок, та, что сбоку от оси координатследует изменить на). расширятьДоступный:
Матричная форма:
Тогда двумерная матрица вращения:A=\left[\begin{matrix} cos(\theta) & -sin(\theta) \\ sin(\theta) & cos(\theta)\end{matrix}\right] \tag{1}
void Rotate2(double x1, double y1, double alpha, double& x2, double& y2)
{
x2 = x1 * cos(alpha) - y1 * sin(alpha);
y2 = x1 * sin(alpha) + y1 * cos(alpha);
}
2. Преобразование поворота двумерной системы координат
Предположим, что есть система координат, через угол поворота против часовой стрелки (вперед)После этого получите новую систему координат. получить координаты в исходной системе координатЗначения координат в новой системе координат называются преобразованием системы координат.
Таким образом, двумерная матрица преобразования вращения координат имеет вид:B=\left[\begin{matrix} cos(\theta) & sin(\theta) \\ -sin(\theta) & cos(\theta)\end{matrix}\right]=\left[\begin{matrix} cos(-\theta) & -sin(-\theta) \\ sin(-\theta) & cos(-\theta)\end{matrix}\right] \tag{2}
в заключении
Сравнивая формулы (1) и (2), можно обнаружить, что двумерное вращение согласуется с двумерным координатным вращением, за исключением того, что когда оба вращения положительные (против часовой стрелки), угол отличается на отрицательный знак. То есть поставить точку под той же осью координатПоверните угол в положительном направлении (против часовой стрелки) от начала координатНовые координаты, полученные после, что равносильно постановке точкисистема координатОбратный (по часовой стрелке) угол поворотаПосле этого в новой системе координатВниз,Соответствующая новая точка координат. Возьмите ручку и бумагу, поиграйте с двумя вышеприведенными поясняющими диаграммами, и все станет ясно.