当前位置: 首页 > article >正文

零差云控电机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这几个函数,并且在循环中也要更新

http://www.kler.cn/a/287615.html

相关文章:

  • IDEA优雅debug
  • 【MQTT.fx 客户端接入 阿里云平台信息配置】
  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--完善TODO标记的代码
  • 前端Javascript、Vue、CSS等场景面试题目(二)
  • Zotero 7本地pdf文件名自适应中英文格式
  • JMeter与大模型融合应用之JMeter日志分析服务化实战应用
  • 【Linux】POSIX版本 信号量
  • 质量属性场景-系统架构师(六十)
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3打卡
  • 后端开发刷题 | 面试篇3
  • DASK==延迟对象delayed
  • QT QGraphicsView实现预览图片显示缩略图功能
  • Protocol Buffers
  • java打包jar后读取依赖jar包中的文件资源,支持读取jlink打包的模块镜像中读取
  • axure9树形元件节点的添加
  • SQL-多表查询
  • 深入理解Java集合:如何使用for增强循环和泛型类型转换
  • 笔记整理—uboot番外(1)命令体系
  • 大佬借助ChatGPT写论文发刊到手软,四个步骤20个顶级学术提示词指令
  • MyBatis-SQL-语句执行流程
  • UE5 UMG UI编辑器工作流
  • mybatis if标签判断字符串是否相等
  • 面试基本内容
  • 【GD32】RT-Thread实时操作系统移植(GD32F470ZGT6)
  • 中介者模式详解
  • Pytorch实现多层LSTM模型,并增加emdedding、Dropout、权重共享等优化