当前位置: 首页 > news >正文

将机器人六轴坐标转为4*4矩阵(Opencv/C++)

        已知机器人六轴坐标x,y,z,rx,ry,rz,其中xyz表示空间位置坐标,rx,ry,rz是欧拉角;

需要将这六个值转为4*4的矩阵以便后续其它处理运算。

代码如下:

#include <opencv2/core.hpp>
#include <iostream>
#include <cmath>using namespace cv;
using namespace std;// 将 xyz 和欧拉角转换为 4x4 矩阵
Mat xyzEulerToMatrix(double x, double y, double z, double rx, double ry, double rz) {// 转换为弧度rx = rx * CV_PI / 180.0;ry = ry * CV_PI / 180.0;rz = rz * CV_PI / 180.0;// 构建旋转矩阵Mat rotX = (Mat_<double>(3, 3) <<1.0, 0.0, 0.0,0.0, cos(rx), -sin(rx),0.0, sin(rx), cos(rx));Mat rotY = (Mat_<double>(3, 3) <<cos(ry), 0.0, sin(ry),0.0, 1.0, 0.0,-sin(ry), 0.0, cos(ry));Mat rotZ = (Mat_<double>(3, 3) <<cos(rz), -sin(rz), 0.0,sin(rz), cos(rz), 0.0,0.0, 0.0, 1.0);// 构建平移矩阵Mat translation = (Mat_<double>(4, 4) <<1.0, 0.0, 0.0, x,0.0, 1.0, 0.0, y,0.0, 0.0, 1.0, z,0.0, 0.0, 0.0, 1.0);// 旋转矩阵相乘Mat rotation = rotZ * rotY * rotX;// 合并旋转和平移Mat matrix = (Mat_<double>(4, 4) <<rotation.at<double>(0, 0), rotation.at<double>(0, 1), rotation.at<double>(0, 2), x,rotation.at<double>(1, 0), rotation.at<double>(1, 1), rotation.at<double>(1, 2), y,rotation.at<double>(2, 0), rotation.at<double>(2, 1), rotation.at<double>(2, 2), z,0.0, 0.0, 0.0, 1.0);return matrix;
}int main() {// 定义参数double x = 111.0;double y = 222.0;double z = 333.0;double rx = 60.0;double ry = 30.0;double rz = -90.0;// 计算 4x4 矩阵Mat matrix = xyzEulerToMatrix(x, y, z, rx, ry, rz);// 打印结果cout << "4x4 矩阵:" << endl << matrix << endl;return 0;
}


http://www.mrgr.cn/news/61127.html

相关文章:

  • 【项目介绍】DeepOF一个用于后处理从自由移动啮齿动物视频中提取的时间序列的工具包
  • 离线docker安装数据库(无法访问互联网),那么直接使用 docker pull mysql:latest
  • pytest-allure框架简单封装----测试报告
  • 《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
  • mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)
  • word中电流符号i或者j,这两个字母的头上的点会消失---完美解决办法
  • QTestLib框架
  • SAP-成本要素
  • MoonNet网络库文档
  • svg 初识+了解 + 应用 + 动画
  • 【算法题】树状数组
  • <项目代码>YOLOv8 猫狗识别<目标检测>
  • 【传知代码】KAN卷积:医学图像分割新前沿
  • 豆豆吐槽的“客服”问题,我想骂腾讯十八代祖宗
  • 【信号发生器(二)】
  • 2024 WebStorm 免费版使用教程与WebStorm启动报错解决
  • 天锐绿盾加密软件与 Ping32,文件加密与管控功能的深度较量
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发BaseAPI继续开发一
  • 借助Aspose.Email,管理受密码保护的 PST 文件
  • Netty核心源码与优化
  • python去掉字符串空格
  • CISAW考试通过率怎么样?
  • 一款扫描整个网络存活的IP 工具——Advanced IP Scanner
  • 【软件测试】- 手机APP测试方法
  • 汽车电子行业数字化转型的实践与探索——以盈趣汽车电子为例
  • uniapp通过id获取div的宽度,高度,位置等(应该是 任意平台都通用 )