Matlab 使用 DH table 建立的 robot 和实际不符

机器人仿真

想借助 matlab robotics toolbox 来仿真机器人,但是直接输入自己的 DH table 显示出来的 robot 和实际不情况不符。

DH table 建立 robot

Build Manipulator Robot Using Kinematic DH Parameters

主要使用 setFixedTransform,DH table 中都是数值,不带变量

robot = rigidBodyTree;bodies = cell(6,1);
joints = cell(6,1);
for i = 1:6bodies{i} = rigidBody(['body' num2str(i)]);joints{i} = rigidBodyJoint(['jnt' num2str(i)],"revolute");setFixedTransform(joints{i},dhparams(i,:),"dh");bodies{i}.Joint = joints{i};if i == 1 % Add first body to baseaddBody(robot,bodies{i},"base")else % Add current body to previous body by nameaddBody(robot,bodies{i},bodies{i-1}.Name)end
end

原因一 theta 角度中的 固定偏置 默认被忽略

setFixedTransform 会默认忽略 旋转关节 theta 角度中的固定偏置,看帮助文档
The theta input is ignored when specifying the fixed transformation between joints because that angle is dependent on the joint configuration.

感谢 matlab 论坛 的资源

由于固定忽略偏置,需要手动设置 home position,并在后续计算中,对 theta 角度手动加上这个偏置

robot.Bodies{2}.Joint.HomePosition=-pi/2;
robot.Bodies{4}.Joint.HomePosition=pi/2;

原因二 参数错了

检查 DH table 中的 角度 与 长度 是不是错了,尤其是长度部分的数值。

原因二 DH table 建立方式不符合matlab标准

检查 DH table 建立方法,常见有两种,参考下面两个作者的书

  • John J. Craig ----- Introduction to Robotics Mechanics and Control
  • Bruno Siciliano ----- Robotics, Modeling, Planning and Control

Matlab setFixedTransform 采用 Siciliano方法,帮助手册有写

  • A — Length of the common normal line between the two z-axes, which is perpendicular to both axes
  • α — Angle of rotation for the common normal
  • d — Offset along the z-axis in the normal direction, from parent to child
  • θ — Angle of rotation for the x-axis along the previous z-axis

Craig

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Siciliano

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/342092.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌开发者账号关联的主要原因有哪些?应如何解决或避免?

众所周知,谷歌对账号的风控非常严格,不允许一个开发者拥有多个开发者账号,且相信大多数开发者都收到过谷歌发来的账号终止的邮件,甚至同时连续被封多个账号。 大多数开发者账号被封的的主要原因是谷歌认为或检测出账号存在高风险行…

Inis博客系统本地部署结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

龙芯3A5000上使用腾讯会议

原文链接:龙芯3A5000上使用腾讯会议 hello,大家好啊!今天我要给大家介绍的是在龙芯3A5000处理器上安装使用腾讯会议的经验分享。随着远程工作和在线会议的普及,腾讯会议成为了许多人日常工作不可或缺的工具。而对于使用龙芯3A5000…

JetCache源码解析——缓存处理

在Java技术体系中,如果想要在不改变已有代码逻辑的情况下,对已有的函数进行功能增强,一般可以使用两种方式,如AOP(Aspect Oriented Programming),即面向切面编程,以及代理模式&#…

MacOS访问某局域网域名存在问题,但是ip可以正常访问的问题解决方案

背景: 公司服务器部署wiki,之前macos访问wiki服务都是通过ip:8090形式访问,后来给wiki服务配置了域名wiki:8090,后macos浏览器连接同样的网络却一直没办法正常域名访问wiki,但可以ip访问wiki,但是其他同事…

用通俗易懂的方式讲解:对 embedding 模型进行微调,我的大模型召回效果提升了太多了

QA对话目前是大语言模型的一大应用场景,在QA对话中,由于大语言模型信息的滞后性以及不包含业务知识的特点,我们经常需要外挂知识库来协助大模型解决一些问题。 在外挂知识库的过程中,embedding模型的召回效果直接影响到大模型的回…

四、C++运算符(5)逻辑运算符

作用&#xff1a;用于根据表达式的值返回真值或假值 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespace std; int main() {//逻辑运算符 非&#xff01;int a 10;int b 20;//在c中除了0都是真cout << !a << end…

小红书种草类型有哪些,小红书营销攻略

我们都知道小红书是个内容平台。用户来这可以看到各种类型的笔记&#xff0c;从笔记中获取自己想要了解的内容。这也就意味着平台上有着许多种不同的笔记类型。今天我们和大家分享下小红书种草类型有哪些&#xff0c;小红书营销攻略&#xff01; 1. 明星带货类 顾名思义&#x…

职称为什么要提前报名?⬇️ ⬇️

评职称需要一堆的材料&#xff0c;比如&#xff1a; 论文发表&#xff0c;从写作到选期刊到发表&#xff0c;需要3-12个月的时间继续教育&#xff0c;职称评审对于继续教育是有学时要求的&#xff0c;这一点申报职称的人想必都清楚&#xff0c;但具体学时要求,就要根据当时的要…

5. 属性自动填充

《阿里巴巴Java开发手册》&#xff0c;在第 5 章 MySQL 数据库可以看到这样一条规范&#xff1a; 对于一张数据表&#xff0c;它必须具备三个字段&#xff1a; id : 唯一IDgmt_create : 保存的是当前数据创建的时间gmt_modified : 保存的是更新时间 改造一下数据表&#xf…

python炒股自动化(0),申请券商API接口

上次发了量化交易接口的区别&#xff0c;发现很多人根本不知道券商提供的API交易接口&#xff0c;这里补充一篇&#xff0c;关于券商接口的介绍。 现在市面上可以给个人账户接入的股票交易接口&#xff0c;用的最多的也就是QMT和Ptrade&#xff0c;以前接入量化交易需要机构或…

java通过okhttp方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、okhttp方式实现的https请求工具类2.1、跳过证书配置类2.2、okhttp方式的 https工具类 三、测试类 一、引入依赖包 引入相关依赖包 <!--okhttp依赖包--> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>…