机器人视觉学习记录

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)



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


所有评论(0)