从零制作视觉抓取机械臂实物系列:一、让机械臂实物动起来(3)

建立PC与机械臂的通讯

硬件接线

机械臂组装时要开机再组装,
硬件接线
可用串口或者蓝牙,
在这里插入图片描述

串口通讯控制

  1. 单个舵机控制指令:
#000P1500T1000!

说明:#与P 之间代表舵机ID,位数必须是3 位,对于PWM 舵机范围000~005,对于总线
设备000~254;P 与T 之间代表位置,位数必须是4 位,范围0500~2500;T 与!之间代表时间,
单位ms,位数必须4 位。
2. 多个舵机控制指令

{#000P1500T1000!#001P1500T1000!#002P1500T1000!}

说明:多个单舵机指令的组合体,注意两边的大括号。

写代码让机械臂自己动起来

github搜索代码,下载前点赞是最基本的程序员礼仪,这个代码比较小,可以直接下载,老步骤,解压,拖到文件夹,打开项目,设置编译器,安装包,这里安装包又出现了导入时名称与安装名称不一致的情况,conda install pyserial
运行起来,连上机械臂,选择串口号,打开串口,发送测试指令,嘿,nice
来,我们来品品人家这个代码
找到发送按钮,发送按钮的命令,查看代码,修改代码

data="{#000P1000T1000!#001P1500T1000!#002P1500T1000!}\n"

在init函数中加入

self.angle0=1500
self.angle0=self.angle0+100
if self.angle0>2500:
	self,angle0=2500
data="{#000P"+str(self.angle0)+"T1000!#001P1500T1000!#002P1500T1000!}\n"

键盘遥控机械臂

需求分析:添加一个按钮,点击这个按钮就可以进入键盘遥控事件,键盘的上下键能控制机械臂运动,再次点击按钮结束遥控。
第一步:我们需要添加一个开始遥控按钮:

spacelabel = tk.Label(optionframebottom, width=5, height=1)
spacelabel.pack()
self.controlbutton = tk.Button(optionframebottom, text='开始遥控', \
                            width=20, height=1, command=self.controlbuttoncmd)
self.controlbutton.pack()

第二步:修改按钮命令

def controlbuttoncmd(self):
    if self.controlbutton['text'] == '开始遥控':
        self.controlbutton['text'] = '结束遥控'
    else:
        self.controlbutton['text'] = '开始遥控'

第三步:开启键盘监听事件

def controlbuttoncmd(self):
    if self.controlbutton['text'] == '开始遥控':
        self.root.bind("<Key>", self.func)
        self.controlbutton['text'] = '结束遥控'
    else:
        self.root.unbind("<Key>")
        self.controlbutton['text'] = '开始遥控'
def func(self,event):
    print("事件触发键盘输入:{event.keysym},对应的ASCII码:{event.keycode}")

第四步:修改键盘监听事件

if event.keycode==38:
    self.angle0+=100
    if self.angle0>=2500:
        self.angle0=2500
    # data="{#000P"+str(self.angle0)+"T1000!#001P1500T1000!#002P1500T1000!}\n"
    data = "{#000P" + str(self.angle0) + "T1000!#001P"+str(self.angle1)+"T1000!#002P1500T1000!}\n"
    self.serial.write(data[0:-1].encode(self.encoding))
    time.sleep(1)
elif event.keycode == 40:
    self.angle0 -= 100
    if self.angle0<=500:
        self.angle0=500
    # data = "{#000P" + str(self.angle0) + "T1000!#001P1500T1000!#002P1500T1000!}\n"
    data = "{#000P" + str(self.angle0) + "T1000!#001P" + str(self.angle1) + "T1000!#002P1500T1000!}\n"
    self.serial.write(data[0:-1].encode(self.encoding))
    time.sleep(1)

elif event.keycode==37:
    self.angle1+=100
    if self.angle1>=2500:
        self.angle1=2500
    data = "{#000P" + str(self.angle0) + "T1000!#001P"+str(self.angle1)+"T1000!#002P1500T1000!}\n"
    self.serial.write(data[0:-1].encode(self.encoding))
    time.sleep(1)
elif event.keycode == 39:
    self.angle1 -= 100
    if self.angle1<=500:
        self.angle1=500
    data = "{#000P" + str(self.angle0) + "T1000!#001P"+str(self.angle1)+"T1000!#002P1500T1000!}\n"
    self.serial.write(data[0:-1].encode(self.encoding))
    time.sleep(1)

该教程的视频与源码:包括机械臂系统从上到下的梳理、机械臂的硬件、通讯与控制

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ROS机械臂视觉抓取是通过ROS(机器人操作系统)实现带有机械臂的移机器人进行物体抓取的过程。这可以通过使用开源的ROS软件包来实现,例如提到的move_and_grasp软件包。 在机械臂完成视觉抓取任务的过程中,通常会有以下几个步骤: 1. 首先,机械臂处于使能但未运的状态,准备执行抓取任务。这个初始状态可以在图4.6(a)中示意图中看到。 2. 然后,机械臂会移到适合深度相机拍摄清晰图像的抓取姿态。这个过程可以在图4.6(b)中看到。 3. 接下来,机械臂使用视觉识别技术来检测并识别目标物体。在这个例子中,机械臂会识别红色长方体作为目标物体。 4. 一旦目标物体被识别出来,机械臂会执行抓取操作,将目标物体抓取起来。这一步骤在图4.6(c)中展示出来。 5. 最后,机械臂会将目标物体放置到预设的码垛区,完成抓取任务。这个过程可以在图4.6(d)中看到。 总之,ROS机械臂视觉抓取是通过使用ROS和相关软件包实现机械臂进行物体抓取的过程,包括姿态规划、视觉识别和抓取作执行等步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Ubuntu&ROS】干货!小伙伴们快来拿,超全机械臂抓取开源项目!](https://blog.csdn.net/weixin_45087775/article/details/105587752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于机器视觉的ROS机械臂抓取实验](https://blog.csdn.net/Yong_Qi2015/article/details/128310565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值