- 博客(83)
- 资源 (1)
- 收藏
- 关注
原创 【C++】const修饰输入参数
在这个例子中,printValue函数的参数被声明为const,这意味着函数内部不会修改value的值。如果尝试修改value,编译器将会报错,从而避免了潜在的bug。在C++中,传参时使用const可以防止在函数内部不小心修改了传入的参数,这样可以提高代码的健壮性和可维护性。const表示函数内部不会修改传入的参数。,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const修饰。,那么加const修饰可以防止意外地改动该指针,起到保护作用。
2024-04-28 10:37:29
445
原创 【C++】指针与引用
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。在这里,type 是指针的基类型,它必须是一个有效的 C++ 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。int *ip;/* 一个整型的指针 */double *dp;/* 一个 double 型的指针 */float *fp;/* 一个浮点型的指针 */
2024-04-27 13:24:01
971
原创 【C++】namespace、class、struct的区别
/ 代码声明 }name::code;// code 可以是变量或函数// 第一个命名空间// 第二个命名空间// 调用第一个命名空间中的函数// 调用第二个命名空间中的函数return 0;int a=100;//变量void A::func()//成员函数 在外部定义的时候 记得加作用域//访问命名空间的数据不用加作用域cout<<"func遍历a = "<<a<<endl;void funb()//普通函数。
2024-04-27 11:40:13
1312
原创 Docker:学习笔记【1】
Docker 是一个开源的容器化平台,可以帮助开发者将应用程序及其依赖项封装为一个可移植的容器,然后可以在不同的环境中运行。Docker利用容器技术,通过轻量级的隔离机制,使应用程序能够在统一的环境中运行,而不受底层系统和硬件的影响。轻量级:Docker容器是基于操作系统级别的虚拟化,相比于传统的虚拟化技术,它占用更少的资源,启动速度更快。可移植性:Docker容器可以在不同的操作系统和硬件平台上运行,保证应用程序的可移植性。高效性。
2024-04-25 21:31:29
1111
1
原创 【Ubuntu20.04+Noetic】UR5e+Gazebo+Moveit
2、打开文件夹universal_robot/ur_msgs,打开CMakeList.txt文件。UR官方没更新最新的noetic的分支,因此安装melodic,并需要改动相关文件。将下载的ur_msgs文件替换universal_robot/ur_msgs文件。2.2、generate_messages下添加 geometry_msgs。2.3、catkin_package下添加 geometry_msgs。3、打开package.xml文件,添加依赖geometry_msgs。
2024-04-20 17:44:59
1287
原创 VS code配置C/C++编程环境
VSCode(Visual Studio Code)是一款轻量级的代码编辑器,拥有丰富的插件生态系统,支持多种语言开发。轻量级:相比于其他 IDE,VSCode 占用的资源更少,启动更快。插件丰富:VSCode 拥有丰富的插件生态系统,可以满足不同开发者的需求。跨平台:VSCode 支持在 Windows、macOS 和 Linux 上运行。集成 Git:VSCode 内置 Git 支持,方便代码版本控制。
2024-04-17 11:51:23
1359
原创 【SLAM】在Win10上实现Nerf-Pytorch【GPU版】
经过200k次迭代(在单个2080Ti上耗时~ 8小时)的训练,可以找到下面的视频所在logs/fern_test/fern_test_spiral_200000_rgb.mp4 和logs/fern_test/fern_test_spiral_200000_disp.mp4。经过100k次迭代(在单个2080Ti上耗时~4小时)的训练,可以在logs/lego_test/lego_test_spiral_100000_rgb.mp4上找到以下视频。将下载的目录放在./logs中,以便以后进行测试。
2024-04-16 16:56:49
1333
原创 Pytorch(GPU版本)简介、安装与测试运行
PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。
2024-04-16 16:30:15
974
原创 【Windows】GPU、CUDA、cuDNN、Pytorch、Python知识总结
由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。cuDNN(CUDA Deep Neural Network Library)由NVIDIA开发的用于深度学习的加速库,旨在优化神经网络的前向传播和反向传播过程,以利用NVIDIA GPU的并行计算能力,从而加速深度学习模型的训练和推理。CUDA Runtime是一个库。
2024-04-16 14:15:27
1139
1
原创 VSCode+Anaconda+Python使用教程
已安装好Visual Studio Code,Anaconda,并在Anaconda中创建Python环境。
2024-04-16 09:41:59
1479
原创 快速探索随机树-RRT
快速探索随机树(RRT)是一种算法,旨在通过随机构建空间填充树来有效搜索非凸高维空间。该树是从搜索空间随机抽取的样本中逐步构建的,并且本质上偏向于向问题的大型未搜索区域生长。RRT 由 Steven M. LaValle 和 James J. Kuffner Jr. 开发。它们可以轻松处理障碍物和微分约束(非完整和动力学)问题,并已广泛用于自主机器人运动规划。RRT可以看作是一种为具有状态约束的非线性系统生成开环轨迹的技术。
2024-04-15 22:31:05
1283
原创 BIRDy:机器人动力学辨识基准
如果没有一个合适的框架,学生、工程师或研究人员很难评估参数识别方法对于给定场景的相关性。在这里,我们提出了一个专用于机器人识别的统一基准。这实际上是非常简单的,只要你知道机器人(经典或改进)的DH参数,并对它的动态参数有一个大致的了解。机器人模型定义在专用文件中,包含在文件夹’ Utils/SymbolicModelData/Robot_Description_Files ‘中。
2024-04-14 10:31:13
851
原创 牛顿-欧拉递推动力学方程①
牛顿—欧拉动力学方程是应用达朗伯原理将动力学问题转化为牛顿—欧拉形式的静力学平衡问题。即,当一非自由质点系运动时,作用于该质点系的主动力系、约束反力系与质点系的惯性力系在形式上组成一个平衡力系(在任何方向上的代数和为零)。fcidtdmiνcimiν˙ci式中,fci为在惯性系下作用在连杆i的质心C处的合外力;νci和ν˙ci分别为在惯性系下连杆i的质心C处的线速度和线加速度。ncidt。
2024-04-13 14:14:07
2322
原创 动力学-坐标系
文章目录1 转动坐标系2 运动坐标系3 刚体运动参数• 拉格朗日建立机器人动力学方程需用齐次变换矩阵,计算效率低。优点是可以写成状态方程的形式,便于运用控制方法。• 牛顿—欧拉动力学方程可得到一组正向和反向递推方程,显著优点是可把驱动力矩的计算时间缩短到可实时控制的程度。1 转动坐标系设有两个坐标系,OXYZOXYZOXYZ—惯性系,OX∗Y∗Z∗OX^{*}Y^{*}Z^{*}OX∗Y∗Z∗—转动系,O点重合,OX*、OY*、OZ* 相对于OX、OY、OZ旋转( OX∗Y∗Z∗OX^{*}Y^
2024-04-13 13:16:30
1033
原创 动力学-惯性参数基础知识
文章目录1 惯性参数1.1 惯性参数1.2 惯性参数计算1.2.1 质量1.2.2 质心1.2.3 惯性张量与伪惯性矩阵1.2.4 平行移轴定理1 惯性参数质量平移转动惯量定轴转动惯性张量定点转动1.1 惯性参数1)刚体质量m2)质心位置:[xx,yx,zc]或rc⃗[x_x,y_x,z_c]或\vec{r_c}[xx,yx,zc]或rc3)惯性张量:刚体绕空间定点转动4)转动惯量:刚体绕定轴转动1.2 惯性参数计算1.2.1 质量对于具
2024-04-13 10:09:03
1328
原创 matlab 轨迹生成函数
q, qd, qdd] = jtraj(q0, qf, m)是关节空间轨迹q(MxN),其中关节坐标从q0(1xN)变化到qf(1xN)。[q, qd, qdd] = mtraj(tfunc, q0, qf, m)是根据m步标量轨迹函数tfunc从构型q0 (1xN)变化到qf (1xN)的多轴轨迹( MxN )。第i个点对应路径上的一个距离s(i)。[q, qd, qdd] = mtraj( tfunc, q0, qf, T)如上所述,但T (Mx1)是一个时间向量,它决定了轨迹上的点的数量。
2024-04-02 22:22:54
1908
原创 matlab 坐标系变换
文章目录对象轴角 axis-angles欧拉角 Euler angles四元数 quaternion旋转矩阵 rotation matrices齐次变换矩阵 Homogeneous Transformation坐标系换算 Coordinate Conversions图变换 Plot Transformations对象对象含义se2SE(2)齐次变换矩阵se3SE(3)齐次变换矩阵so2SO(2)旋转so3SO(3)旋转quaternion四元数
2024-04-01 21:27:26
793
原创 matlab碰撞检测
顶点是相对于一个选择坐标系(碰撞几何坐标系)指定的。BOX = collisionBox( X、Y、Z)在几何固有坐标系中创建以原点为中心,以X、Y、Z为边长,沿相应轴的轴对齐的盒子碰撞几何体。[ ax ,patches] = showCollisionArray ( collArray )将一个碰撞对象数组绘制在一张图中,并返回碰撞对象所在的坐标轴和每个碰撞对象的面片。CAPS = conflict Capsule( _ , Pose =pose)将胶囊的Pose属性设置为相对于世界坐标系的位姿。
2024-04-01 21:08:57
2321
原创 姿态插补算法
姿态空间插值的一个主要问题是姿态空间的三个自由度是相互耦合的,而不像位置空间一样三个自由度完全解耦正交。所以,直接对欧拉角三个角度分别插值,可能会出现错误的结果。姿态空间是一个 SO(3)群。当确定姿态空间的空间属性,我们就可以通过数学方法来定义它的空间插值。Serp 插值可以认为是最短路径插值,类似于位置空间的直线插值。但直线(Slerp)插值只能保证一阶连续,过渡点处的角速度方向会发生突变。
2024-04-01 09:25:42
1054
原创 旋转矩阵与旋转向量
欧拉角遵循的是右手系规则,即大拇指指向坐标轴正方向,四指旋转的方向即为转动的正方向,欧拉角包含三个自由量:yaw(偏航角)、pitch(俯仰角)、roll(翻滚角)。四元数的三维表达晦涩难懂,但是四元数的表达式可以优雅的表达三维中的旋转操作,不但避免了欧拉角的死锁问题而且也避免了旋转矩阵的复杂计算。当任何一个坐标轴旋转角度为90度时,就会有两个轴的旋转动作起到对总体旋转结果相同的效果,这就被称为“死锁“符号^ 是向量到反对称矩阵的转换符,而U代表向量u转换的反对称矩阵u^旋转角所在的平面为有。
2024-04-01 09:25:11
858
原创 Matlab DDPG
由于两个区块( agentA和agentB)所使用的智能体已经在工作空间中,因此不需要通过它们的观察和动作规范来创建环境。为了创建 actor,首先创建一个具有一个输入,即观察,和一个输出,即动作的深度神经网络。为了创建critic,首先创建一个具有两个输入,即观测和动作,以及一个输出的深度神经网络。在定义观测信号时,通过观测确保所有系统状态都是可观测的。如果拥有一个具有合适的动作输入端口、观测输出端口和标量奖励输出端口的参考模型,则可以自动创建包含该参考模型和RL Agent模块的Simulink模型。
2024-03-19 14:13:52
2091
原创 摩擦力模型详解与代码实现【1】
状态转换模型能较好地仿真相对速度为零时的摩擦特性, 避免了零速检测问题以及黏滞和滑动摩擦状态方程间的切换问题 , 但静摩擦力的计算需依据外力适时计算, 算法和模型构造与系统特点有关. 系统越复杂且多个摩擦力相互影响时, 则算法构造越困难. 另外, 通过参数辨识估计Dv 值时, 受噪声影响较大.该模型是一种较完善的模型, 但涉及状态静、动区间的直接切换, 物理意义比较勉强. 参数辨识非常困难. 该模型能够反映出黏滞和滑动两种状况的相关行为, 在控制领域中得到广泛应用.
2024-03-12 10:22:53
3107
原创 几种摩擦力模型
实验中发现,摩擦力在系统加速时要比减速时略大一些,其依赖于加速度的符号及其数值上的变化,说明摩擦力大小不仅与系统速度有关,还与加速度密切相关。研究表明,在定常速润滑条件下,当摩擦进入宏观滑动阶段时,随速度的不断增大,摩擦力先下降到一个极小值,然后随速度增大而增大。LuGre 模型可以全面地表征摩擦力的静态和动态特性,认为物体表面存在相互接触的弹性刚毛,切向力会使刚毛变形产生摩擦力,当切向力增大到一定程度,刚毛变形加大产生滑动,如下图所示。当外力大于静摩擦力时,速度不为零,存在一恒定摩擦力阻碍运动的进行。
2024-03-11 15:49:13
6922
原创 Qt打开ROS工程文件
注意:非root情况下,使用qtcreator执行某些需要权限的命令可能存在权限不够的问题,如使用pthread_create()打开线程,返回值为1,即权限不够,无法成功创建线程。点击“文件”,选择“打开文件或项目”,找到ROS工程文件的CMakeLists.txt文件,即catkin_ws/src/CMakeLists.txt。因此,一开始先使用非root用户打开qtcreaotr,打开ROS工程文件,等成功打开后,再转为root用户打开qtcreaotr,此时一般不会报错。
2024-03-05 13:24:36
1017
原创 [Qt] deleteLater 和 delete
deleteLater 是 QObject 类对象的成员函数,用于延迟删除一个 QObject 类对象。deleteLater 依赖于事件循环,调用 deleteLater 后本质是发送了一个 DeferrerDelete 事件,在事件循环处理中把对象删除。deleteLater 会在当前对象的所有事件处理完成后再删除对象,deleteLater 会在当前对象的所有事件处理完成后再删除对象。delete 是立即删除对象,对象的既有事件不再处理。
2024-03-05 10:45:54
598
原创 Qt定时器创建与结束
2、当定时器的间隔时间小于其slot函数任务的执行时间时,一旦定时器timeout时,其slot函数不会终止执行,只是暂停,内部变量仍然保存,而后继续执行。1、定时器之间不是并行处理数据,而是分片占用主线程资源 ,且定时器完成其对应的slot函数任务后,下一个定时器才会开始执行其slot函数任务;到时间执行一次连接的槽函数。
2024-03-05 10:42:43
695
原创 [Qt][C++]static与extern关键字
Static 在类内用于定义静态成员(函数)。静态成员(函数)与具体的类无关,它的值及作用范围适用于所有的类,当它的值发生改变时,在所有的类中的值都会发生变化。定义全局变量,还可以使用extern关键字。extern 关键字是告诉编译器,变量定义在函数外部。可以是本文件,也可以是其它文件。注意: 在类内部定义由 Static关键字修饰的成员 ,在使用前 必须在 类的外部 进行初始化。定义全局变量,可以使用static关键字,以保证在多个文件中调用的为同一个内存空间。建议使用static进行定义。
2024-03-05 10:28:58
966
原创 Qt线程创建与结束
在runEx函数末,使用emit finished()发出线程结束信号,即可调用quit来“尝试”结束myThread线程。但是如果在主线程中调用myThread->isRunning()的死循环来判断当前线程是否结束,得到的结果始终都是true。注意:在线程的run()函数运行结束后,线程结束了,但是并没有被释放,也不会触发Finished信号。子线程停止标志是run()函数运行结束,quit()、stop()并不会立刻停止run(),只是告诉线程要停止,真正停止还是需要等run()函数执行完毕。
2024-03-05 10:28:39
1146
原创 机器人 标准DH与改进DH
对于树形结构或者闭链机构的机器人来说,按照SDH方法建立的连杆坐标系会产生歧义,因为SDH的建系原则是把连杆i的坐标系建立在连杆的远端,如图(a)所示,这就导致连杆0上同时出现了两个坐标系。而MDH把连杆坐标系建立在每个连杆的近端,则不会坐标系重合的情况,如图(b)所示,这就克服了SDH方法建系的缺点。SDH方法将连杆i的坐标系固定在连杆的远端,MDH方法把连杆i的坐标系固定在连杆的近端。杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。X轴的方向取当前的Z轴和前一个关节Z轴(
2024-03-03 22:43:47
1774
原创 Matlab 机器人工具箱 例程:运动学+动力学+路径规划+可视化
【代码】Matlab 机器人工具箱 例程:运动学+动力学+路径规划+可视化。
2024-03-03 21:22:09
2043
1
原创 Matlab 机器人工具箱 创建机器人
L1.a = 0.1;L1.m = 2;%连杆质量%电机转动惯量%连杆质心位置0,0,0;0,0,2];%连杆惯性张量%关节限位%世界坐标系定为(0,0,1)
2024-03-03 13:11:23
474
原创 欧拉-拉格朗日动力学 Matlab实现
该函数基本上计算了所有可能的矩阵(例如,机械臂的第2、3关节的运动不会对基关节的位置和姿态产生任何影响。7 ) . 'U_matrix.m’是计算一个连杆/关节的运动对另一个连杆的位置和方向的影响的函数。1 ) . 'ArmMatrix.m’计算从一坐标系到相邻坐标系的齐次变换矩阵,而’T_Concat.m’计算从起始坐标系到末端坐标系的级联矩阵。5 ) . 'gravity_loading_matrix.m’是一个计算重力载荷矩阵的函数,它的每一个项都对应着每个连杆由于重力而产生的势能。
2024-03-03 01:31:22
1455
nerf-pytorch的两个数据集lego和fern
2024-04-16
BIRDy:机器人动力学辨识基准
2024-04-14
Karnopp摩擦力模型的Matlab实现代码与使用示例
2024-03-12
Stribeck摩擦力模型的Matlab实现代码与使用示例
2024-03-12
静摩擦与库伦摩擦力的Matlab实现代码与使用示例
2024-03-12
库伦摩擦力的MATLAB实现模型和使用示例
2024-03-12
摩擦力模型LuGre,Matlab实现代码
2024-03-11
使用拉格朗日欧拉动力学对任意自由度的机械臂进行逆动力学分析,输入为关节空间变量(关节位置、速度和加速度),输出为关节力矩/力
2024-03-03
深度强化学习DQN算法实现小车平衡杆(CartPole)问题
2024-02-07
柔索离散模型的Bushing连接副的Simulink仿真模型实现
2022-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人