任何人都可以确认以下内容从 query_stamp 的 tf2_ros_buffer_返回插值转换吗?
auto t = tf2_ros_buffer_.lookupTransform(frame_a, frame_b, query_stamp);
更具体地说,这是笛卡尔插值吗?
任何人都可以确认以下内容从 query_stamp 的 tf2_ros_buffer_返回插值转换吗?
auto t = tf2_ros_buffer_.lookupTransform(frame_a, frame_b, query_stamp);
更具体地说,这是笛卡尔插值吗?
是的,但不完全是,lookupTransform
工作方式(作为tf2的一部分)是它在查询时间之前的变换和查询时间之后的变换之间执行球面线性插值(SLERP)(参见原始TF 论文)。这是从计算机图形世界中获得的一个技巧,可以促进恒定角速度模型。
slerp 的方程在下面,其中q_a
和q_b
是表示帧的四元数,是q
输出四元数,t
是时间的比率,是和之间theta
最短路径角的一半q_a
q_b
通常,结果以笛卡尔形式使用。
您可以在此处查看源代码(查看lookupTransform
、和此处transformTF2ToMsg
的核心 TF2 插值代码)。