01 机械控制臂


1.简介

调试机械臂一体化控制电路:STM32F103控制器初步调试 对于 三轴机械臂的 的控制,最初版本采用了 简易调试命令组合。 这个命令是为了付方便最初的调试与测试机械臂的机械性能。详细的控制指令在 机械臂底层通信协议说明 中已经给出了。

经过最初的测试,反馈了一些基本的运动问题,本文对于存在的问题进行总结,并且对第一版本的软件进行升级。

2.存在问题

(1)运动不均匀

如下图所示,运动出现时走时停的情况:

▲ 运动不均匀

■ 分析: 具体原因不明。但提醒如下问题:

  1. 组装之后的机械臂的关节角度传感器需要进行通讯波特率的设置
  2. 角度传感器的方向需要进行归一化;
  • 关于角度传感器波特率的设置: 角度编码器 ST-3806-15-RS

  • 关于角度传感器关节设置: 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取

  • 关于机械爪角度控制,有一个需要说明的是:在原来的电路板,PSERV接口的电源定义与普通的舵机的引线不同。下面是修改后的电路板对应的PSERV的定义顺序。

▲ PSERV接口的电源定义顺序与舵机不同

注意:舵机的の接口中,它的接口通常定义为:GND, +5V,SIGNAL。

(2)运动控制需求说明

相关的修改说明有小吕发送过来,整理在 三关节机械臂控制需求说明压缩文件中的相关文档说明 中了。

(3)电路硬件修改

在电路板上增加1000uF。

▲ 在电路板+5V上增加1000uF电容,可以减少爪舵机运动电路的影响

3.修改准备

(1)电气连接1

使用GWINSTEK直流电源提供24V,5V电源,连接到系统的电机供电与控制电路板5V电源。

▲ 接入24V,5V电源

(2)软件开发

D:\zhuoqing\window\ARM\IAR\STM32\Application\XQWF\2020\CNTSTM103\Src\main.c

STM32下载程序界面:

▲ 下载程序界面

02 基本测试


在对机械臂进行测试之前,需要将机械臂上的各种 各种传感器、执行器与控制板进行相连 ,具体过程可以参见:

  • 三关节机械臂上的传感器 、执行器与控制板STM32F103连接

1.串口控制命令

在STM32下载程序的对话框内输入如下控制命令,可以对机械臂进行初步测试。

  • armup,armdown: 这两个命令没有参数,分别控制机械臂运动的上,下位置。

▲ 机械臂上下移动

  • claw n : 这个命令是直接设置舵机的控制脉冲的宽度,单位:微妙。
  • n=1000 :张开
  • n=2500:闭合

▲ 使用claw命令设置机械爪的状态

2.角度读取与设置

测试原来的两个关节的角度读写出现了故障。这个现象有可能就是在1.2.1提到的运动不均的原因。

关于 对机械臂的肩关节与肘关节编码器连接与设置 请详见这个链接。

▲ 电路板上的MCU:F103

3.肩部和肘关节运动

通过前面的检查,使用一下命令来控制关节运动。

shgoto n :控制肩部关节角度; n∈(8192, 24567)
elgoto n: 控制肘部关节角度:n∈(4096,28672)

肩部运动是先加速在减速的过程。肘部运动是匀速运动的过程。

▲ 肩部运动

▌结论


本文总结了第一版软件反馈回来之后所遇到的问题。其中原来出现的肩部和肘部运动的问题主要是由于角度传感器读写故障引起的。

■ 相关文献链接:

  • 调试机械臂一体化控制电路:STM32F103控制器初步调试
  • 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28
  • 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合
  • 机械臂底层通信协议说明
  • 角度编码器 ST-3806-15-RS
  • 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取
  • 三关节机械臂控制需求说明压缩文件中的相关文档说明
  • 三关节机械臂上的传感器 、执行器与控制板STM32F103连接
  • 对机械臂的肩关节与肘关节编码器连接与设置

※ 附件


1.Python测试程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# RBCMD.PY                     -- by Dr. ZhuoQing 2021-02-18
#
# Note:
#============================================================from head import *
import serial
from _ast import Or
from serial.serialutil import SerialException#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 115200
sport.timeout = 0.05
try:sport.port = 'COM3'
except:printf('Set sport port COM3 error. ')try:sport.open()
except serial.serialutil.SerialException:printf('Open sport port COM3 error.')
else:printf('Open sport port COM3 Ok.')
#------------------------------------------------------------
def rbcmd(cmd, arg):headbyte=0x55tailbyte=0xaacmdframe = cmd.to_bytes(byteorder='little', length=1) + arg.to_bytes(byteorder='little', length=2)sendframe = (headbyte.to_bytes(byteorder='little', length=1) + cmdframe +tailbyte.to_bytes(byteorder='little', length=1))sport.write(sendframe)for i in range(20):time.sleep(0.001)if sport.inWaiting() > 0: breakret = sport.read(100)return ret#------------------------------------------------------------
def rbangle():ret = rbcmd(0x08, 0x0)if len(ret) != 5: return (0, 0)return (ret[0]*0x100 + ret[1],ret[2]*0x100 + ret[3])def rbshoulder(angle):rbcmd(0x1, angle)def rbelbow(angle):rbcmd(0x2, angle)#------------------------------------------------------------
def str2num(strn):if len(strn) > 2:if strn[:2] in '0x 0X'.split():return int(strn[2:], 16)return int(strn)#------------------------------------------------------------
if __name__ == "__main__":if len(sys.argv) < 2:printf("rbcmd cmd arg\a")exit()#--------------------------------------------------------if sys.argv[1] == 'shgoto':argn = str2num(sys.argv[2])printf("Shoulder Angle :%d"%argn)rbshoulder(argn)elif sys.argv[1] == 'elgoto':argn = str2num(sys.argv[2])printf("Elbow Angle :%d"%argn)rbelbow(argn)else:printf("Error command:%s."%sys.argv[1])#------------------------------------------------------------
#        END OF FILE : RBCMD.PY
#============================================================

  1. 控制电路板AD工程文件:AD\XQWF\2020\机械臂\F103C82AXES.PcbDoc ↩︎

三关节机械臂控制命令修改相关推荐

  1. 三关节机械臂控制需求说明压缩文件中的相关文档说明

    ▌01 机械臂控制需求 先驱威锋公司的小吕(微信号:南天)发送过来机械臂控制需求说明文档,其中包括有: 01机械臂当前需求以及后续开发需求.docx 02机械臂测试说明.docx 03机械臂定位方案2 ...

  2. 三关节机械臂上的传感器 、执行器与控制板STM32F103连接

    ▌01 三关节机械臂 三关节控制臂 通过 调试机械臂一体化控制电路:STM32F103控制器初步调试 完成控制.本文描述了机械臂上的各个传感器.执行器与控制板之间的连接方法以及测试方法. 关于机械臂的 ...

  3. 对于STM32F103控制的三轴机械臂基本功能测试-关节转动控制

    ➤01 机械臂调试 1.简介 对于 基于STM32对于三轴机械臂控制器设计 的设计已经进行了如下的调试: 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取 对于STM32F103三 ...

  4. 【从零开始的ROS四轴机械臂控制】(二) - ROS与Gazebo连接,Gazebo仿真及urdf文件修改

    [从零开始的ROS四轴机械臂控制(二)] 四.urdf文件及gazebo仿真 1.simple_arm示例 (1)config文件夹 (2)launch文件夹 (3)meshes文件夹 (4)urdf ...

  5. 【从零开始的ROS四轴机械臂控制】(三) - 为机械臂添加摄像头和夹爪、解决gazebo模型抖动、使用gazebo建立sdf模型

    [从零开始的ROS四轴机械臂控制(三)] 五.在gazebo中添加摄像头 1.修改arm1.gazebo.xacro文件 2.修改arm1.urdf.xacro文件 3.查看摄像头图像 六.为模型添加 ...

  6. 【神经网络】基于RBF神经网络的六关节机械臂无模型控制

    前言:最近在搞神经网络,看到有用神经网络逼近未建模动态的,也有用神经网络来逼近整个模型的,后者即是无模型控制.无模型控制它不需要知道系统的名义模型,直接用神经网络来逼近整个系统,感觉这个方法还蛮厉害的 ...

  7. Moveit实际的机械臂控制(4)修改机械臂配置文件实现真实控制

    该部分内容主要参考合工大机器人实验室的内容,但是由于版本问题,我们可能好多地方的内容有些不一样. 一.需要修改的内容 1.1 demo.launch文件中参数fake_execution的值改为fal ...

  8. 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取

    ➤01 机械臂调试 1.简介 对 基于STM32对于三轴机械臂控制器设计 中对应的控制电路读取肩部和肘部两个 角度编码器 ST-3806-15-RS 数据进行调试. 2.接口电路1 ▲ 角度读取的相关 ...

  9. 【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真

    前记: 之前学习了很多关于ROS的知识,现在想自己制作一个四轴器械臂来练练手.所以就定为arm0.1版本,使用MG90s舵机来搭建一个四轴机械臂.arm0.1版本的目标是对不同颜色的方块进行分类并在G ...

最新文章

  1. java 是怎么在中删除下拉列表_删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作-jquery...
  2. 敏捷冲刺每日报告四(Java-Team)
  3. Scrapy爬虫及案例剖析
  4. ArUco估计位姿原理
  5. 参赛作品介绍 | IM体感游戏、校园管家...这些创意颠覆你的想象!
  6. F - 娜娜梦游仙境系列——多民族王国
  7. plsql轻量版游标的使用
  8. 哈哈哈哈哈!“科研打工人”的凡尔赛
  9. Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires
  10. 力扣题目——997. 找到小镇的法官
  11. 【BUG提交】freemarker 使用Struts2标签问题
  12. OSEK/VDX网络管理
  13. 为何最简单的破坏命令通过了众多杀软
  14. python把英语句子成分字母_英语句子成分分析报告(最完整版)
  15. Allegro 常见问题
  16. 阿里2018届实习生内推经历
  17. 免费统计微信复制//打开/咨询/下载/表单按钮点击统计工具-好多粉
  18. 华为日历怎么显示一月_华为P20使用感受
  19. XML文件介绍,这也太简单了
  20. 使用STM8S003K3 ADC简介以及初始化

热门文章

  1. Python回顾与整理5:映像和集合类型
  2. Nestjs 微服务
  3. redis-4.0.1安装配置(CentOS 6.6)
  4. ubuntu16 kubernetes1.6安装(六、node节点部署)
  5. 走进JavaScript响应式编程(Reactive Programming)
  6. Spark机器学习(8):LDA主题模型算法
  7. java清除cookie
  8. 每个优秀程序员必须具备的技术技能
  9. 对于tnsping的连接超时的功能补充
  10. 我的angularjs源码学习之旅2——依赖注入