当前位置: 首页 > backend >正文

包含物体obj与相机camera的 代数几何代码解释

反余弦函数的值域在 [0, pi]
斜体样式在这里插入图片描述

cam_pose = self._cameras['hand_realsense'].camera.get_model_matrix()  # cam2world# 物体到相机的向量
obj_tcp_vec = cam_pose[:3, 3] - self.obj_pose.p
dist = np.linalg.norm(obj_tcp_vec)
# 物体位姿的旋转矩阵
obj_rot_mat = self.obj_pose.to_transformation_matrix()[:3, :3]
x, y, z = obj_rot_mat[:, 0], obj_rot_mat[:, 1], obj_rot_mat[:, 2]# 计算角度 theta 和 phi
# dot_value = norm(obj_tcp_vec)*norm(z)*cos (theta)
vec_z_dot = np.dot(obj_tcp_vec, z)
# 向量vec_z_dot 与 平面 xy 的夹角 (等价于与z 轴)
theta = np.pi / 2 - np.arccos(vec_z_dot / dist)
# 向量在 z 轴的投影
obj_tcp_vec_proj_z = vec_z_dot * z
# 向量在 平面 xy 的投影
obj_tcp_vec_proj_xy = obj_tcp_vec - obj_tcp_vec_proj_z
dist_xy = np.linalg.norm(obj_tcp_vec_proj_xy) + 0.001
# 向量在 xy 平面投影 与 x 轴的内积
vecxy_x_dot = np.dot(obj_tcp_vec_proj_xy, x)
# 把空间一分为二,在两边使得 值 分别 [0, pi)  (-pi,0]可以一一对应# vecxy_x_dot 是 向量在 xy平面投影 与 x 轴的内积
# 向量在 第一,第二象限 (x轴朝向东边,y轴朝向北边)
if np.dot(obj_tcp_vec_proj_xy, y) > 0:phi = np.pi - np.arccos(vecxy_x_dot / dist_xy)
# 向量在 第三,第四象限
else:phi = np.arccos(vecxy_x_dot / dist_xy) - np.pi   

theta: 向量 obj_tcp_vec 与 平面 xy 所成的角度,俯仰角,等价于与 z 轴所成角度。
phi:向量obj_tcp_vec ,与 x 轴所成角度相关

# 将 phi 和 theta 离散化为索引
phi_min, phi_max = -180, 180 * 5 / 6
phi_d = (phi_max - phi_min) // 11
phi_t = (phi / np.pi * 180 - phi_min) / phi_d  # [0, 12)# theta 是与 平面 xy 的夹角
theta_min, theta_max = 10, 80
theta_d = (theta_max - theta_min) // 5
theta_t = (theta / np.pi * 180 - theta_min) / theta_d  # [0, 5) 
http://www.xdnf.cn/news/390.html

相关文章:

  • Flutter 弹窗队列管理:实现一个线程安全的通用弹窗队列系统
  • 学习笔记十七——Rust 支持面向对象编程吗?
  • Yue生成中文歌词
  • Mybatis
  • 数据结构0基础学习堆
  • AcWing 11:背包问题求方案数 ← 0-1背包
  • 与终端同居日记:Linux指令の进阶撩拨手册
  • docker底层原理
  • 如何给云开发生成的智能体增加权限判断
  • AtCoder ABC402 A~D 题解
  • 数据驱动未来:大数据在智能网联汽车中的深度应用
  • Visio导出清晰图片步骤
  • npm 常用操作和配置
  • uv:重新定义Python开发效率的下一代工具链
  • 高可靠 ZIP 压缩方案兼容 Office、PDF、TXT 和图片的二阶段回退机制
  • 【今日三题】打怪(模拟) / 字符串分类(字符串哈希) / 城市群数量(dfs)
  • Cril 截取字段-生成hostname
  • Git命令归纳
  • 少儿编程路线规划
  • Docker Overlay 网络的核心工作(以跨节点容器通信为例)
  • 公务员行测之速算分数记忆检验-无答案版本
  • 《从理论到实践:CRC校验的魔法之旅》
  • Benewake(北醒) TF-NOVA 在通过TTL-USB转接板更改配置教程
  • VUE快速入门-4:简单入门案例
  • eplan许可证无法识别硬件信息
  • if/switch语句初始化功能
  • MySQL内置函数:字符串函数,数值函数,日期函数,流程控制函数
  • 【unity实战】Unity动画层级(Animation Layer)的Sync同步和Timing定时参数使用介绍,同步动画层制作角色的受伤状态
  • 数据结构基本概念
  • 如何导出pip下载的paho-mqtt包