夜雨聆风学习资料网

ARTICLE · 1247765

源码开源/会动的仿真机械臂控件

源码开源/会动的仿真机械臂控件

在工业上位机软件里,经常需要简单展示机械臂运行状态,不一定上完整3D引擎,有时候一个2D动画就够用。
这个RobotArmWidget就是一个纯Qt绘制的2D机械臂自定义Widget,不需要任何第三方库,只靠QWidget+QPainter绘图+QTimer定时器就实现动态动画效果。

  • • 源码开源
  • • 有需要的朋友
  • • 关注本公众号后
  • • 在文章后面评论我要源码字样
  • • 加微信feiyangqingyun
  • • 评论截图发微信即可
  • • 发的是当前单个控件的完整源码和使用示例
  • • 全套260个控件源码有需要可以考虑购买
  • • 麻烦顺带点赞转发下谢谢

能做到的效果:

  1. 1. 机械臂自动摆动,大臂小臂联动,夹爪会不停开合,模拟抓取动作。
  2. 2. 窗口拉大缩小,机械臂会自动适配控件大小,不会画超出边界。
  3. 3. 可以启停动画、调节摆动速度、摆动幅度。
  4. 4. 支持机械臂向左弯、向右弯两种姿态。
  5. 5. 臂杆、底座、关节的颜色都可以代码修改。
  6. 6. 停止动画时,机械臂保持当前姿势定格,不会自动复位。

整体画面包含:地面线、梯形底座、回转平台、肩关节、大臂、肘关节、小臂、腕部、两指夹爪。

二、整体开发思路

Qt自定义绘图控件标准套路:

  1. 1. 继承QWidget,重写paintEvent做所有绘图;
  2. 2. QTimer定时器驱动动画:定时修改相位变量,调用update()触发重绘;
  3. 3. 数学计算位置:三角函数计算每个关节点坐标,而不是写死像素,实现自适应窗口;
  4. 4. 拆分绘图函数:底座、机械臂杆、夹爪分成独立函数,代码好维护;
  5. 5. 封装属性+信号槽+Q_PROPERTY,外部代码可以很方便修改参数,还能在Qt Designer中使用;
  6. 6. 边界保护:所有长度、角度做上下限,防止参数越界导致画面错乱。

关键点:动画不是移动控件,是每一帧重新算坐标、重新画一遍画面。QWidget本身位置不动,画面全部由QPainter画在控件画布上。

三、可以继续扩展的方向

如果基于这个控件二次开发,可以增加这些功能:

  1. 1. 外部输入真实关节角度,不再自动动画,用来显示真实设备反馈回来的角度;
  2. 2. 增加工具提示,鼠标悬浮显示当前角度;
  3. 3. 增加夹爪张开角度单独可控;
  4. 4. 增加轨迹点绘制,画出机械臂末端运动轨迹;
  5. 5. 增加报警状态,故障时机械臂变红闪烁。

其他信息

  1. 1. 国内开源:https://gitee.com/feiyangqingyun
  2. 2. 国际开源:https://github.com/feiyangqingyun
  3. 3. 项目大全:https://qtchina.blog.csdn.net/article/details/97565652
  4. 4. 联系方式:微信 feiyangqingyun
  5. 5. 官方店:https://shop114595942.taobao.com/

相关学习资料