- 博客(76)
- 资源 (2)
- 收藏
- 关注
原创 函数指针,函数指针数组,函数指针数组指针实例
实例1:#include<stdio.h>void fun1(void){ printf("call fun1\n");}void fun2(void){ printf("call fun2\n");}void main(void){ void(*pf1)(void); //定义函数指针变量 void(*pf2)(void); pf1 = fun1; //函数指针变量赋值(方式1) pf2 = &fun2; //函数指针变量赋值(方
2020-11-23 22:34:10
381
原创 最小包围球(附完整代码)
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定空间不共线的三个点A,B,CA,B,CA,B,C,推导空间有向圆弧路径ABCABCABC关于路径标量s(s∈[0,1])s(s\in[0,1])s(s∈[0,1])的参数方程。 二、推导步骤 假设点OOO为圆弧ABCABCABC的圆心,如图,建立局部坐标系{X′OY′}\{X'OY'\}{X′OY′}。连结ABABAB、BCBCBC,过点OOO作平面nnn垂直平分于线段ABABAB于点DDD,过点OOO作平面mmm垂直平分
2020-11-03 22:56:48
2493
9
原创 任意四面体的外接球/三维空间不共面四点确定唯一球面(附完整代码)
给定三维空间不共面的四个点A,B,C,D,求由此四点确定的球面方程(x-x_0)^2+(y-y_0)^2+(z-z_0)^2=R^2。
2020-11-01 21:43:17
5711
原创 空间圆弧路径参数化
文章目录一、问题描述二、推导步骤一、问题描述 给定空间不共线的三个点A,B,CA,B,CA,B,C,推导空间有向圆弧路径ABCABCABC关于s(s∈[0,1])s(s\in[0,1])s(s∈[0,1])的参数方程。二、推导步骤 假设点OOO为圆弧ABCABCABC的圆心,如图,建立局部坐标系{X′OY′}\{X'OY'\}{X′OY′}。连结ABABAB、BCBCBC,过点OOO作平面nnn垂直平分于线段ABABAB于点DDD,过点OOO作平面mmm垂直平分于线段BCBCBC于点EEE。平面
2020-10-28 22:08:56
3857
6
原创 最小覆盖圆(附完整代码)
文章目录一、推导步骤1、方法12、方法2二、实例(以SCARA机器人逆解为例) 在推导机器人运动学逆解的解析解时,经常会遇到以下三角方程:k1sin(θ)+k2cos(θ)=k3(1)k_1sin(\theta)+k_2cos(\theta)=k_3 \tag{1}k1sin(θ)+k2cos(θ)=k3(1) 求解以上三角方程的解析解对运动学逆解的推导过程至关重要。下面采用两种方法进行推导。一、推导步骤1、方法1 式(1)联立以下三角恒等式:sin2(θ)+cos2(θ)=
2020-10-22 23:12:45
4786
1
原创 将一个数组随机排列(完整代码)
--[[-----------------------Function: get_random_arrayDescription: 将数组随机排列Input: 数组a,数组起始索引startIndex,结束索引endIndexOutput: 随机排列后数组Author: Marc Pony(marc_pony@163.com)--]]------------------------function get_random_array(array, startIndex, endIndex) l
2020-10-20 22:55:55
729
原创 c语言关键字之register
register关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。 使用register修饰符有几点限制: (1)因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。void main(){ register int a = 0; int *p = &a; //错误} (2)只有局部自动变量和形式参数可以作为寄存器变量,其它(如全局变量、结构体、共用体内部变量)不行。特别地,静态局部
2020-09-12 22:10:09
1261
原创 模型误差、观测误差、截断误差(或称方法误差)、舍入误差
文章目录1.模型误差2.观测误差3.截断误差(或称方法误差)4.舍入误差 用计算机来解决科学计算问题的过程中,主要需考虑四种误差:模型误差、观测误差、截断误差(或称方法误差)、舍入误差。1.模型误差 用计算机解决科学计算问题首先要建立数学模型,它是对被描述的实际问题进行抽象、简化而得到的,因而是近似的。我们把数学模型与实际问题之间出现的这种误差称为模型误差。(by《数值分析(第四版)》) 例如,在辨识机器人动力学参数时,机器人关节的摩擦力/力矩模型通常近似为一阶模型:,将动力学方程线性化之后,
2020-09-11 22:58:56
18939
原创 c语言关键字之auto
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定n+1n+1n+1个点序列(ti,pi)(t_i,p_i)(ti,pi),利用分段七次多项式插值,使得分段多项式经过所有点序列。其中,tit_iti必须单调递增,i=0,1,...,ni=0,1,...,ni=0,1,...,n。二、推导步骤 起点处一阶导数估计:v0=(p1−p0)/(t1−t0)(1)v_0=(p_1-p_0)/(t_1-t_0)\tag 1v0=(p1−p0)/(t1−t0)(1)
2020-09-10 23:21:45
23741
原创 三次样条拟合(附完整代码)
文章目录一、给定起始速度v0v_0v0与结束速度vnv_nvn二、起始位置q0q_0q0与结束位置qnq_nqn相等(数据需满足的特性,非约束条件),起始速度v0v_0v0与结束速度vnv_nvn相等,起始加速度a0a_0a0与结束加速度ana_nan相等(周期三次样条)三、给定起始速度v0v_0v0、结束速度vnv_nvn、起始加速度a0a_0a0、结束加速度ana_nan四、参考文献 给定n+1n+1n+1个点(ti,qi),i=0,1,...,n(t_i,q_i),i=0,
2020-08-15 23:23:16
11851
8
原创 三次样条插值(附完整代码)
文章目录一、三次样条插值1、指定起始速度vsv_svs与结束速度vev_eve2、起始速度与结束速度相等,起始加速度与加结束速度相等(周期三次样条)二、实例(以SCARA机器人逆解为例)一、三次样条插值1、指定起始速度vsv_svs与结束速度vev_eve%{Function: solve_tridiagonal_matrix_equationDescription: 求解三对角矩阵方程A(a, b, c) * x = dInput: 三对角线向量a,b,c, 向量d,向量维数nOut
2020-07-30 23:29:39
7458
6
原创 三对角方程与循环三对角方程数值解(附完整代码)
文章目录一、三对角方程数值解(Thomas algorithm或称“追赶法”)二、循环三对角方程数值解(Sherman-Morrison formula)三、参考文献一、三对角方程数值解(Thomas algorithm或称“追赶法”)%{Function: solve_tridiagonal_matrix_equationDescription: 求解三对角矩阵方程A(a, b, c) * x = dInput: 三对角线向量a,b,c, 向量d,向量维数nOutput: 三对角矩阵方程的
2020-07-06 23:20:20
3171
原创 正交多项式曲线拟合(MATLAB代码)
文章目录一、 正交多项式曲线拟合1.曲线不经过起点与终点2.曲线经过起点与终点二、参考文献一、 正交多项式曲线拟合1.曲线不经过起点与终点2.曲线经过起点与终点二、参考文献Trajectory Planning for Automatic Machines and Robots中章节:4.2 Orthogonal Polynomials...
2020-06-22 20:58:43
6292
1
原创 摆线/三次多项式过渡的匀加速度轨迹(Trajectories with Constant Acceleration and Cycloidal/Cubic Blends)
文章目录一、 Constraints on the velocity profile二、Constraints on the acceleration profile三、Minimum-time trajectories四、参考文献一、 Constraints on the velocity profileclc;clear;close all;t = [0, 1, 2, 3, 4, 6, 7, 8, 12]'; %单调递增时间序列v = [0, 1, 1, 2, 2, -3, -3, 0,
2020-06-13 22:42:44
978
原创 摆线/谐波过渡的匀速/匀加速度轨迹(Constant Velocity/Acceleration Trajectories with Cycloidal or Harmonic Blends)
文章目录一、 Constraints on the velocity profile二、Constraints on the acceleration profile三、Minimum-time trajectories四、参考文献一、 Constraints on the velocity profileclc;clear;close all;t = [0, 1, 2, 3, 4, 6, 7, 8, 12]'; %单调递增时间序列v = [0, 1, 1, 2, 2, -3, -3, 0,
2020-06-13 17:17:44
691
原创 五次多项式过渡的直线轨迹(Linear Trajectory with Polynomial Blends)
文章目录一、 经过所有中间点(MATLAB代码)二、 靠近但不经过所有中间点(MATLAB代码)三、参考文献一、 经过所有中间点(MATLAB代码)clc;clear;close all;%{syms ts te ps pe vs ve as ae T real;a = [1, 0, 0, 0, 0, 0 0, 1, 0, 0, 0, 0 0, 0, 2, 0, 0, 0 1, T, T^2, T^3, T^4, T^5 0, 1, 2*T, 3*T^2, 4
2020-06-07 23:19:59
1722
原创 分段七次多项式插值(MATLAB实现)
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定n+1n+1n+1个点序列(ti,pi)(t_i,p_i)(ti,pi),利用分段七次多项式插值,使得分段多项式经过所有点序列。其中,tit_iti必须单调递增,i=0,1,...,ni=0,1,...,ni=0,1,...,n。二、推导步骤 起点处一阶导数估计:v0=(p1−p0)/(t1−t0)(1)v_0=(p_1-p_0)/(t_1-t_0)\tag 1v0=(p1−p0)/(t1−t0)(1)
2020-06-06 14:40:49
2971
原创 分段五次多项式插值(MATLAB实现)
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定n+1n+1n+1个点序列(ti,pi)(t_i,p_i)(ti,pi),利用分段五次多项式插值,使得分段多项式经过所有点序列。其中,tit_iti必须单调递增,i=0,1,...,ni=0,1,...,ni=0,1,...,n。二、推导步骤 起点处一阶导数估计:v0=(p1−p0)/(t1−t0)(1)v_0=(p_1-p_0)/(t_1-t_0)\tag 1v0=(p1−p0)/(t1−t0)(1)
2020-06-05 23:24:26
7522
5
原创 分段三次多项式插值(MATLAB实现)
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定n+1n+1n+1个点序列(ti,pi)(t_i,p_i)(ti,pi),利用分段三次多项式插值,使得分段多项式经过所有点序列。其中,tit_iti必须单调递增,i=0,1,...,ni=0,1,...,ni=0,1,...,n。二、推导步骤 起点处一阶导估计:v0=(p1−p0)/(t1−t0)(1)v_0=(p_1-p_0)/(t_1-t_0)\tag 1v0=(p1−p0)/(t1−t0)(1) 终
2020-06-04 23:07:22
6267
原创 4-3-4分段多项式插值(MATLAB实现)
%{Function: four_three_four_piecewise_polynomialDescription: 计算4-3-4分段多项式的系数Input: 向量t(递增序列), 向量p, 起始速度vs, 结束速度ve, 起始加速度as, 结束加速度ae, 向量维数nOutput: 4-3-4分段多项式的系数aAuthor: Marc Pony(marc_pony@163.com)%}function a = four_three_four_piecewise_polynomial(t
2020-05-30 11:10:22
3799
4
原创 快速傅里叶变换(FFT)c语言实现
快速傅里叶变换(FFT)c语言实现:(参考:FFT多种编程语言实现)。#include <stdio.h>#include <math.h>#include <stdlib.h>#define PI 3.14159265358979typedef struct Complex{ double real; double image;} CPLX;void _fft(CPLX buf[], CPLX out[], int n, int st
2020-05-23 23:34:16
8674
1
原创 采用梯形速度规划生成S形速度规划曲线(附代码)
文章目录一、问题描述二、MATLAB代码三、总结一、问题描述 梯形速度规划是最快也是最简单的速度规划方法。由于其速度连续但不平滑,加速度可控但会跳变,加加速度不可控,通常会引起受控对象震动,控制效果较差。S形速度规划由于其速度连续且平滑,加速度可控且连续,加加速度可控,控制效果好,广泛用于工业现场。但是,S形速度规划算法较复杂,在某些条件下,需要迭代计算进行规划,计算时间稍长。那么,有没有这...
2020-04-06 14:43:07
8658
9
原创 高性能数值计算编程小技巧(带实例,持续更新.......)
文章目录一、高性能高稳定性数值计算的程序设计技巧的例子1、乘法比除法运算速度更快,一般情况下,尽量用乘法代替除法2、某些情况下,需要用除法代替乘法以获得更高计算精度和稳定性,即使损失一定计算效率二、C代码二、scara机器人工具坐标(TCP)标定1、工具固定在小臂2、工具固定在末端一、高性能高稳定性数值计算的程序设计技巧的例子1、乘法比除法运算速度更快,一般情况下,尽量用乘法代替除法 a=...
2020-04-05 23:49:00
1098
原创 一元二次方程极简新解法
文章目录一、推导步骤二、总结三、参考文献一、推导步骤 已知一元二次方程ax2+bx+c=0(a≠0)ax^2 + bx + c = 0(a\neq0)ax2+bx+c=0(a=0),求方程的两根。初中时,我们学了一种求解一元二次方程根的方法——配方法,这里不再赘述。今天,讲解一种极简新解法,该方法是美国奥数总教头、卡耐基梅隆数学大学教授罗博深(Po-Shen Loh)于2019年12月1...
2020-03-12 23:14:55
1644
原创 归一化7次多项式速度规划
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定插补长度LLL,速度限制vlimv_{lim}vlim,加速度限制alima_{lim}alim,加加速度限制jlimj_{lim}jlim,计算总运动时间TTT,规划归一化7次多项式s(u)s(u)s(u) (u=t/Tu=t/Tu=t/T为归一化变量),使其满足以下条件:{s(0)=0s′(0)=0s′′(0)...
2020-03-09 22:10:24
2229
1
原创 归一化5次多项式速度规划
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定插补总长度LLL,速度限制vlimv_{lim}vlim,加速度限制alima_{lim}alim,计算总运动时间TTT,规划归一化5次多项式s(u)s(u)s(u) (u=t/Tu=t/Tu=t/T为归一化变量),使其满足以下条件:{s(0)=0s′(0)=0s′′(0)=0s(1)=1s′(1)=0s′′(1)=...
2020-03-07 21:51:40
5530
8
原创 归一化3次多项式速度规划
文章目录一、问题描述二、推导步骤三、MATLAB代码一、问题描述 给定插补总长度LLL,速度限制vlimv_{lim}vlim,计算总运动时间TTT,规划归一化3次多项式s(u)s(u)s(u) (u=t/Tu=t/Tu=t/T为归一化变量),使其满足以下条件:{s(0)=0s′(0)=0s(1)=1s′(1)=0(1)\begin{cases}s(0)=0 \\s'(0)=0 \...
2020-03-07 21:10:48
1730
原创 为什么机器人运动学逆解最好采用双变量反正切函数atan2而不用反正/余弦函数?
1.分析了机器人逆解采用atan2(y,x)的三点优势2.分析了atan2(y,x)的两个坑
2020-03-01 17:06:09
9157
5
原创 多项式求值(Evaluation of a Polynomial)
多项式求值(Evaluation of a Polynomial)你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。fasafaf新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你...
2020-02-29 23:02:57
2665
原创 一元四次方程高精度实数根(C语言)
文章目录一、问题描述二、CCC代码一、问题描述 已知一元四次方程ax4+bx3+cx2+dx+e=0(a≠0)ax^4 + bx^3 + cx^2+dx+e = 0(a\neq0)ax4+bx3+cx2+dx+e=0(a=0),求方程的实数根。笔者用C语言实现了费拉里法求解一元四次方程高精度的实数根。一元四次方程实数根求解过程会调用一元二次方程和一元三次方程高精度实数根的求解函数,参见另...
2020-02-29 17:51:08
5181
4
原创 一元三次方程高精度实数根(C语言)
文章目录一、问题描述二、CCC代码三、参考文献/资料一、问题描述 已知一元三次方程ax3+bx2+cx+d=0(a≠0)ax^3 + bx^2 + cx+d = 0(a\neq0)ax3+bx2+cx+d=0(a=0),求方程的实数根。笔者用C语言实现了著名的盛金公式求解一元三次方程高精度的实数根。一元三次方程实数根求解过程会调用一元二次方程高精度实数根的求解函数,参见另外一篇博文:一元...
2020-02-29 17:17:26
2457
原创 如何判断浮点数的有效性(C语言)
文章目录一、问题描述1、什么情况下计算结果为inf2、什么情况下计算结果为nan二、判断浮点数的有效性二、推导步骤三、CCC代码四、总结五、参考文献/资料一、问题描述 在编程过程中,有时候会因为考虑不周或者计算精度的问题,使计算结果“异常”:nan(Not a Number)或inf(Infinite)。例如,由于考虑不周,在计算对数函数log(x)log(x)log(x)时,x=0x=0x...
2020-02-28 22:37:48
7764
原创 一元二次方程高精度实数根(C语言)
文章目录一、问题描述二、推导步骤三、CCC代码四、总结五、参考文献/资料一、问题描述 已知一元二次方程ax2+bx+c=0(a≠0)ax^2 + bx + c = 0(a\neq0)ax2+bx+c=0(a=0),求方程的实数根。在数学上,我们很容易可以得到方程的实数根为:x1=−b+b2−4ac2a(1)x_1=\frac{-b+\sqrt{b^2-4ac}}{2a} \tag 1...
2020-02-26 22:52:18
3370
robot_velocity_planning _V2.0.rar
2020-03-22
机器人速度规划
2018-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅