前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qt设计仿真机器人控制器

Qt设计仿真机器人控制器

作者头像
用户6557940
发布于 2022-07-24 07:26:52
发布于 2022-07-24 07:26:52
66900
代码可运行
举报
文章被收录于专栏:Jungle笔记Jungle笔记
运行总次数:0
代码可运行

引言

本文Jungle简单实现一个6自由度的工业机器人仿真控制器,用户可以通过界面上6个轴的滑条控制机器人的姿态。

01

Platform and robot model

Platform——vs2008,Qt4.8.6,Coin3D3.1.3

Robot model——KUKA KR16 robot,模型文件可以在官网上下载(https://www.kuka.com/)

02

UI设计

03

关于Robot

本文选择KUKA KR16机器人为例。查看该机器人的手册可知和示意图可得知机器人的各个杆长,各个轴的运动范围等参数。

机器人尺寸

机器人的杆长等尺寸用于确定机器人的DH参数(与机器人运动学相关):

轴运动范围

各个轴的运动范围则需要在程序中给予限定:

UI界面的滑条使用的是Qt提供的QSlider,因此各个QSlider的最大值最小值设置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  this->ui.horizontalSlider_Axis1->setRange(-185,185);
  this->ui.horizontalSlider_Axis2->setRange(-35,155);
  this->ui.horizontalSlider_Axis3->setRange(-130,154);
  this->ui.horizontalSlider_Axis4->setRange(-350,350);
  this->ui.horizontalSlider_Axis5->setRange(-130,130);
  this->ui.horizontalSlider_Axis6->setRange(-350,350);

04

关于实现

界面相关的实现过程如下:鼠标拖动任意一个轴的滑块滑动,对用的机器人轴转动到指定角度。这里采用的是QSlider的一个signal:valueChanged(int),每次拖动都会发射这个信号。

在对应的槽函数里主要实现:

(1)得到此时刻6个滑块的值,让机器人各个轴转动到各自对应的角度处;

(2)每个滑块左侧的文本框里实时显示角度数。

该部分代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Robot::initUiRobotAxis()
{
  this->ui.horizontalSlider_Axis1->setRange(-185,185);
  this->ui.horizontalSlider_Axis2->setRange(-35,155);
  this->ui.horizontalSlider_Axis3->setRange(-130,154);
  this->ui.horizontalSlider_Axis4->setRange(-350,350);
  this->ui.horizontalSlider_Axis5->setRange(-130,130);
  this->ui.horizontalSlider_Axis6->setRange(-350,350);
 
  connect(ui.horizontalSlider_Axis1,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
  connect(ui.horizontalSlider_Axis2,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
  connect(ui.horizontalSlider_Axis3,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
  connect(ui.horizontalSlider_Axis4,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
  connect(ui.horizontalSlider_Axis5,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
  connect(ui.horizontalSlider_Axis6,SIGNAL(valueChanged(int)),this,SLOT(setRobotPose()));
}

槽函数setRobotPose实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Robot::setRobotPose()
{
  double input_Joint[6] = {0,0,0,0,0,0};
  input_Joint[0] = 0.01*ui.horizontalSlider_Axis1->value();
  input_Joint[1] = 0.01*ui.horizontalSlider_Axis2->value();
  input_Joint[2] = 0.01*ui.horizontalSlider_Axis3->value();
  input_Joint[3] = 0.01*ui.horizontalSlider_Axis4->value();
  input_Joint[4] = 0.01*ui.horizontalSlider_Axis5->value();
  input_Joint[5] = 0.01*ui.horizontalSlider_Axis6->value();
 
  ui.lineEdit_Axis1->setText(QString::number(input_Joint[0]));
  ui.lineEdit_Axis2->setText(QString::number(input_Joint[1]));
  ui.lineEdit_Axis3->setText(QString::number(input_Joint[2]));
  ui.lineEdit_Axis4->setText(QString::number(input_Joint[3]));
  ui.lineEdit_Axis5->setText(QString::number(input_Joint[4]));
  ui.lineEdit_Axis6->setText(QString::number(input_Joint[5]));
 
  this->setAxis(input_Joint);
}

05

效果

http://mpvideo.qpic.cn/0af2an66ym4vycqoambaeaqkb4gvzuntan2gjkuha4ba2cipa4aa.f10002.mp4?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jungle笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Qt设计机器人仿真控制器——按键控制机器人关节转动
在上两篇博客里,Jungle介绍了Qt键盘事件,并在小程序中应用Qt键盘事件监测按键输入:
用户6557940
2022/07/24
1.1K0
Qt设计机器人仿真控制器——按键控制机器人关节转动
C++ Qt开发:Slider滑块条组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Slider滑块条组件的常用方法及灵活运用。
王瑞MVP
2023/12/16
8890
C++ Qt开发:Slider滑块条组件
【QT】显示类控件
虽然 QPushButton 也可以通过设置图标的⽅式设置图⽚,但是并⾮是⼀个好的选择。更多的时候还是希望通过 QLabel 来作为⼀个更单纯的显⽰图⽚的⽅式。
YoungMLet
2024/07/16
1880
【QT】显示类控件
Qt父窗口与子窗口数据交互(用拾色器举例)
主窗口和子窗口创建好后,就要进行数据交互了,再敲代码之前,读者应了解实现交互的步骤:
花狗Fdog
2020/10/28
3.1K0
Qt父窗口与子窗口数据交互(用拾色器举例)
C/C++ Qt 基础通用组件的应用
QT 是一个跨平台C++图形界面开发库,利用QT可以快速开发跨平台窗体应用程序,在QT中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率。
王瑞MVP
2022/12/23
3.8K0
C/C++ Qt 基础通用组件的应用
发布 | 音量控制器
❝可设置/同步扬声器与录音音量。(目前仅支持Windows系统)❞ image.png 功能 「可设置扬声器/录音音量,开关静音功能」。 部分代码 音量控制类VolumeController对外接口。 class VolumeController {public: explicit VolumeController(); virtual ~VolumeController(); int getSpeakerVolume(); bool setSpeakerVolume(in
Qt君
2020/02/24
1.2K0
基于QT播放器的实现(一)Rgb、YUV格式(附带代码)
R = Y + 1.402 * (V-128) G = Y – 0.34413 * (U-128) – 0.71414*(V-128) B= Y + 1.772*(U-128)
全栈程序员站长
2022/09/05
1.9K0
QT软件开发:基于QtAV设计的视频播放器
完整源码下载: https://download.csdn.net/download/xiaolong1126626497/19759245
DS小龙哥
2022/01/12
1.6K0
QT软件开发:基于QtAV设计的视频播放器
Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
在开发程序时,如果这个程序只有一个窗口,则应该关心这个窗口里面的各个控件之间是如何传递数据的。如果这个程序有多个窗口,那么还应该关心不同的窗口之间是如何传递数据的。
不脱发的程序猿
2021/12/08
3.3K0
Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
QT软件开发: 基于QT设计的完整版视频播放器、多媒体播放器(mdk-sdk)
完整工程源码下载地址(下载即可编译运行): https://download.csdn.net/download/xiaolong1126626497/19387165
DS小龙哥
2022/01/12
6.9K0
QT软件开发:  基于QT设计的完整版视频播放器、多媒体播放器(mdk-sdk)
PyQt5可编辑下拉框(comboBox):editable - python TCP服务器v1.5 - 客户端连接界面增加自定义参数(设置超时, 连接地址可选)
login.png(应该为.ico格式,直接将.png改为.ico即可,我已经换好了,但csdn平台不能传ico,所以改为了.png).
zmh-program
2023/02/06
1.4K0
Qt面试题(二)
QT 理论试题 1以下关于 QT 的描述正确的是 a. 是一个不跨平台的 C++图形用户界面 b. 由挪威 TrollTech 公司出品 c. 只支持 Unix、Linux d. QT API 和开发工具对所支持的平台是不一致的 2以下关于 QT 的描述不正确的是 a. QT 支持 2D 图形渲染 b. QT 支持 3D 图形渲染 c. QT 支持 OpenGL
全栈程序员站长
2022/09/12
2.2K0
Qt入门系列(三)
选装父文件—>添加文件-->Qt--->设计师界面->命名smallWidget(简称sw)
用户9831583
2022/06/16
1.2K0
Qt入门系列(三)
物联网智能家居系统设计方案(想开一家智能产品店)
利用qt以及c++语言数据结构等相关知识后,在windows开发环境下,以cc2530芯片为控制核心,利用Zigbee和串口通信技术,温湿度、电机、烟雾、红外等传感器为环境信息采集源,以串口控制为辅助,来制作一个物联网智能家居系统。 基本要求如下: (1)界面友好,易与操作。采用菜单或其它人机交互方式进行选择。 (2)能实现数据的采集与处理,通过智能的软硬件处理方式,使用简单的方式,能够在PC端解决一些生活中常见的问题。
全栈程序员站长
2022/07/28
1.2K0
物联网智能家居系统设计方案(想开一家智能产品店)
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5530
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
QT应用编程:基于QMediaPlayer开发音视频播放器
QMediaPlayer是Qt提供的一个跨平台媒体播放器类,它没有自带解码库,而是对平台相关的播放器框架做了封装,提供了平台无关的API。所以使用QMediaPlayer播放视频,需要提前安装解码库。 在win系统下可以下载K-Lite_Codec_Pack或者LAVFilters解码库安装。
DS小龙哥
2022/01/07
3.5K0
QT应用编程:基于QMediaPlayer开发音视频播放器
QT软件开发:基于libVLC内核设计视频播放器
完整工程下载地址(下载即可编译运行): VLC_Core_VideoPlayer.zip-QT文档类资源-CSDN下载
DS小龙哥
2022/01/12
3.1K2
QT软件开发:基于libVLC内核设计视频播放器
QT应用编程:基于VLC开发音视频播放器(句柄方式)
完整项目代码下载地址: https://download.csdn.net/download/xiaolong1126626497/16579867
DS小龙哥
2022/01/07
1.5K0
QT应用编程:基于VLC开发音视频播放器(句柄方式)
Qt播放器常用设置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133657.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/27
2.9K0
Qt播放器常用设置
一、Qt初尝试,做一个QT计算器《QT 入门到实战》
注:本章中使用的一些方法方法是为了简单的了解一下概念性质,例如在多个槽函数时使用的方法并不是简便的,简便的方法在之后的学习中将会进行讲解。
1_bit
2022/12/10
2.9K0
一、Qt初尝试,做一个QT计算器《QT 入门到实战》
推荐阅读
相关推荐
Qt设计机器人仿真控制器——按键控制机器人关节转动
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档