math: 坐标系旋转变换公式图解

1 围绕原点的旋转
如下图, 在2维坐标上,有一点p(x, y) , 直线opの长度为r, 直线op和x轴的正向的夹角为a。 直线op围绕原点做逆时针方向b度的旋转,到达p’ (s,t) 



s = r cos(a + b) = r cos(a)cos(b) – r sin(a)sin(b)   (1.1)
t = r sin(a + b) = r sin(a)cos(b) + r cos(a) sin(b)  (1.2)
其中 x = r cos(a)  , y = r sin(a)
代入(1.1), (1.2) ,
s = x cos(b) – y sin(b)    (1.3)
t = x sin(b) + y cos(b)    (1.4)

 


用行列式表达如下:

 

2.座标系的旋转
在原坐标系xoy中,  绕原点沿逆时针方向旋转theta度, 变成座标系 sot。
设有某点p,在原坐标系中的坐标为 (x, y), 旋转后的新坐标为(s, t)。



oa = y sin(theta)   (2.1)
as = x cos(theta)   (2.2)
综合(2.1),(2.2) 2式
s =  os = oa + as = x cos(theta) + y sin(theta) 
t =  ot = ay – ab = y cos(theta) – x sin(theta)

 

用行列式表达如下:


而您一旦用以下这图解方法,随时眼见显然,再也不会搞错。

 





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于Python的机器人控制程序示例,用于控制ABB机器人末端执行器(即工具)绕Z轴旋转90度: ```python import abb import math # 创建机器人控制实例 robot = abb.Robot(ip='192.168.125.1') robot.set_speed(100) # 设置机器人速度为100% # 定义TCP tcp = abb.TCP(pose=abb.Pose(x=0, y=0, z=0.1), # 工具长度为0.1m orientation=abb.Orientation(), # 工具不旋转 conf=abb.Conf()) # 将机器人移动到起始位置 robot.set_joints([0, -90, 90, 0, 90, 0]) # 设置机器人关节角度 robot.wait_for_motion_done() # 等待机器人运动完成 # 将工具绕Z轴旋转90度 tcp.orientation = abb.Orientation(0, 0, math.pi/2) robot.set_tcp(tcp) # 设置工具坐标系 robot.move(abb.Point(x=0.1, y=0, z=0), robtarget=True) # 移动到新位置 # 将机器人移动回起始位置 robot.set_joints([0, -90, 90, 0, 90, 0]) robot.wait_for_motion_done() # 关闭机器人控制实例 robot.close() ``` 说明: - 该程序使用了Python语言和abb库,需要先安装abb库并连接ABB机器人控制器。 - 程序首先定义了一个TCP实例,其中包含了工具的姿态信息。 - 然后将机器人移动到起始位置,并将TCP设置为初始状态。 - 接着将工具绕Z轴旋转90度,并移动到新位置。 - 最后将机器人移动回起始位置,并关闭机器人控制实例。 注意,以上示例程序仅用于演示目的,实际运行时需要根据具体机器人的控制接口和TCP信息进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值