- 博客(72)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 对WireShark 中的UDP抓包数据进行解析
本文探讨了使用WireShark和Python解析UDP抓包数据的方法。作者通过分析pcapng文件格式,详细展示了如何解析以太网帧、IPv4协议、TCP/UDP数据包及各字段信息。文中提供了Python代码示例,演示了如何提取MAC地址、IP地址、端口号等网络层和传输层信息。特别关注了UDP协议的解析过程,包括端口号识别和数据包内容提取。同时作者也指出,在尝试解析TCP中的FTP数据时,发现仅能通过端口号进行区分,缺乏更有效的处理方式。
2025-05-25 20:08:55
450
原创 对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库中各种插值函数的使用
为了比较不同的插值函数,这边使用了两种数据来进行验证,一种是随机的数据,一种是从 cos 轨迹上取点进行插值。
2024-12-28 21:56:22
272
原创 # 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提供了多种用于物理的选择。但是,在选择之前,请仔细考虑是否需要物理模拟的额外复杂性、性能和创作成本,以及碰撞检测本身是否足以满足您的用例。
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是一个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 控制一个电机之后,就在想如何现在距离拥有一个机器人本体和机器人控制器还有多远呢?下面的内容比较的自己的粗浅的看法,在此抛转引玉。机器人本体的设计和控制器两个随便一个单独拎出来讲,都能讲上是十天十夜都不止,每一个都是一个极其复杂的系统,都需要各位有志之士深耕多年才能做好做稳定。我在这里也只会随手一写,写出来和大家一起讨论讨论、交流交流。
2022-10-23 11:11:53
934
1
原创 EtherCAT IGH 的编译选项介绍
EtherCAT 编译选项介绍。翻译自 《EtherCAT IGH 1.52.pdf》中的 里面的表 < Table 9.1: Configuration options> 。
2022-10-19 22:10:05
1573
原创 关于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
原创 Matlab T型速度规划
%% 梯形速度曲线%% 假定初始速度和最终速度为零,给定最大的加速度、运行时间、开始角度 、结束角度function trapezoid()%给定初始条件t0=0;tf=10;q0=0;qf=20;a_max=1;if a_max>= 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 编写的一些程序案例,可以作为参考学习用
2025-03-30
利用蚁群算法对PID参数自整定程序源代码
2018-04-14
在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数
2018-03-19
hash_map 自定义hash函数出错
2018-03-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人