- 博客(24)
- 收藏
- 关注
原创 机器人路径规划算法(三)
文章目录三、复合轨迹1.梯形轨迹2.双S速度曲线轨迹2.1 vlim=vmaxv_{lim} = v_{max}vlim=vmax2.2 vlim<vmaxv_{lim} < v_{max}vlim<vmax2.3 轨迹表达三、复合轨迹1.梯形轨迹为了获得连续的速度轨迹,常见的轨迹方程就是使用线性差值混合抛物线插值,以此获得具有梯形剖面的速度轨迹。梯形轨迹可以分为三部分。假设 q0<q1q_0<q_1q0<q1 ,第一部分加速度为正的常数,因此速度是
2024-05-29 16:03:28 1078 1
原创 机器人路径规划算法(二)
假定点q是点p在垂直直径上的投影,点p以恒定的速度在圆上运动,那么q的运动称为谐波运动。圆上的一点p沿着水平滚动,在空间上形成的抛物线称之为摆线运动。谐波轨迹的特点是加速度与位置成比例相关,但符号相反。可以看出谐波轨迹的加速度多端中并不连续,在。
2024-05-29 16:02:42 960
原创 机器人路径规划算法(一)
文章目录一、多项式轨迹1. 线性插值(恒速)2.抛物线插值(恒加速)2.1 加速阶段2.2 减速阶段2.3 加速度不对称3.三次多项式插值(变加速)3.1 给定每个点的位置和速度信息3.2 给定每一个点位置信息,但中间点速度未给定4.五次多项式插值5.七次多项式插值6.结果对比一、多项式轨迹1. 线性插值(恒速)线性插值是一阶多项式插值方法。线性轨迹是将每个位置的点依次用线段连起来,点与点之间的速度是恒定值。假设用q(t)q(t)q(t)来表示插值以后的曲线,则用数学方法来表示线性插值就是:q(t)
2024-05-29 16:01:56 1113
原创 renren-fast超详细入门
文章目录1. 简介2. 部署2.1 源代码:2.2 开发环境准备2.3 编译3. 开发3.1 数据库表设计3.2 生成对应的前后端代码4.总结1. 简介renren-fast是一个轻量级的Spring Boot快速开发平台,能快速开发项目并交付完善的XSS防范及脚本过滤,彻底杜绝XSS攻击实现前后端分离,通过token进行数据交互2. 部署2.1 源代码:下载后端代码:https://gitee.com/renrenio/renren-fast.git下载前端代码:http
2021-06-09 19:42:43 11624 2
原创 c/c++编译链接: 强符号与弱符号
强符号与弱符号1.定义函数、已初始化的全局变量为强符号未初始化的全局变量为弱符号可通过__attribute__((weak))来修饰声明为弱符号2.规则强符号不能重复定义,否则链接错误存在相同的一个强符号和多个弱符号时,链接使用强符号存在相同的多个弱符号时,随意使用一个3.利用强弱符号做插件开发plugin.cpp#include <iostream>void testfunc(void){ std::cout << "this is p
2021-06-03 14:38:08 828
原创 centos7 离线安装g++
1.g++相关依赖包2.到http://vault.centos.org/7.5.1804/os/x86_64/Packages/下载相关依赖包3.执行命令 rpm -Uvh *.rpm --nodeps --force4.gcc -v g++ -v查看是否成功...
2019-09-25 14:49:10 3845
原创 google logging源码解析
写日志的一个流程:(1)logging.h中MYLOG宏定义(源码是LOG宏,稍微改了一点源码):这里是一个宏连接,上面的switch(GLOG_DEBUD)等价于 COMPACT_GOOGLE_LOG_DEBUG.mystream(m_baseName.c_str()) << message;(2)再来看看logging.h关于 COMPACT...
2019-09-17 17:53:24 1191
原创 共享内存
Windows:(1)不采用磁盘文件共享:#include <Windows.h>#include <iostream>#include <string>using namespace std;#define SHARED_MAX_LEN 255int _tmain(int argc, _TCHAR* argv[]){ HANDLE h...
2019-09-05 17:07:06 179
原创 命名管道
Window下:服务端:进程A#include <stdio.h>#include <Windows.h>#include <iostream>using namespace std;void ReadMessage(HANDLE handle);void WriteMessage(HANDLE handle, char *message...
2019-09-05 14:09:30 141
原创 匿名管道
创建子进程执行命令,通过匿名管道把结果返回给父进程。父进程: HANDLE hRead; HANDLE hWrite; SECURITY_ATTRIBUTES stSecureA; stSecureA.nLength = sizeof(stSecureA); stSecureA.bInheritHandle = true; stSecureA.lpSecurityDesc...
2019-09-05 09:40:45 126
原创 线程安全的单例模式
1.饿汉模式//饿汉模式template<class T>class Singleton {private: Singleton() {};private: static T *m_instance;//静态成员需要类内声明,类外定义; Singleton(const Singleton&) {};//禁止拷贝 Singleton& operator ...
2019-03-12 11:17:44 128
原创 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路:1.先排序2.选取左边小于等...
2019-01-20 17:50:49 241
翻译 盛水最多的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。解法:双指针法最初我们考虑由最外围两条线段构成的区域。现在,为了使面积最大化,我们需要考虑更长的两条...
2019-01-20 16:00:26 361
原创 多线程安全之--volatile关键字
前言看《程序员的自我修养》这本书时,看到了有关线程安全的两种情况:例子1 x = 0; Thread1 lock(); x++; unlock(); – Thread2 lock(); x++; unlock();由于有了lock()与unloc()的保护,x++的行为不会被并发所破坏,那么x的值必然是2了,然而,如果编译器为了提高x的访问速度,把x的值放到了某...
2018-08-03 11:41:55 255
原创 学习笔记(四)排序算法--归并排序
思路个人感觉这个应该是所有排序算法中比较难理解的一个了,虽然之前已经会了,但是今天再重温的时候还是花了一点时间去看懂它的思想。 归并归并,基于分治法,其实就是先递归,一路取中点切数组大小,直到剩下一个递归停下;返回和上一层的另一个合并,形成一个有序数列,然后再上一层和另一个有序数列合并,一直返回边排序边合并直到完成。合并时采用一个辅助数组来记录两个合并数组的大小顺序,然后再写会数组的相同位置...
2018-08-02 16:07:32 202
原创 学习笔记(二) 排序算法--快速排序
思想从带排序序列中找一个基准点,用两个指针,一个从右边开始移动,找到比基准点小的数,一个从左边开始移动,找到比基准点大的数,交换这两个数,右边指针和左边指针继续移动,直到两个指针相遇,将基准点与相遇的位置交换,这样就得到了一个基准数左边的数一定小于基准数,右边的数一定大于基准数;继续递排序当前基准数左边的数列和右边的数列,直到排序完成。图解代码void quickSort(...
2018-08-02 11:36:58 136
原创 学习笔记(一) 排序算法--堆排序
思路: 1.待排序n个元素,看成一个完全二叉树,从倒数第一个具有子树的节点(n/2-1)开始,从右到左从下到上,保证每个子树的父节点都比左右子树的值大,一路交换上去最后保证根节点是最大值,将根节点与最后一个元素n交换;这样就得到了最后一个元素为该数组的最大值; 2.除去最后一个元素,将(n-1)个元素重复上述操作,直到元素个数为1个void adjustHeap(int a...
2018-08-01 22:25:19 238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人