- 博客(76)
- 资源 (1)
- 收藏
- 关注
原创 【机器人】Platformio STM32 arduino配置和测试
1.实验环境我用的板子是Nucleo F302R8,板载STLINKV2,为了测试一下Platformio的arduino框架下编写STM32程序,进行了实验,踩了点坑,特此记录。2.踩坑前期配置非常简单,网上教程很多,就是New一个Project,然后框架选择Arduino即可,等待下载好就可以了。然后改写platformio.ini文件为[env:nucleo_f302r8]platform=ststm32board=nucleo_f302r8board_build....
2021-05-11 16:23:09
1335
原创 【电机】使用Simulink建立BLDC反电动势测量的简单模型
1.前言本文是基于Matlab官方的视频进行的,为了防止自己忘记了操作过程,也为了方便后续查询,故记录一下我是怎么建立BLDC反电动势模型的。2.电机模型电机模型为Simscape-Electrical-Permanent Magnet中的BLDC...
2021-05-07 20:55:13
2551
1
原创 【Linux】Win10环境中配置VSCode连接Linux服务器
1.前言最近突发奇想,想玩玩服务器,把我的机器人C++库放到服务器上,就可以在Win10环境下编写了!因为没有硬件设备,所以买了3个月的腾讯云,折腾了我半天,终于在实验室的电脑、个人笔记本上,使用VSCode连接上了服务器,能够在本地使用Linux终端了。2.本地SSH准备我是通过git bash来创建SSH的公钥和私钥,这里也说一下我对公钥、私钥的理解吧,具体原理就不赘述了,建议百度,公钥是配置到远程端,私钥放在本地,然后当我们要登录远程的时候,远程端会将其公钥和我们本地的私钥进行比对,然后才
2020-11-04 22:42:39
582
原创 【C++】指针常量,常量指针
1.前言最近静下心来认真学习起了C++,发现了很多以前都没有注意到的细节,本文主要记录一下我对常量指针、指针常量的理解。2.指针常量// 指针常量,const放在*后面,指针的指向不可以改,但是指向的内存存放的值是可以改的 int * const p2 = &a; cout << "p2 pointed value is " << *p2 <<endl; *p2 = 100; // 指针常量指向的内存存放的值可以修改,即a
2020-10-07 11:09:25
374
原创 【机器人】谐波减速器和RV减速器的自我理解
1.前言最近闷得慌,项目也做不动,理论知识也学不懂,不知道该干啥了,于是突然奇想去了解了一下减速器的结构和原理,学点真实的东西,老是搞仿真、搞理论人都傻了。因为我不是学机械的,对于一些专业术语可能表述有问题,这篇文章我是想通过我自己的语言简单表达一下谐波减速器和RV减速器的原理。参考资料龚仲华编著.工业机器人从入门到应用[M].北京:机械工业出版社.2016.2.谐波减速器构造及原理谐波减速器的结构非常简单,只有三部分:图自:https://www.bilibili.com/vide
2020-09-27 21:13:58
8998
原创 【机器人】简记一下SimScape和SolidWorks导出三维文件操作
1.前言今天帮一位同学将一个.STEP文件导入SimScape中进行仿真,因为自己很久没有导入新的模型了,一直在用旧模型,所以对导入文件的操作有点生疏了,在查了一些资料和碰壁之后想起来了,特此记录一下。2.问题1:SW模板文件无效在用SW打开.STEP装配体文件时,提示:solidworks the default templates are not valid,即模板无效,如果点击continue,则显示为空白,此时需要对template文件路径重新设置一下即可3.SW安装SimSca
2020-08-27 19:57:33
2922
1
原创 【机器人】机械臂入门技术栈分享
机械臂控制入门技术栈分享1.前言 2.机器人控制入门技术栈 2.1.空间描述和变化 2.2.运动学分析 2.3.动力学建模 2.4.控制入门学习 3.进阶部分 3.1.机器人参数辨识 3.2.非线性控制 3.3.现代机器人描述方法:指数坐标 4.总结1.前言今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂.
2020-08-22 11:36:39
1737
1
原创 【机器人】机械臂控制入门技术栈分享
机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结1.前言今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但
2020-08-22 11:33:15
5339
原创 【机器人】基于指数积的机械臂正运动学算法
基于指数积的机械臂正运动学算法1.前言2.指数积公式建立过程3.PoE实例1.前言在学习了刚体运动的指数坐标表示和运动旋量后,我又对使用指数积法(PoE)对机械臂进行正运动学建模,相比于DH参数法,感觉PoE还是非常简单直接的,在此对我的学习进行总结,如有错误欢迎指出。2.指数积公式建立过程在使用PoE建立正运动学模型时,我们需要获得以下参数:建立基坐标系(惯性系)和末端坐标系写出初始时刻的末端坐标系相对于惯性系的位姿MMM写出各个关节的运动旋量,即SSS,内含单位角速度和原点线速度,可以参
2020-08-22 00:20:32
4988
原创 【机器人】刚体运动的指数坐标表达学习心得与理解
刚体运动的指数坐标表达学习心得与理解1.前言2.运动旋量3.运动旋量的螺旋解释1.前言上一篇文章对旋转的指数坐标表示进行了总结,也就是旋转矩阵和指数坐标之间的关系。今天准备写一下包括旋转和平移内容的刚体运动的指数坐标表达学习心得和对其的理解。如有问题,欢迎留言。2.运动旋量运动旋量也被称为“空间速度”,当然前提都是要有个参考坐标系。对于一个4×44\times44×4的表示{b}\{b\}{b}相对于{s}\{s\}{s}齐次变换矩阵sTb=[R(t)p(t)01]^sT_b=\left[ \
2020-08-20 20:55:11
2280
2
原创 【机器人】转动的指数坐标表示心得理解
转动的指数坐标表示心得理解1.前言2.指数坐标表示旋转矩阵3.原理推导4.矩阵对数、矩阵指数1.前言最近因为项目需求,又学习了一点机器人学的东西,参考书籍为《现代机器人学》,该书采用指数坐标、旋量的方式来对机器人进行描述和运动学、动力学建模,让我对机器人有了更深的理解,也是弥补DH参数建模复杂的缺陷,虽然DH法只用4个参数,而旋量需要更多,但是它骚啊!本文是我学习了转动的指数坐标表示的一个心得体会,如有问题请多多包涵。2.指数坐标表示旋转矩阵指数坐标可以用来表示求解旋转矩阵,其原理非常简单巧妙,需
2020-08-19 21:45:08
2129
4
原创 【机器人】永磁同步电机PMSM电流滞环控制理解
1.前言最近学习了一下永磁同步电动机PMSM,进入了控制方面的学习,首先是对电流滞环控制进行了学习、仿真,记录一下学习心得体会,以及个人的理解。2.控制原理引用一张来自袁雷的《现代永磁同步电机控制原理及Matlab仿真》书中所绘制的滞环电流控制框图滞环控制结构非常简单,只需要从PMSM反馈回转速和三相电流信息即可。目的是变频,实现变速。首先,为了解耦方便,将d轴电流的期望设为0,再将反馈回来的转数和给定转数相比较,通过一个PI控制器(此处应该也可以使用滑模控制器等控制器),将控制器输
2020-08-03 16:48:20
4836
7
原创 【机器人】欧拉角,四元数,我的个人理解
1.前言熬过了毕业设计,难逃提前到导师实验室打工噩运。导师最近又让我去了解一下四旋翼,以后可能会搞四旋翼挂个机械臂的东西……四旋翼建模看的朦朦胧胧的,突然被以前做机械臂时忽略了的刚体旋转给绕昏了,今天似乎懂了一些欧拉角和四元数的东西,特此记录一下,注意,本文仅为我自己的理解,可能会有错误,仅供参考,欢迎留言讨论。2.欧拉角欧拉角的定义网上有很多文章,无非就是分别绕一个三维坐标(多数是固定在刚体上的坐标系)各轴依次旋转,顺序各种排列组合,比如XYZ、ZYZ、ZYX等,这都不是什么重点,重点是,在进
2020-06-17 00:19:52
5208
原创 【机器人】基于向量积法的雅可比矩阵求解和应用
1.前言最近在做轨迹规划控制,没错,是控制,导师让新加到毕设上的。搞了一周,今天总算是出来了,这里写一下总结一下雅可比矩阵的求解和控制的思路(控制算法不再赘述,太基础了)。本文以末端关节坐标系为工具坐标系,即工具大小为0,如果有工具大小要求,则直接修改即可,不再赘述2.基于向量积法的雅可比矩阵求解这个方法网上资料、文献已经讲烂了,对于六关节机械臂,其雅可比矩阵的第n列可表示为...
2020-04-22 20:15:13
3461
原创 【Matlab】通过m文件控制simulnk模型进行仿真
1.前言为了测试控制算法对系统不同初始状态的收敛情况,我准备通过设置不同的初始状态,使用for循环,循环进行仿真,获取系统收敛情况,因此需要使用m文件来推simulink进行控制和传递参数。2.方法2.1 修改S-Function,增加外部参数我的控制系统是由控制算法S-Function文件和控制模型S-Function文件构成,控制算法中使用了系统的初始状态来进行有限时间控制,...
2020-04-13 21:17:47
5742
原创 【机器人】滑模控制器调试心得
1.前言本心得毫无理论依据,只是说调了这么久了,发现这样调效果还不错,仅供参考,更多的只是一个学习记录。2.心得Simulink Solver设置之前使用的solver是固定步长的ode4,速度很慢,且有时候有计算结果迷幻跳跃,今天(2020.03.17)改为变步长的ode23tb,我也不知道为什么,仿真速度快了很多,且结果比较准确。是时候去学一下这些微分方程算法的原理了!控制...
2020-03-17 10:53:13
7080
9
原创 【Matlab】SimMechanics机械臂建模流程
1.前言最近做毕业设计使用了SimMechanics进行机械臂的建模仿真,网上资料也比较少,当然官方的文档才是最香的:https://ww2.mathworks.cn/help/physmod/sm/rigid-bodies-1.html?s_tid=CRUX_lftnav自己摸爬滚打后,终于成功实现了建模并和S-Function写的控制算法一起仿真成功。这里记录一下自己的使用流程。M...
2020-03-12 18:20:14
5201
14
原创 【机器人】变换矩阵理解
搞了一段时间了,对变换矩阵还是有点晕乎乎的,今天理解了一下变换矩阵,写篇博客记录一下。1.相对性表示将2坐标系中的坐标位置转换到1坐标系中,而该矩阵的参数使用的是从1中观察到的2相对与1的变换。如在2坐标系中有个点R(1, 1, 1),2坐标系为1坐标系绕X轴正方向旋转90°得到,则将1中的坐标转换到2中的变换矩阵为该点在1中的坐标则为若要倒推回去,则乘上变换矩阵的逆即可。...
2020-03-10 19:10:11
2089
原创 【Adams】Adams机械臂简单仿真
1.导入模型将机械臂的装配体文件用SW导出.x_t文件,然后直接导入到Adams即可2.添加运动副固定副:将两个部件固定到一起转动副:两个部件可以产生相对转动3.添加驱动/力矩旋转驱动:给转动副驱动力,直接控制转动副的转动速度作用力矩(单向):给转动副力矩,让其受力直接转动4.踩坑仿真报错:incompatible redundant constraints p...
2020-01-16 16:54:32
9255
2
原创 【C++】VS Code配置C++编译调试环境
1.前言不得不说,C++在Windows环境下写也挺爽的,不过VS一个工程就40+MB起步,不爽,所以配置了VS Code,照着网上的改了半天都不行,最后发现,VS Code可以自动生成……2.方法2.1.建立一个工作空间,以实现配置复用直接:文件-文件夹添加到工作区2.2.创建.vscode文件夹,用来存放配置文件2.3.在.vscode文件夹中新建C++配置文件c_...
2019-12-18 17:17:19
588
2
原创 【LeetCode】买卖股票的最佳时机
1.题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5...
2019-12-14 22:11:28
163
1
原创 【LeetCode】栈解决有效的括号
1.题目给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输...
2019-12-14 20:20:58
168
原创 【机器人】线性方程最小二乘解法对机械臂DH参数进行标定
1.前言看了一篇文章,觉得里面的DH参数标定法讲的很清晰,便使用Matlab复现了一下,效果还可以,特写此文记录。2.原理2.1.误差最佳值的最小二乘计算有研究结果表明:几乎95%的机器人位置误差都是由机器人内部运动学的不准确描述引起的,所以对DH模型参数进行标定是很有必要的。DH参数物理含义:选自《机器人学、机器视觉与控制-Matlab基础》当DH参数确定后,我们...
2019-12-10 20:16:06
10031
33
原创 【LeetCode】从排序数组中删除重复项
1.前言学完了数据结构,大概明白了是怎么一回事了,也会了一些C++的基础操作了,是时候做做leetcode练练手了,先从初级算法题做起吧!2.问题描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [...
2019-12-08 22:34:58
126
1
原创 【C++】ifndef和gdb简单杂谈
1.前言这篇文章是将我在编写排序算法时遇到的一些比较有用的问题的解决方法记录下来。2.初探main函数参数的含义int main(int argc, char const *argv[])argv[0]存放了可执行程序的位置, argv[]有argc个,,argc默认为1;argc程序时传递给main()函数的命令行参数个数3.防止头文件重复引用导致重复定义报错当我们头文件...
2019-12-03 21:38:31
219
原创 【C++】二叉树的创建和遍历
1.前言二叉树是一个双亲结点只有两个孩子结点,其遍历方法主要有:前序遍历:根左右中序遍历:左根右后序遍历:左右根2.代码2.1.二叉树的建立struct BiT_node{ int data; struct BiT_node *lchild; //定义左右孩子指针 struct BiT_node *rchild;};void CreatBinaryT...
2019-12-03 11:17:40
571
原创 【C++】循环队列的基础操作
1.前言队列是一种线性表,只允许在一端输出,另一端输入,也就是“先进先出”。循环队列则可以非常灵活的输入输出。2.代码2.1.队列初始化#define MAXSIZE 5struct my_queue{ int data[MAXSIZE]; int front = 0; int rear = 0;};其中,front是头位置,rear是尾位置,本程序采用如下的数...
2019-11-30 18:41:25
443
原创 【C++】栈的基本操作
1.前言栈的概念还是比较清楚的,先进后出,有个指向当前栈位置的指针,到了栈顶就不能存了,用C++实现了一下基础的创建栈和push、pop操作2.代码2.1.栈的操作#include <iostream>using namespace std;#define MAXSIZE 20struct my_stack{ int data[MAXSIZE]; in...
2019-11-28 18:36:29
1668
原创 【C++】单链表的创建、插入、删除
1.前言最近没啥心情搞机器人,一直在仿真,输了呀。索性搞搞C++算法。虽然大二的时候学过数据结构,但是上的太水了。。。不过基本概念还是很清楚,所以就简单的用程序实现一下吧,顺便学习了:struct结构体还有指针的应用2.代码实现首先定义结构体Node,来为每个结点定义,我理解的结构体为一种新的数据类型,相当于int、double这种,只不过该数据类型里面又有很多小的数据,不知道...
2019-11-24 23:39:32
879
原创 【Matlab】简单的滑模控制程序及Simulink仿真
1.前言最近开始了对滑模控制的学习,使用的书籍为刘金琨的《滑膜变结构控制MATLAB仿真》,今天是按照书上的例程做了一个简单的自适应控制系统。2.程序解析此程序中,电机控制系统的动态模型为:,其中,θ为电机的角位置,J为转动惯量,d(t)为干扰且满足,η为干扰上界,为角位置跟踪误差定义跟踪误差函数,也就是滑模面函数s为:,当s=0时,有e和edot都为0,且是按照指数收敛:...
2019-11-17 23:30:35
43249
26
原创 【C++】RPY角度转为四元数程序
1.前言在使用ROS moveit进行自定义轨迹规划时,末端位姿的角度需要使用四元数表达,四元数具有更高的计算效率,而我觉得RPY角度能够更加直观的反应出末端角度信息,故编写了这个小程序,同时也巩固了我对C++类的编程。转换所用算法:https://blog.youkuaiyun.com/fantasysolo/article/details/80758319目前测试都是正确的2.代码#...
2019-11-08 23:31:33
1895
1
原创 【Linux】以防不测,记录一下当前Ubuntu安装了哪些软件
1.前言昨天发现,根目录只剩3.2GB了,虽然感觉不会再安装什么东西了,应该可以顶一顶,但是还是害怕万一哪天重装了或者扩容翻车了,故写文记录一下当前我的Ubuntu安装了什么软件。2.软件列表和设置等2.1.锐捷客户端和截图设置见我的博客https://blog.youkuaiyun.com/sinat_38887014/article/details/1025381592.2.ROS m...
2019-11-08 20:54:33
141
原创 【ROS】使用C++编写简单moveit终态位姿控制以及position数据可视化
1.前言这几天主要还是在研究用C++编写moveit target pose的例程,中途出现了各种问题,一度怀疑人生,好在现在也算是磕磕碰碰的解决了一点……虽然还是不知道why,不过也是增强了继续学习的信心。困扰最久的问题是经常出现逆运动学解算结果只有平移,没有旋转,首先,target pose的设置存在一定问题,其次,默认的KDL解算插件确实不给力!后来参考古月大神的解算插件配置,改为T...
2019-11-07 22:35:32
2599
1
原创 【ROS】使用urdf建立粗糙的机械臂模型
代码地址:https://github.com/SCUPRISCILLA/My_ROS_Package/tree/master/crp09模型为卡诺普公司CRP-RA09-06,使用urdf简单的建立个模型,以便后继学习ROS使用,模型细节不是重点,主要是为了熟悉urdf建模。代码为:<?xml version="1.0"?><robot name="crp0...
2019-11-04 14:08:26
946
原创 【Linux】踩小坑---Ubuntu18.04合盖挂起无法唤醒
本文是参考网上使用laptop-mode的解决方法,正在测试中,目前可以解决挂起无法唤醒问题。1.安装laptop-modesudo apt-get install laptop-mode-tools使用cat /proc/sys/vm/laptop_mode命令查看当前laptop-mode情况,若为0,则说明没开启2.修改配置文件要使用sudosudo gedit ...
2019-11-03 23:51:12
1059
2
原创 【Matlab】使用Level 1MS编写PID控制关节的S-Function
我太难了………………干啥啥不行1.PID控制器设计代码如下:function [sys,x0,str,ts,simStateCompliance] = my_pid_ctrl(t,x,u,flag,Kp,Kd)switch flag,case 0,[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;case 1,sys...
2019-10-31 14:57:20
1898
1
原创 【Matlab】使用C语言编写简单S-Function
功能描述:实现一个双输入,双输出,使用两个参数,使得输出为:y1 = para1 * u1 + 5y2 = para2 * u2 + 3代码如下:#define S_FUNCTION_NAME test#define S_FUNCTION_LEVEL 2#define INPUT_NUM 2#define OUTPUT_NUM 2#include <stdi...
2019-10-29 15:10:47
6579
3
原创 【ROS踩坑】catkin创建的package为什么用不起了?
当我按照ROS tutorials使用catkin创建一个名为‘beginner_tutorials’的新程序包后,重启roscore后便会出现:这是为什么呢?该怎么解决呢?明明照着教程创建的,之前还好好的。解决方法:每次启动roscore后,都要重新source运行一下工作空间中devel文件夹下的setup.sh...
2019-10-18 16:27:07
1547
原创 【ROS】ROS基础知识整理
在安装好ROS后,我便开始了ROS的学习,主要是按照官方tutorials学习。整理了一下学习到的ROS基础知识,包括ROS节点、ROS话题、ROS服务和ROS参数。大体所用命令如下:(无视试用版xmind...)********************每次使用ROS都要先运行:roscore**********************1.ROS节点,rosnode在ROS中的节点...
2019-10-18 11:11:45
620
原创 【Linux】ubuntu锐捷客户端连接四川大学校园网
折腾了一个小时,终于登上校园网了,写博客记录一下过程,以便自己以后查阅,希望能够为SCU有需要的同学提供帮助。为了方便使用ubuntu自带的截图软件,我先设置了快捷键来方便使用,截图会自动保存到图片文件夹:下载锐捷客户端Linux版本,此项自行百度解压后为rjsupplicant文件夹,可以将文件夹重命名为一个简单的名字,方便自己cd,我改为rjnet开始踩着坑联网!...
2019-10-13 21:39:12
2361
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人