零差云控电机ubuntu+IGH调试记录

一、上位机

Twincat3安装:https://blog.csdn.net/LclLsh/article/details/122863502
Twincat3设置实时网卡:https://zhuanlan.zhihu.com/p/217715531
Twincat3设置独立cpu:https://blog.csdn.net/weixin_44555503/article/details/108711912

  • 零差云控的上位机包括两种形式,利用erob调试器(can2usb)的canopen协议进行调试和网线的ethercat协议进行调试。canopen就不说了,直接看手册就行。
  • ethercat就要麻烦一点了,需要用到倍福的Twincat软件进行调试,安装说明可以参考上面的链接,好像只能装在系统c盘中。安装之前需要确定自己网卡的类型,可以搜到一个twincat支持的网卡列表,只能支持部分的intel网卡。在安装完成后,有以下几个步骤:
    ①把零差云控的xml配置文件,放到Twincat文件夹下
    ②设置实时网卡
    ③restart twincat system,这时应该可以看到数据更新了
    ④配置参数,参考eRob CANopen and EtherCAT 用户手册第六章Twincat主站控制。注意这里一定要按照流程配置完成,尤其是控制量的映射关系和上下限制。如果用原来的参数会导致电机飞转,虽然会很快报错停住,但是如果是用在机械臂的大关节上,停住前可能已经碰到东西了。
    ⑤激活配置Active Configuration,这里可能会报错setting TwinCAT in RUN Mode with VMware running might fail,是没有设置独立cpu导致的。

二、单关节电机代码

ROS2_IGH方案bilibili:https://www.bilibili.com/video/BV15X4y1t7XY/
ROS2_IGH方案CSDN:https://blog.csdn.net/Primary_student/article/details/135156861

  • 整体的方案参考了上面大佬的做法,实时补丁+ros2+ros2_control+moveit2+igh,因为当时对moveit和ros2_control不熟悉,所以没有用上面方案中的ethercat_driver_ros2中间件。在学习了ros2_control后,重新写了硬件接口的代码。这部分代码参考的是下面这个链接。

IGH分享-让电机转起来:https://www.bilibili.com/video/BV1kP4y1Y7QK/?spm_id_from=333.788.recommend_more_video.2&vd_source=a686d8f8b0e9b94066f2d4ba714466e7

三、多关节电机代码

1、igh命令行

资料:https://blog.csdn.net/u014077947/article/details/127489297

  • 这是一个很重要的点,除了启动master节点、查看从机状态,还有切换电机状态、向sod写数据、设置debug日志等功能

2、速度限制

  • 运行过程中,还有一个问题是电机运动快了以后会报错,一般错误原因是警告,如果查看一下警告的错误码,会发现是软速度报错,这是因为速度软误差限制太低导致的。
  • 这个限制可以修改0x3B61,利用命令行进行修改。但是修改完了以后发现重新上电后,这个寄存器会重新恢复原来的数值。这就涉及到手册里的另一个属性了,也就是Backup,也就是有一部分寄存器可以在断电后保存参数,要实现保存还要操作0x1010这个寄存器。

3、同步模式

  • 电机多了以后会出现电机初始化报错的情况,也就是SAFEOP向OP转换的时候,会出现SAFEOP+ERROR的情况。这个情况可以用命令行切换,但是很不方便,而且初始化失败,肯定是有什么问题。经过大佬的提示,最终发现这是同步问题导致的。
  • 这里就进入一个比较迷惑的情况了,零差给的手册中关于同步设置的寄存器0x1C32,存在问题。0a寄存器大小不对,表述不清。很多寄存器的默认值错误。
  • ethercat的同步模式有三种,freerun、SM、DC。默认情况是freerun的,之前单关节电机代码的写法,会把同步模式设置为SM同步管理器模式,但是这会导致出现上面说的问题。
  • 最终还是参考了ethercat_driver_ros2的写法,完成了DC模式的配置。要用到ecrt_slave_config_dc、ecrt_master_application_time、ecrt_master_sync_slave_clocks这几个函数,并且在循环中也要更新
  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Xenomai是一个开源的实时操作系统框架,为Linux操作系统提供了实时能力。它基于POSIX和RTDM(实时设备模型)接口,可以在单核或多核处理器上实现硬实时任务的处理。IGH(Interrupt and GPIO Handler)是Xenomai中的一个子系统,用于处理中断和GPIO(通用输入输出)。 IGH可以通过Xenomai的API直接访问硬件的中断和GPIO。对于实时任务来说,中断的处理非常关键。通过IGH,Xenomai可以提供低延迟和可预测性的中断处理,从而满足实时应用对于快速响应和确定性的要求。 IGH的另一个功能是处理GPIO。GPIO是一个通用的输入输出接口,它可以用来连接外部设备,如传感器、执行器等。通过IGH,Xenomai可以实现对GPIO的实时控制,提供精确和可靠的输入输出操作。 在Xenomai中,IGH通过中断线程(interrupt thread)和GPIO线程(GPIO thread)来处理中断和GPIO。中断线程负责注册和处理外部中断,保证实时任务优先处理。GPIO线程负责配置和控制GPIO,实现对外部设备的实时控制。 Xenomai和IGH的使用可以帮助开发者实现实时应用程序,如机器人控制、数据采集、工业自动化等。通过提供实时能力和对硬件的底层访问,Xenomai和IGH可以满足对于实时性、可靠性和可预测性的严格要求。它们的开源特性和丰富的API也使得开发者可以灵活地定制和扩展系统。 ### 回答2: Xenomai是一个开源的实时操作系统框架,用于嵌入式系统和实时应用的开发。它是基于Linux内核的一个补丁包,通过使用Linux可编程实时单位(RTAI)和一个用于实时任务的用户空间组件(Xenomai igh)相结合的方式,提供了一个可预测和可靠的实时环境。 Xenomai igh是Xenomai框架中与实时任务管理有关的主要组件之一。它提供了一组API接口,使得开发者能够以类似于编写普通Linux应用程序的方式开发实时任务。这些接口包括任务管理、时间管理、中断管理等。通过使用这些接口,开发者可以实现基于时间限制的可预测性,确保实时任务在给定的时间内完成,满足实时性的要求。 Xenomai igh的核心理念是通过将实时任务划分为内核空间和用户空间的两个部分,实现对实时任务的管理和调度。用户空间中的实时任务通过Xenomai igh提供的API与内核空间中的驱动程序进行通信,实现数据传输和设备控制等功能。这样的设计目的是将实时任务的管理与应用程序的开发分离,提高了系统的可维护性和可扩展性。 Xenomai igh对于实时任务的调度也提供了丰富的支持。它使用先进的调度算法,如周期性负载的调度算法和最早截止时间优先算法,以确保实时任务能够按照预期的时间进行调度。此外,Xenomai igh还提供了可以动态调整调度参数的接口,以应对系统工作负载的变化。 总而言之,Xenomai igh是Xenomai框架中的重要组件之一,通过提供一系列API接口和先进的调度方式,为开发者提供了一个可预测和可靠的实时环境。它被广泛应用于嵌入式系统和实时应用的开发,并在实时性要求较高的领域发挥着重要的作用。 ### 回答3: xenomai是一种开源软件开发套件,它是一个提供实时执行环境的实时扩展,适用于Linux操作系统。它的全称是Xenomai关键基础结构 (Xenomai Infrastructure for Generic Hard Real-Time)。 Xenomai被设计用于将实时任务与Linux内核相结合,通过在用户进程空间创建一个类似实时操作系统的执行环境,实现严格的实时性能。这是通过使用一个称为Cobalt的核心架构来实现的,Cobalt提供了一个实时计时器,能够确保高分辨率的时钟服务。 Xenomai的一个主要功能是提供了一个称为POSIX Skin的接口,用于实现与POSIX标准兼容的编程接口,使得开发人员可以使用熟悉的POSIX API进行实时软件的开发。同时,Xenomai也提供了Native Skin接口,该接口提供了更低层次的编程接口,允许开发者直接访问内核实时任务、中断处理以及硬件设备。 通过使用Xenomai,开发者可以利用Linux操作系统的优势,如开源、丰富的设备支持和广泛的开发资源,来构建实时应用程序。它适用于许多应用领域,如工业自动化、机器人技术、音频处理和实时嵌入式系统等,能够满足对于高实时性能的严格要求。 总结来说,xenomai是一个开源软件开发套件,为Linux操作系统提供实时执行环境。通过它,开发者可以在Linux上构建具有严格实时性能要求的应用程序,并且可以使用熟悉的POSIX API进行开发。xenomai在实时应用领域有着广泛的应用,能够满足高实时性能的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值