个人学习笔记
Tom13a
执着的机械臂研究者,对技术有较高热忱。
展开
-
dawa e1.0版本使用说明
dawa e1.0 是一个六轴机械臂控制核心系统,可以用来构建机械臂控制手柄,它通过串口UART0接收用户指令,运算后在UART1输出六轴角度(或者多组六轴角度构成的序列)。另一种是简单指示指令,比如指示末端向前移动,则可以用单个字符来区分。原创 2024-07-10 15:27:00 · 1001 阅读 · 0 评论 -
关于g++编译器针对动态链接库与主程序存在同名变量问题的处理方式的质疑
我们会发现,ood 在库文件里面被定义,为double 在程序main里面被定义为float ,不但可以并行,还能共用同一段内存。在linux平台下,使用g++编译器编写一个动态链接库。发现编译器对于库文件和主程序中的同名变量处理有不合理的地方。笔者认为,为了防止混淆,在主程序编译阶段,编译器应该要么报同名错误,要么干脆将两个ood变量隔离使用。编译完成后,生成一个libr6.so 放置到/usr/lib 下面。这样将两个变量放在一个内存里,视其为同一个变量,是不科学的。编译通过,没有报错也没有报警。原创 2022-10-29 12:52:42 · 264 阅读 · 2 评论 -
linux下使用c++多态和虚函数的一个例子
/* * duotai.cpp * * Created on: 2021年7月18日 * Author: tom */#include <stdio.h>#include <math.h>#include <stdlib.h>#include <iostream>#include <unistd.h>using namespace std;class c1{public : virtual vo原创 2021-06-19 06:43:25 · 278 阅读 · 0 评论 -
六轴机械臂控制库dawa校园版本使用指南:
一、dawa校园版本基于ubuntu操作系统,控制目标为ABB型机械臂,该版本为c++编写,主要文件有r6a.h libdawa.so校园版本系免费对外发布,适用于各类科研机构和个人研究者进行机械臂控制的辅助研究。二、库应用框架的输入输出模式:建立机械臂的派生对象r6a,并运行r6a.assist_Thread()方法以后,系统处于等待输入的指令的状态,并在一个数组thetas[]里面反映出来计算结果。 数组数据是“动态播放”的。例如,输入一条前进指令...转载 2021-06-19 08:45:16 · 1799 阅读 · 8 评论 -
c/c++vector的clear()的小秘密
笔者经过实验发现,当我们使用clear();来清空一个vector时,内存里原来存储的那些数据都在,没有被删除,如果指定位置取数,还可以输出。但是用size();来查看,发现清空后,size()变成了0;也就是说,其实系统只是把 vector的长度记录改了,当我们再push_back的时候,vector从第一个位置开始存放数据。#include <vector>#include <iostream>vector<double> xl;int main()原创 2021-05-11 16:09:37 · 883 阅读 · 0 评论 -
linux下生成可执行文件注意事项
在有些版本的默认设置中,gcc/g++参数记得加上-no-pie。否则生成的文件是鼠标无法打开的,查看属性显示“共享库 (application/x-sharedlib)”这时可以用命令行打开程序,但不能在窗口模式下用鼠标点击打开。...原创 2021-03-09 18:12:57 · 877 阅读 · 2 评论 -
c++ 多维vector内存占用问题分析
当我们需要长度不定的容器时,vector是一个不错的选择,它可以存储单维度的不定个数的数据,也可以叠加维度,实现不定长的二维甚至多维数组的功能。比如使用vector<vector<double>>就可以定义二维的vector容器。vector容器的特性是在被定义的时候,它就会自动预留16个存储空间,在二维的情况下,如果让他存储double数据,它最少的内存空间需求就是81616=2592 Byte(一个double是8个Byte)如果是3维的vectorvector<v原创 2020-11-17 17:00:24 · 3217 阅读 · 2 评论 -
c/c++读写txt文件一例
近期在使用c/c++读写机械臂设置信息时,发现网上找到的例程大部分都使用fscanf()fopen()函数而不是用的fscanf_s()fopen_s()VS2019编译器因此有安全有错误提示,于是我进行了修改测试,下面是源码,实测可用:#include<stdio.h>#include<iostream>// By Tom Gong using namespace std;void readfile(void){ FILE* stream;原创 2020-07-18 13:37:31 · 241 阅读 · 0 评论 -
使用vrep仿真所需要的库
RAA 用户在使用例程2 进行vrep仿真时,需要安装一个vrep的库,这个库用pip不能下载的,可以 给我发邮件索取,发送至 gongal@163.com不是RAA用户也可以找我索取,没问题。收到文件后,解压,放置到 类似下面路径的位置:E:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Lib,也可以放到其它位置,在编译器里指定好,让程序能找到即可。...原创 2020-06-26 20:37:43 · 366 阅读 · 0 评论 -
使用c++ 遇到的一个小坑
当我使用vs2019编译器 做c++代码时,搭建好环境后,从网上下载了一个程序,运行无误,但当我想在程序里加上socket模块时,出现奇怪的波浪线报错:c++包含引起的错误 头停止点不能位于链接块中,我按照网上的办法先如下操作:工具–选项–文本编辑器–C/C++–高级–禁用IntelliSence–True仍然不能解决问题。后来根据提示仔细查找winsock2.h这个文件,发现其第101行,莫名其妙多了一个"{",我果断删除了它,居然就都ok了。为何标准头文件里会有多一个半边大括弧的问题?费解。原创 2020-06-25 13:58:19 · 432 阅读 · 0 评论 -
RAA1.00a多轴机械臂算法机软件发布
RAA1.00a多轴机械臂算法机软件发布多轴机械臂正逆解是一个复杂程度固定,所需数学知识面较为固定的有一定难度的数学题。业界已经有一些系统能帮人们算出正逆解了,只是在使用方便程度上有所差异,在路径规划的方便性和奇异解等问题的解决上还有可以提高的空间。另外,软件作者对机器人运动学和动力学的应用侧重方面有自己的一些见解,本软件也是作者“更多的依赖运动学,更少的借助动力学”理念的一种表达,作者将机械...原创 2020-05-06 14:47:04 · 520 阅读 · 0 评论 -
数组切片插接处理笔记
以下记录数组切片中的几个常用办法point_orientation1=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])point_orientation2=np.array([[1,5,8,4],[5,3,7,8],[9,18,11,12],[13,14,15,16]])ltpart1=point_orientation1...原创 2019-11-27 09:24:52 · 246 阅读 · 0 评论 -
克服奇异解的演示视频
通过算法调整细化,六轴机械臂的奇异解可以被平滑的路过。因而机械臂路径规划者可以不用再被被奇异点问题所困扰,并刻意规避奇异点。我们都知道,UR机械臂在5轴为0的时候,是奇异点位,路过这样的点位,机械臂关节容易出现剧烈抖动。下面的链接,以UR5机械臂为模型进行仿真视频,让其末端路过一条由奇异点构成的圆形路径,并平滑通过:https://v.youku.com/v_show/id_XNDQ0NTU...原创 2019-11-23 13:48:57 · 594 阅读 · 6 评论 -
UR机械臂的“运动性奇异”
In order to avoid the conventional singular points of some spherical wrist manipulators, the UR's mechanical arms do have fewer conventional singular positions by having a peculiar body construct. But the price is not very low, It is that when these poses原创 2019-10-31 08:32:49 · 5798 阅读 · 4 评论 -
机械臂实时控制仿真演示
在下面的视频链接中,展示了在v-rep仿真软件平台上使用api接口,用python程序中通过键盘按键对仿真对象进行控制的过程:先是上下左右前后运动,再就是各方向上的扭转运动。https://v.youku.com/v_show/id_XNDQxODQ5NjA5Ng==.html?spm=a2hzp.8244740.0.0...原创 2019-10-30 11:16:12 · 1716 阅读 · 0 评论 -
两块arduino板子的iic通信代码
两块arduino板子的iic通信代码,不是我的原创,我测试过比较好用。原创 2019-10-05 08:43:08 · 1459 阅读 · 0 评论 -
一次艰苦的串口通信尝试--pc端的python vs. arduino
上位机的pc与下位机arduino进行数据通信,如下为我写的代码,实测可用:硬件:win7上位机,arduino uno,arduino usb连接线。上位机代码:# 作者 Tom13a gongal@163.comimport serialimport structimport timeimport numpy as npser = serial.Serial('com7'...原创 2019-06-29 16:48:09 · 1433 阅读 · 0 评论 -
实测发现python的numpy.round()函数有bug,只好自写函数代替它
代码如下,仅用于4*4矩阵:#define round function for matrix ,author‘s mailbox: gongal@163.com :import numpy as npfrom numpy import *;import mathdef roundt(A,a): B=array(A) for i in range(0,4): for...原创 2019-06-12 11:44:16 · 1718 阅读 · 0 评论 -
庆祝完成ur机器臂的八组逆解
经过一段时间的努力和纠错,终于把ur机器臂正逆运动学求解代码全部拿下。没有借助ros和任何机器人库。完全原创。中间有一个第五轴角度负值不能求逆解的问题,成为最大的一个bug,最后自己拿pvc管子制作了一个模型,才发现其中原理,补足第六角的玉值,一切都ok了。非常有成就感。...原创 2019-07-23 14:44:04 · 2783 阅读 · 20 评论 -
Python如何从矩阵中读写单个元素的值
为了给矩阵某一个元素的值进行提取,我从网上找过一些办法,但都不是很全面,经过学习试验发现如下规律:1.一个矩阵如果用numpy.eye(),或者列举的方法赋值,那么可以用如下方法进行取值和赋值:from numpy import *k1=eye(7)j=k1[1][2]j0.02.也可以反向赋值,给矩阵里的元素赋值:>>> from numpy imp...原创 2019-06-10 12:39:40 · 17163 阅读 · 0 评论 -
DH坐标系的建立笔记
https://www.cnblogs.com/mightycode/p/9095059.html如上这篇文章用于学习DH坐标系建立,非常不错,推荐初学者阅读。在此建立笔记如下:1.坐标系的建立隐含原则:文章右上方的草图,即为各伺服电机的初始位置,也就是 theta=0的位置。 我经过反复调测,得到这个结论。2.实际调试中,应该会对伺服电机的正负转向予以定义,用于适应开始建立的这个模型。...原创 2019-06-09 09:18:39 · 1892 阅读 · 0 评论 -
逆解常用公式(转自itfanr)
转载 2019-07-29 06:21:42 · 365 阅读 · 0 评论 -
一个矩阵代数分析的辅助程序
人们在处理机械臂关节矩阵时,需要大量的手工相乘代数运算。 由于是推导公式,而不是进行数值计算,计算机不能直接参与协助。由于推导过程中,有大量的多项式代数相乘,手工抄写极易出错。笔者于是想通过python程序来协助完成部分任务。于是完成了如下程序,改程序能实现两个代数4*4矩阵的乘法。本程序有参考网络上defias的程序语法,在此对defias表示感谢。import xlrdimport...原创 2019-07-28 18:28:39 · 381 阅读 · 0 评论 -
计算速度对比:python vs. c语言程序
完成机械臂算法从python到c的移植以后,我把python和c代码的运算速度做了一个大致比较,结果如下:python加载10000次正逆运算,需要11秒左右,如果只做逆运算10000次,9秒左右。c语言代码就快多了,加载10000次正逆运算,需要一秒左右。作为上位机,其实两者算力都够用了。因为即便python完成一次逆运算,只需要0.1ms,这已经相当不错了。...原创 2019-10-02 18:28:59 · 2165 阅读 · 1 评论 -
空间路径规划初探(画空间内任意平面上的圆)
如下程序,通过修改前面的向量描述、圆心坐标和半径值,可以做出空间内任何圆的插值点。#Authered by Tom Gong gongal@163.com import numpy as np import math # 所在平面的任意两个正交向量描述 nx=1 ny=0 nz=0 ox=0 oy=0 oz=1 ...原创 2019-09-12 13:11:17 · 1297 阅读 · 0 评论 -
Strength and precision---An imaginery of a new type of Robot-Arm
Huge power and great precision is a paradox in a Robot, just like different kinds of weighing instruments, those to weigh jeweleries and those used to weigh a vehicle definitely have the same order of...原创 2019-09-03 11:34:01 · 326 阅读 · 0 评论 -
征集难于处理的机械臂奇异点位
目前,经过折腾机械臂正逆算法几个月,恍恍惚惚觉得有一些解决逆运动学算法的心得了,想挑战一下奇异点算法。只使用矩阵推导的办法,确实有无解的点,但是如果我们结合空间几何呢? 手上有奇异点的网友,希望我们一起研究,共同进步。...原创 2019-08-24 10:06:44 · 1732 阅读 · 0 评论 -
关于VS+openCV环境下debug和release切换的问题
我的vs版本是2019,opencv版本是4.1.0新手使用vs+openCV,在设置编程环境时,网上有大把的debug模式,一步一步跟着那些文档走,我们可以设置好一个debug方式的“本地windows调试器”,然而,如果你想把生成的可执行文件交给其它电脑运行时,可能需要你做出release版本的可执行文件集。根据我的亲测,需要把属性管理器中release|64下新建一个属性项目表,然后右键...原创 2019-06-02 12:06:45 · 1889 阅读 · 0 评论