网站后台流程图,wordpress前台调用,南昌网页制作公司,免费动画制作网站介绍 今天#xff0c;我将向大家展示一个我独立设计并实现的机械臂模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽#xff0c;机械臂就能立即跟随你的动作进行移动。 我之所以想要创造这样一个模型#xff0c;是因为在一些危险环境中#xff0c;我们可… 介绍 今天我将向大家展示一个我独立设计并实现的机械臂模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽机械臂就能立即跟随你的动作进行移动。 我之所以想要创造这样一个模型是因为在一些危险环境中我们可以用机械臂来代替人工进行作业从而避免人员的生命安全受到威胁。 你可能会问为什么不直接使用远程的键盘控制、手柄控制或者APP控制而要选择手动拖拽的方式呢我觉得只有手动操作才能最大程度上满足我们对动作精准度的需求。因此我决定开始尝试制作这个模型并初步完成了整个demo。 我希望通过这个demo我能向大家展示出机械臂的无限可能性同时也希望能激发出大家对未来科技的无限憧憬。 机械臂设备 mechArm 270 M5 mechArm 270 是一款六自由度的机械臂它精巧的结构设计能够放入一个书包里携带和方便。较为重要的一点是开放了很多控制的API用python能够快速开始对机械臂的控制。没有很复杂的操作甚至还有图形编程这对一些不是很懂代码的人也能够快速上手控制机械臂。 mechArm是一款桌面型的仿工业结构的机械臂工作最大半径在270mm负载250g重复定位精度控制在±0.5mm。 Project 介绍完基础的设备我们就开始介绍我时如何制作这个demo过程的记录。 使用的环境 操作系统windows11 编程语言python3.9 python libpymycobottime pymycobot是大象机器人的一个开源库专门用来控制大象机器人的机械臂。一段简单的控制代码例子。 Code #Main methods used#Create objects to communicate with the robotic arm.
MyCobot(serial,baud)
# angles control robot,
send_angles([list_angles],speed)
# coords control robot
send_coords([list_coords],speed,mode)Example:import time
from pymycobot.mycobot import MyCobot# create a object
mc MyCobot(com7,115200)# angles control
mc.send_angles([0,0,0,0,0,0],100)
time.sleep(1)
mc.send_angles([90,90,90,90,90,90],100)
time.sleep(1)简单介绍了下如何使用python来控制mechArm是不是很容易呢。 分析问题 开始项目之前要搭建框架了解我们具体需要解决什么问题才能够实现。对此我做了一个项目的流程图。下面我将手动施教的机械臂简称为R1跟随运动的机械臂简称为R2。 Control robotic arm上边已经提到了如何控制机械臂使用pymycobot库提供的方法就可以实现了。 Motion Control methodsR1机械臂可以用手拖动时时刻刻返回当前机械臂的角度信息R2机械臂接收R1的机械臂角度信息进行控制。 Communication between robotic arms整个项目中这一步骤是比较重要的一步。建立好之后机械臂能够发送信息就能够很轻易的实现了。 接下来主要讲解Motion Control methods和communication between robotic arms。 Motion Control methods 获取实时角度信息 pymycobot提供了”get_angles()方法可以过去当前机械臂的角度信息。 # Can obtain the current angle information of the robotic arm in real time
get_angles()# example
print(real-time angles:,mc.get_anlges())result: real-time angles:[0,0,0,0,0,0]# Continuously obtain the current angle
while True:angels mc.get_angles()print(angles) time.sleep(0.1) #Go to the next step every 0.1s 机械臂的刷新模式设置 机械臂的刷新模式主要分为两种插补模式和非插补模式是指在运动轨迹规划中控制机械臂末端执行器的移动方式。如果没有设置任何模式机械臂可能无法正确执行预期的运动并且可能导致以下后果 运动不平滑运动不准确运动不连续 插补模式插补模式可以实现平滑连续的轨迹规划确保机械臂末端执行器的位置和姿态在运动过程中平滑过渡。 非插补模式非插补模式是指机械臂在运动过程中只关注特定的目标点而不进行插值计算。在非插补模式下机械臂的位置和姿态会在关键点之间直接跳跃而不会经过平滑的过渡。 在进行多个机械臂同时使用插补模式进行运动时可能会出现等待或排队的情况所以我们选择使用非插补模式。 #Set refresh mode
set_fresh_mode(1/0)
1no interpolation
0interpolationmc.set_fresh_mode(1)我们将前面的整合在一起的代码如下 Code: import time
from pymycobot.mycobot import MyCobotmc MyCobot(COM7, 115200) #release arm
mb MyCobot(COM11, 115200) #move armmb.set_fresh_mode(1) #no interpolation
time.sleep(1)
mc.release_all_servos() #release robot
time.sleep(1)
speed 100
while True:angles mc.get_angles() #get release arm anglesmb.send_angles(angles, speed) #send angles to move armtime.sleep(0.1)Communication between robotic arms 我们的方案是两台机械臂接入同一个PC用串口连接的方式. # build connection
from pymycobot.mycobot import MyCobotmc MyCobot(COM7, 115200)
mb MyCobot(COM11, 115200)用最基础的usb数据线进行连接我们电脑上就有两个机械臂的串口号可以对他们分别发送指令任务。 让我们一起来看看效果如何 总结 根据内容可以看出来虽然说是能够做到百分之七八十的同步。也会因为一些其他的因素所影响 造成了不小的延迟。造成延迟的原因可能有几个方面比如说数据处理和传输的速度机械臂的反应速度软件的优化硬件的性能等等这些都是可能 产生延迟的因素。 除此之外还有一个很大的局限性就是它们的通信通过串口进行连接的如果距离稍微远一点的话就没办法在用这种方法去使用实用性不强后期我会尝试使用蓝牙WiFi等无限连接的方式来尝试控制。 本次记录就更新到这里如果你有更好的想法无论是优化的功能或者说是其他的建议欢迎在下方留言。