首页 > 其他分享 >【ROS2机器人入门到实战】齐次坐标变换实战

【ROS2机器人入门到实战】齐次坐标变换实战

时间:2023-10-31 10:33:52浏览次数:34  
标签:实战 机器人 矩阵 齐次 ROS2 np 坐标系 tfs


6.齐次坐标变换实战

写在前面

  1. 当前平台文章汇总地址:ROS2机器人从入门到实战
  2. 获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取
  3. 教程配套机器人开发平台:两驱版| 四驱版
  4. 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

上一节我们对齐次矩阵的组成和齐次矩阵的求逆和乘法两个运算的几何意义进行了介绍。

本节课我们就通过对应的函数和库实现齐次矩阵的生成,齐次矩阵的乘法和求逆。

1.齐次矩阵的合成与分解

齐次矩阵的的生成可以一个姿态和一个平移向量组成,因为姿态可以用四元数、欧拉角、轴角、旋转矩阵四种方式来表示

所以我们考虑先将对应的姿态转成旋转矩阵,然后使用numpy讲旋转矩阵和平移向量填写到齐次矩阵对应的位置即可

1.1旋转矩阵+平移向量

#导入库
import numpy as np
import transforms3d as tfs
# 定义旋转矩阵R和平移向量T
R = np.asarray([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])
T = np.asarray([1,0,1])
R,T

【ROS2机器人入门到实战】齐次坐标变换实战_机器人

1.1.1 使用numpy方法合成齐次变换矩阵

temp = np.hstack((R,T.reshape(3,1)))
np.vstack((temp,[0,0,0,1]))

【ROS2机器人入门到实战】齐次坐标变换实战_ROS2_02

1.1.2 使用tfs中的函数合成齐次变换矩阵

tfs.affines.compose(T,R,[1,1,1])

【ROS2机器人入门到实战】齐次坐标变换实战_旋转矩阵_03

1.2四元数+平移向量

思路:先将四元数转换成旋转矩阵,然后再利用1.1合成齐次矩阵

R = tfs.quaternions.quat2mat([1,0,0,0])
tfs.affines.compose(T,R,[1,1,1])

【ROS2机器人入门到实战】齐次坐标变换实战_坐标变换_04

1.3 练习

1.3.1 练习1

已知相机坐标系{C}为参考坐标系,工具坐标系{P}的位置矢量在相机坐标系{C}x,y,z各轴投影为【ROS2机器人入门到实战】齐次坐标变换实战_旋转矩阵_05,并且工具坐标系和相机坐标系姿态相同,求【ROS2机器人入门到实战】齐次坐标变换实战_齐次坐标变换_06

1.3.2 练习2

已知机器人基坐标系{B}为参考坐标系,相机坐标系{C}在的位置矢量在{B}各轴的投影为【ROS2机器人入门到实战】齐次坐标变换实战_ROS2_07,坐标系{C}和绕着坐标系{B}的x轴转了180度,求【ROS2机器人入门到实战】齐次坐标变换实战_机器人_08

2.齐次矩阵的分解

齐次矩阵的分解指的是已有齐次矩阵的情况下,将其分解为姿态和平移两部分

2.1 将qcjz分解为固定轴欧拉角和平移向量

tfs.euler.mat2euler(T[0:3,0:3]),T[:3,3:4]

【ROS2机器人入门到实战】齐次坐标变换实战_旋转矩阵_09

2.3 将qcjz分解为四元数和平移向量

tfs.quaternions.mat2quat(T[0:3,0:3]),T[:3,3:4]

【ROS2机器人入门到实战】齐次坐标变换实战_ROS2_10

3.齐次矩阵的乘法

对应numpy中矩阵的乘法np.dot讲两个矩阵相乘即可,我们以一道例题来讲解这个问题。

3.1 练习-眼在手外

如图

标签:实战,机器人,矩阵,齐次,ROS2,np,坐标系,tfs
From: https://blog.51cto.com/u_15473553/8102193

相关文章

  • 【ROS2机器人入门到实战】tf2介绍
    1.tf2介绍写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cnTF即变换的英文单词TransForm的缩写。所以ROS和ROS2中的TF就是指......
  • 【ROS2机器人入门到实战】姿态的不同表示
    3.姿态的不同表示写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn大家好,我是小鱼,本节课,我们来学习姿态的多种表示方式。在前......
  • 【ROS2机器人入门到实战】MiniConda与Jupyter介绍安装
    2.MiniConda与Jupyter介绍安装写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn大家好,我是小鱼,上一节我们介绍了机器人学的基......
  • 【ROS2机器人入门到实战】矩阵运算实战
    3.矩阵运算实战写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn上一节我们安装好了MiniConda和Jupyter,本节课我们继续回到学......
  • 使用mysqldump进行数据库备份实战遇到的问题
    [root@mysql~]#mysqldump-uroot-pdb_shop>/opt/db_shop.sqlEnterpassword:mysqldump:Couldn'texecute'SHOWVARIABLESLIKE'gtid\_mode'':Table'performance_schema.session_variables'doesn'texist(1146)原......
  • Django实战项目-学习任务系统-定时任务管理
    接着上期代码框架,开发第4个功能,定时任务管理,再增加一个学习定时任务表,主要用来设置周期重复性的学习任务,定时周期,定时时间,任务标题和内容,预计完成天数,奖励积分和任务状态等信息。 现实中学习一门课程或一项技能知识,需要很长时间的学习积累才能学会,不像小说世界,游戏世界等虚拟世......
  • 【java基础-实战3】list遍历时删除元素的方法
    在实际的业务开发中,容器的遍历可以说是非常非常常见的场景了,遍历删除呢,用的机会也比较多,那么有哪几种删除元素的方法呢?你用对了吗~本文循序渐进,先说几种容易出问题的方法,再引出几种比较可靠的方法~首先,初始化一个数组,用于后面的事例演示:List<Integer>list=newArrayList<>();......
  • 实战攻防演练-Linux写入ssh密钥,利用密钥登录
    前言密钥形式登录的原理是利用密钥生成器制作一对密钥,一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过SSH暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也......
  • 【matplotlib 实战】--箱型图
    箱型图(BoxPlot),也称为盒须图或盒式图,1977年由美国著名统计学家约翰·图基(JohnTukey)发明。是一种用作显示一组数据分布情况的统计图,因型状如箱子而得名。它能显示出一组数据的最大值、最小值、中位数及上下四分位数。箱子的顶端和底端,分别代表上下四分位数。箱子中间的是中位数线......
  • axios请求实战
    Home主页请求数据一、概览1.request请求2.找到合适API并传相应参数3.需要请求的组件调用4.请求方接受数据并传至展示组件二、一起看下代码吧,这里采用vue的多文件形式1.request.js文件用于创建请求实体2.home.js文件用于封装request请求实现特定页面的请求发送3.......