自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 对WireShark 中的UDP抓包数据进行解析

本文探讨了使用WireShark和Python解析UDP抓包数据的方法。作者通过分析pcapng文件格式,详细展示了如何解析以太网帧、IPv4协议、TCP/UDP数据包及各字段信息。文中提供了Python代码示例,演示了如何提取MAC地址、IP地址、端口号等网络层和传输层信息。特别关注了UDP协议的解析过程,包括端口号识别和数据包内容提取。同时作者也指出,在尝试解析TCP中的FTP数据时,发现仅能通过端口号进行区分,缺乏更有效的处理方式。

2025-05-25 20:08:55 449

原创 对WireShark 中的EtherCAT抓包数据进行解析

本文介绍了使用Python解析WireShark抓取的EtherCAT数据包的方法。首先分析了EtherCAT数据帧结构,包括目标/源MAC地址和帧类型识别(0x88A4标识EtherCAT帧)。然后详细解析了EtherCAT帧头中的长度和类型字段,以及子报文中的命令、索引、地址区等关键信息。

2025-05-25 18:44:40 266

原创 基于python 实现的对一系列给定点进行 Akima 插值

本文实现的 Akima 的算法基本参照网上的一些 Akima 算法的基本数学公式进行实现。并提供一段关节空间的6 维轨迹进行验证。同样值得注意的是 Akima 差值和 三次样条插值一样其加速度是连续的,但是相对B样条来说,其计算量是比较小的。

2025-05-25 15:08:51 43

原创 基于python 实现的对一系列给定点进行 B 样条插值

本文实现的 B 样条的算法基本参照 《Trajectory planning for auto machines and robotics》 进行实现。并提供一段关节空间的6 维轨迹进行验证,也和 scipy 中提供的轨迹库中的三次样条进行比较。从B样条和三次样条的比较来看, B样条的加速度是连续的, 三次样条的加速度是不连续的。但是从计算量方面来说的话, B样条的计算量是比较大的。

2025-05-25 14:59:58 593

原创 基于python 实现的对一系列给定点进行三次样条插值

本文实现了一种三次样条插值算法,参照《Trajectory planning for auto machines and robotics》4.4节。该算法通过给定中间点生成平滑轨迹,并验证了6维关节空间轨迹。与scipy库的插值结果对比表明,两者效果相近。文中特别指出三次样条的加速度不连续性,在实际机器人应用中可能产生不良影响。

2025-05-25 14:51:01 35

原创 DoubleS 轨迹, 给定起点和终点位置、以及给定起点和终点的速度

本文介绍了基于Python的DoubleS轨迹规划算法,通过6个案例验证了该算法的正确性。案例展示了不同起始速度条件下产生的轨迹特征,包括正向/反向速度运动形成的拱形轨迹。算法通过7段轨迹表达式计算位置、速度、加速度和加加速度,并绘制出轨迹曲线与约束极限的对比图。文章还包含了完整的Python实现代码,包括轨迹计算函数和可视化绘图函数,可处理各种起始/终止条件下的轨迹规划问题。

2025-05-25 13:31:53 28

原创 给定终点和时间的DoubleS轨迹

该Python程序实现了一个S型速度轨迹规划算法,支持用户设置终点位置和总运行时间。程序基于《Trajectory Planning for Automatic Machine and Robots》中的理论,采用7段式轨迹规划(包含加加速、匀加速、加减速、匀速、减加速、匀减速和减减速阶段),确保起点和终点速度为0。通过计算各阶段时间参数,生成平滑的位置、速度、加速度和加加速度曲线,并利用matplotlib可视化展示轨迹变化过程。程序默认起点为0,允许自定义终点位置和运行时间参数。

2025-05-24 20:54:47 98

原创 如何对两段轨迹进行拟合过渡

本文介绍了两种机器人轨迹过渡拟合方法:1) 直接向量叠加法:通过时间百分比参数控制轨迹叠加比例,但存在轨迹超限和速度依赖性问题;2) Double-S曲线法:构建平滑过渡曲线,通过参数化控制过渡过程。实验显示直接叠加法可能导致关节位置超出限制,且结果受速度影响,而Double-S曲线法能提供更稳定的过渡效果。文中包含Python实现代码和轨迹对比图,展示了不同参数下的拟合效果差异。

2025-05-24 20:26:50 92

原创 如何对轨迹进行减速并保证在原来的轨迹上面

本文探讨了两种轨迹减速方法:时间放缩法和快速停止法。时间放缩法通过延长轨迹执行时间实现平滑减速,构建时间序列并应用非线性时间变换函数,使速度逐渐降低而不偏离原轨迹。快速停止法则采用恒减速直接制动,减速时间更短但减速度更大。实验对比显示,时间放缩法能保持轨迹连续性,而快速停止法会产生更急剧的减速效果。两种方法各具特点,时间放缩法适合需要保持轨迹平滑的场景,快速停止法则适用于需要紧急制动的场合。文中提供了完整的Python实现代码和可视化对比结果。

2025-05-24 13:21:23 220

原创 如何在VSCode 中采用CMake编译C++程序

当我们编译的文件比较多的时候,使用 g++ 指令进行编译的时候,还是比较繁琐的,那么这个时候就需要自己去编写一个 CMakeLists.txt 的文件,来帮助我们进行编译了。本文主要采用一些例子来说明如何进行这个操作。

2025-03-30 10:58:59 1099

原创 利用PyQt简单的实现一个机器人的关节JOG界面

我们介绍了如何在Python中画出一个简单的机器人3D模型,但是有的时候我们需要通过界面去控制机器人每一个轴的转动,并实时的显示出当前机器人的关节位置和末端笛卡尔位姿。在界面中,按下 J1+, 关节1轴就会一直正向转动,松开 J1+按钮之后关节1轴就会停止运动,其他关节轴也是一样的。然后在界面的下方中还是实时的显示出机器人当前的关节角度和笛卡尔末端位姿。

2025-03-02 22:12:48 248

原创 如何在Python用Plot画出一个简单的机器人模型

在下面的程序中,首先要知道机器人的DH参数,然后计算出每一个关节的位置,最后利用 plot 函数画出关节之间的连杆就可以了,最后利用 animation 库来实现一个动画效果。

2025-03-02 22:02:52 636

原创 PTPVT 插值说明

PT模式: 位置-时间路径插值算法。PVT模式: 位置-速度-时间路径插值算法。可以使用三次多项式或者 Hermite 算法进行插值。PT算法对于点位距离比较小的运动或者低速度的运动比较合适。由于其很少的计算量,因此计算速度很快。一般可以直接用在伺服驱动器中,比如说控制器的控制周期是 1ms, 那么伺服驱动器就可以在每 1ms 内的时间间隔内使用 PT 插值,可以 1 ms 内插值16个点位,以使得运动更加的精细。PT 插值的加速度是不连续的,存在突变。

2024-12-29 20:24:49 440

原创 Python 中常见的一些画图形式

显示Python中支持的不同直线线型。显示Python中不同的颜色。

2024-12-29 16:40:44 293

原创 Python库中三次样条不同形式使用比较

Python库中三次样条不同形式使用比较。

2024-12-28 22:02:41 266

原创 Python库中各种插值函数的使用

为了比较不同的插值函数,这边使用了两种数据来进行验证,一种是随机的数据,一种是从 cos 轨迹上取点进行插值。

2024-12-28 21:56:22 272

原创 C 中如何在For中生成不重复的随机数

如何在C的For中生成不重复的随机数

2024-12-28 15:48:03 450

原创 # Panda3d 碰撞检测系统介绍

碰撞检测使2个物体在相撞时能够被检测出来并且做出反应,这不仅包括为碰撞事件发送消息,而且还要保证物体不会彼此穿透。碰撞检测为用户营造一种很真实的虚拟环境沉浸感(immersion),只不过该技术实现起来有点复杂。有2 种方法可以实现碰撞检测。一种是创建一些特殊的空间碰撞几何体来检测碰撞,例如球体或多边形。另一种方法是允许与任何几何体碰撞。虽然第一种更复杂,实现起来也更难,但它运行更快,是一种行之有效的解决方案。而对快速粗糙(quick-and-dirty)的应用而言,第二种几何体碰撞也是可行的。

2023-11-25 18:18:52 777

原创 Panda3d 动画序列

Panda3D 的动画序列系统是一种用于回放脚本动作的复杂机制。通过使用动画序列,您可以构建动画、声音效果或任何其他动作的复杂交互,并按需播放脚本。系统的核心是类Interval 。有几种不同类型的 Interval,将在以下几页中详细讨论,但它们都具有以下共同属性:每个 Interval 表示在特定的有限动画序列内发生的一个操作(或一系列操作)时间(因此得名)。

2023-11-15 22:32:35 663 2

原创 Panda3d 外部硬件接口介绍

本章介绍Panda3d对键盘和鼠标的支持。

2023-11-15 21:35:31 655

原创 物理引擎介绍

虽然碰撞检测解决了防止对象在大多数应用中碰撞的问题,但某些游戏和仿真应用可能需要对对象之间的更真实的动态交互进行建模,同时考虑对象的质量、摩擦力、弹性和外力等因素。这些用途可能需要使用物理引擎。这是一个可以使用物理方程模拟物体之间相互作用的系统,考虑的参数远远超过简单的碰撞响应系统。Panda3D提供了多种用于物理的选择。但是,在选择之前,请仔细考虑是否需要物理模拟的额外复杂性、性能和创作成本,以及碰撞检测本身是否足以满足您的用例。

2023-11-15 21:34:01 295

原创 Panda3d 动画模型

Panda3D 中有两个用于 3D 几何的类:**Mode**(用于非动画几何)和**Actor**(用于动画几何)。请注意,只有当几何体改变形状时才被视为动画。例如,棒球不会被认为是动画的:它可能飞得到处都是,但它仍然是一个球体。棒球是一个**Model**,而不是**Actor**。

2023-11-15 21:28:32 719

原创 Panda3d 场景管理

许多简单的 3D 引擎维护一个 3D 模型列表,然后在每一帧对这些模型进行渲染。在这些简单的引擎中,必须分配一个3D模型(或从磁盘加载它),然后将其插入到要渲染的模型列表中。模型在插入到列表中之前对渲染器不“可见”。Panda3D稍微复杂一些。它不是维护要呈现的对象列表,而是维护要呈现的对象树。对象在插入树之前对渲染器不可见。

2023-11-11 20:52:59 1085

原创 Panda3d 相机控制

本篇主要是介绍Panda3d 的相机控制,然后通过键盘和鼠标控制进行说明。

2023-11-01 21:00:37 1303

原创 人形机器人的技术发展探讨

世界机器人大会上关于人形机器人技术的探讨

2023-11-01 20:20:52 637

原创 Panda3d 介绍

Panda3D是一个3D引擎:一个用于3D渲染和游戏开发的子程序库。该库是带有一组Python绑定的c++。使用Panda3D进行游戏开发通常需要编写一个Python或c++程序来控制Panda3D库。 Panda3D是为商业游戏开发而创建的,并且仍然用于开发商业游戏。

2023-10-30 22:28:29 2836 1

原创 Panda3d 教程

偶然之余看到了 Panda3d 这个3D引擎,觉得代码开源然后又比较轻量级,感觉还是比较好上手的,因此就想去学习一下,然后把学习过程记录下来。网上也都找了不少关于Panda3d 方面的教程,但是感觉都不是很好,有的是简单的介绍,有的或者大部分都是文字的介绍,没有对应的例子或者动画来进行演示实际的效果,因此打算自己重新写这么一个相关的教程。

2023-10-30 22:06:56 2230

原创 EtherCAT IGH 命令行介绍

EtherCAT IGH 命令行介绍

2022-10-24 20:15:00 9596 11

原创 大话如何从一个电机发展成机器人本体加机器人控制器

最近学了如何用EtherCAT IGH 控制一个电机之后,就在想如何现在距离拥有一个机器人本体和机器人控制器还有多远呢?下面的内容比较的自己的粗浅的看法,在此抛转引玉。机器人本体的设计和控制器两个随便一个单独拎出来讲,都能讲上是十天十夜都不止,每一个都是一个极其复杂的系统,都需要各位有志之士深耕多年才能做好做稳定。我在这里也只会随手一写,写出来和大家一起讨论讨论、交流交流。

2022-10-23 11:11:53 934 1

原创 EtherCAT IGH 驱动一个步进电机

EtherCAT IGH 驱动一个步进电机。

2022-10-22 18:36:42 6334 10

原创 EtherCAT IGH 的编译选项介绍

EtherCAT 编译选项介绍。翻译自 《EtherCAT IGH 1.52.pdf》中的 里面的表 < Table 9.1: Configuration options> 。

2022-10-19 22:10:05 1573

原创 EtherCAT IGH 的下载和编译

EtherCAT 的下载和编译

2022-10-19 10:14:21 3311

原创 关于ROS中Moveit中运动规划的总结资料和相关问题

1、如果要在Moveit中配置自己的运动规划库,则需要自己用源码安装Moveit和OMPL ,然后参照这个大神的资料按照步骤进行操作。2、运动规划的公开课可以参照 夕法尼亚大学Coursera运动规划公开课。3、机械臂运动规划算法性质的学习的话,需要看源码,理解move_group.plan()后moveit如何与ompl进行的交互,然后ompl如何完成的算法并将结果返回给moveit的。4...

2019-05-16 12:58:43 5285 2

原创 moveit+gazebo联合仿真问题总结

相应的配置文件和启动文件修改:在进行配置的时候,考虑到以后可能有多个机械臂进行联合仿真,或者就是为了话题之间不会进行冲突,会利用命名空间进行区分,一般而言都是用 urdf 或者 xacro 文件中的模型名字 robot(这个可以根据自己的机械臂名字进行相应的修改,这里为了描述方便) 作为 命名空间的名字,1、对自己的模型 robot 利用rosrun moveit_setup_assistat...

2019-05-15 21:42:22 3867 4

原创 个人学习笔记

1、如何利用argv传递数组#include<iostream>#include<Eigen/Eigen>using namespace Eigen;using namespace std;int main(int argc,char ** argv){ VectorXd Q(6); Q<<11,12,13,14,15,16; co...

2019-05-13 21:20:09 423 1

原创 Matlab化简机械臂正运动学表达式(采用DH矩阵推导)

我们在求解机械臂的正运动学的时候,对于在写论文的过程,我们需要对最终的位姿矩阵进行相应的化简,比如把sin(q1) 写成 S1,cos(q1) 写成 C1等等之类,之前我在处理这些表达式的时候,都是一个一个手动去替换,一个一个 ctrl+F,对于六自由度的机械臂来说真心好累。 今天我利用Matlab 中的一些基本语句实现了对位姿矩阵的自动化简。 一般在DH参数中 theta 和...

2018-12-07 19:21:38 3875

原创 雅克比矩阵

2018-09-26 08:23:22 797

原创 Matlab T型速度规划

%% 梯形速度曲线%% 假定初始速度和最终速度为零,给定最大的加速度、运行时间、开始角度 、结束角度function trapezoid()%给定初始条件t0=0;tf=10;q0=0;qf=20;a_max=1;if a_max&gt;= 4*(qf-q0)/(tf-t0)^2% 先判断能否求解到t_f,给定的最大加速度是否满足条件 % t_f 加速至匀速阶段的...

2018-09-25 23:05:01 4457

原创 三点求圆公式Matlab 和C++版程序

三点求圆公式Matlab 和C++版程序%% 给定三个点做圆弧轨迹规划function P_P=plot_circle(p1,p2,p3)%% 利用这三个点做一个平面方程k_11=( p1(2)-p3(2) )*( p2(3)-p3(3) ) - ( p2(2)-p3(2) )*( p1(3)-p3(3) ) ;k_12=( p2(1)-p3(1) )*( p1(3)-p3(3) )...

2018-09-25 20:42:00 4025

原创 求饶不经过原点的旋转轴的旋转矩阵

看《机器人导论》中关于齐次变换的内容中,发现饶轴旋转的时候,分为两种情况。一、饶经过原点的轴进行旋转;二、饶不经过原点的旋转轴进行旋转。其实这两种情况下,采用旋转向量 和 旋转矩阵的相互转换的几种方法 这里面的方法都是可以求到旋转矩阵的,但是这两种旋转方式中的变换矩阵中的位置矩阵是不一样的。饶经过原点的轴进行旋转的变换矩阵,由于原点的位置没有发生改变,所以变换矩阵中的位置矩阵是零,而第二种方法中...

2018-09-17 21:09:33 2459

学习 Cmake 编写的一些程序案例,可以作为参考学习用

# 文件夹说明 - Demo1 - 外面的 main.cpp 依赖于 Test1 和 Test2 中的文件。 - Test1 和 Test2 文件夹中没有对应的 CMakeLists.txt - Demo2 - 外面的 main.cpp 依赖于 Test1 和 Test2 中的文件。 - Test1 和 Test2 文件夹中有对应的 CMakeLists.txt - Demo3 - 外面的 main.cpp 依赖于 Test1、Test2、Test3 中的文件。 - Test1、Test2、Test3 文件夹中有对应的 CMakeLists.txt - Demo4 - APP中的 main.cpp 依赖于 Test1、Test2、Test3 中的文件。 - Test1、Test2、Test3 文件夹中有对应的 CMakeLists.txt - APP 中也有对应的 CMakeLists.txt 文件 - 最外层也有一个 CMakeLists.txt 文件 - 只需要在最外层进行编译即可 - Demo5

2025-03-30

CMake 安装文件,用以在 Windows 中配置 C/C++ 编译环境

CMake 安装文件,用以在 Windows 中配置 C/C++ 编译环境

2025-03-30

mingw-W64 库文件,用以配置在 Windows 中配置 C/C++ 编译环境

mingw-W64 库文件,用以配置在 Windows 中配置 C/C++ 编译环境

2025-03-30

在Simulink中利用simmechanics对三自由度的串联机械臂进行仿真

在Simulink中利用simmechanics对三自由度的串联机械臂进行仿真

2018-04-14

利用蚁群算法对PID参数自整定程序源代码

在MATLAB中利用蚁群算法进行优化PID参数,function [Pid_kp_Opertimizer,Pid_ti_Opertimizer,Pid_td_Opertimizer,Overshoot,Tr,Ts]=OptimizerPID1(m,NC_max,Alpha,Beta,Rho,Q) %% 主要符号说明 %% NC_max 最大迭代次数 %% m 蚂蚁个数 %% Alpha 表征信息素重要程度的参数 %% Beta 表征启发式因子重要程度的参数 %% Rho 信息素蒸发系数 %% Q 信息素增加强度系数 %% 输出分别表示:PID 三个最优参数、超调量、上升时间、下降时间 在运次程序之前,要先加载OptimizerPID.slx文件,然后再运行OptimizerPID.m文件,这个函数需要相应的参数才能运行,参数的含义在代码已经写出来了。

2018-04-14

在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

一种在MATLAB中利用M文件实现对Simulink中S函数的程序实现自动调参数的功能。1、在Simulink中搭建好模型文件。 2、按照链接博客中的方法设置好模型文件中的S函数模块。 3、用M文件编写相应的程序,设置好仿真时间,和变量如何变化等等。 4、运行M文件,用程序自动给你调参数,选择出最好的参数吧。

2018-03-19

C++ 扫雷游戏

采用C++编写的扫雷游戏,鼠标左键用于翻开格子,右键用于对格子进行相应的标记。也可以自定义地图的大小和地雷的个数。具体的实现可以参考我的博客。

2017-07-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除