在这里插入图片描述

1 环境安装

# 1. 创建环境(Python 3.9 兼容性最好)
conda create -n robot_vision python=3.9 -y

# 2. 激活环境
conda activate robot_vision

# 3. 安装 PyBullet 及核心依赖
pip install pybullet numpy scipy matplotlib opencv-python

# 4. 安装 3D 视觉和机器人相关库(Demo 2-4 需要)
pip install open3d ikpy

# 5. 安装 ROS2 接口(可选,如果后续用 ROS2)
# pip install rclpy  # 仅当你本地有 ROS2 安装时

2 环境测试

import pybullet as p
import pybullet_data

physicsClient = p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())

plane_id = p.loadURDF("plane.urdf")
box_id = p.loadURDF("cube.urdf", basePosition=[0, 0, 1])

# 无限循环,直到 GUI 窗口被关闭
while p.isConnected():
    p.stepSimulation()

# 窗口关闭后自动执行到这里
print("GUI 已关闭")

3 坐标转换

来源:浅析相机相关坐标系的相互转换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
针孔相机模型的数学定义(规定像平面位于f)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c09b95313caa47b98ffab70f1725bff4.png

在这里插入图片描述
在这里插入图片描述

4 其他数学公式推导

- 图像坐标系到相机坐标系

图像坐标系=>物理坐标系

x = u - u 0 u_0 u0 = u - c x c_x cx
x/ f x f_x fx = X c X_c Xc/ Z c Z_c Zc
X c X_c Xc = (u - c x c_x cx) Z c Z_c Zc/ f x f_x fx
同理:
在这里插入图片描述
根据上述图像坐标系和相机坐标系的y轴方向相反,可得:
v f l i p v_{flip} vflip= height-1-v (图像坐标是从0到height-1)
Y c Y_c Yc = ( v f l i p v_{flip} vflip - c y c_y cy)
Z c Z_c Zc/ f y f_y fy

- 视角场和焦距的关系

在这里插入图片描述
由上图得到:f = width / (2 × tan(fov/2))

文档和资料

  • pybullet code: https://github.com/bulletphysics/bullet3/tree/master
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐