三维坐标的旋转矩阵转换测试Demo(ROS1 RVIZ)

已知空间上的某一个点P在坐标系1下的位置为 P1(1,2,3),需要求出P在三维空间坐标系0之间的相对关系,其中坐标系1是相对于坐标系0绕着x轴旋转60度后转化。示意如下图
在这里插入图片描述

程序设计

  • 定义P点在坐标系1下的位置
array = np.array([1,2,3])
# [1 2 3]
  • 定义坐标系1和坐标系0之间的旋转矩阵
PI = 3.14
angle = 60/360*PI

transforat_array = np.array([[1,0,0],
                     [0,math.cos(angle),math.sin(angle)],
                     [0,-math.sin(angle),math.cos(angle)]])
# [[ 1.          0.          0.        ]
#  [ 0.          0.86615809  0.4997701 ]
# [ 0.         -0.4997701   0.86615809]]

  • 得到转换结果
d = np.dot(array,transforat_array)
# [1.         0.23300588 3.59801449]

整体程序

import math
import numpy as np
PI = 3.14

array = np.array([1,2,3])
angle = 60/360*PI

print(angle)
transforat_array = np.array([[1,0,0],
                     [0,math.cos(angle),math.sin(angle)],
                     [0,-math.sin(angle),math.cos(angle)]])
print(array)
print(transforat_array)

d = np.dot(array,transforat_array)
print(d)

使用ROS 的RVIZ进行查看验证

按照顺序打开和输入指令,不同的的指令需要开启不同的终端执行

roscore
rosrun tf2_ros static_transform_publisher 1 2 3 0 0 0 /base_1 /p
rosrun tf2_ros static_transform_publisher 0 0 0 0 0 0.523333 /base_0 /base_1
rosrun rviz rviz

讲话Fixed Frame选择为base_0,表示观察的基坐标,然后就可以查看P点和他之间的相对位置关系,可以从中第二个方框看出ROS计算得到的旋转结果和之前python程序计算出来的结果相同。
在这里插入图片描述
在测试的Demo当中,使用的还是静态的发布关系,一般在机械臂上面各个关节关节之间的关系一般会保持静止,变动的是末端执行机构和目标物体之间的相对位置姿态,后续就可以程序来找出机械臂末端的执行机构需要运动到达目标物体的角度和路线了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值