1.4-机械臂抓取指定空间位置的物体《智能机器人技术应用》_第1页
1.4-机械臂抓取指定空间位置的物体《智能机器人技术应用》_第2页
1.4-机械臂抓取指定空间位置的物体《智能机器人技术应用》_第3页
1.4-机械臂抓取指定空间位置的物体《智能机器人技术应用》_第4页
1.4-机械臂抓取指定空间位置的物体《智能机器人技术应用》_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一机械臂移动与物体抓取创灵实验平台机械臂抓取指定空间位置的物体任务五职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体复习并掌握本章所学内容;能够熟练应用SDK以及串口俩种方法编写python脚本控制机械臂抓取指定空间位置的位置;能够熟练操纵机械臂完成指定任务完成所需要求。掌握Python-Serial库的使用;掌握uArm-Python-SDK控制机械臂方法;掌握串口控制机械臂方法;掌握使用串口编写Python脚本控制机械臂。职业能力目标01实验目的实验内容职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体

此任务要求同学们复习并掌握本章所学内容,能够熟练应用SDK以及串口俩种方法编写python脚本控制机械臂抓取指定空间位置的位置,并能够熟练操纵机械臂完成指定任务。为后续章节学习奠定基础。任务描述任务要求安装Python-Serial库,能够根据实验所需使用对应函数;复习巩固uArm-Python-SDK控制机械臂方法;能够使用常用串口控制机械臂指令加入对应实验中;完成脚本编写,通过串口编写Python脚本控制机械臂;对本项目复习巩固,能够独立完成实验。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体任务分析在本项目中我们学习了机械臂的安装,机械臂移动到自定位置,SDK、串口控制机械臂,大家再学习完后有什么感想呢?二.根据自己的了解,

通过机械臂在生活中还有哪些用途呢?任务分析与计划03任务计划表项目名称创灵实验平台任务名称机械臂抓取指定空间位置的物体计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

4

5

6

通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体串口通信的相关参数及作用204知识储备1Python-SDK

Python-SDK是一个使用Python封装的用于Swift/SwiftPro机械臂基本控制的库,机械臂基本控制的库在本地【./uArm-Python-SDK-2.0/】文件夹下,github地址为:/uArm-Developer/uArm-Python-SDK。Python-SDK包含Swift/SwiftPro机械臂常用的基本操作,如移动、吸盘吸泵吸放、电动夹子基本使用以及各种拓展功能等等。丰富的函数,使得编写控制机械臂的编程变得极为简单。我们来复习下什么是Python-SDK?Python-SDK04Python-SDK04

SDK就是SoftwareDevelopmentKit的缩写,中问意思是:软件开发工具包。为了解释“SDK”我们引入API、动态连接库、导入库等概念:(1)API(ApplicationProgram--mingInterface):是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。还记得SDK有哪些概念吗?例如:API、DLL等。什么是API?04

API(ApplicationProgrammingInterface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。其实早在DOS时代就有API的概念,只不过那个时候的API是以中断调用的形式(INT21h)提供的,还记得要怎么去使用API吗?什么是API?04

在DOS下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将AH置为30h后调用INT21h就可以得到DOS操作系统的版本号。而在Windows中,系统API是以函数调用的方式提供的。同样是取得操作系统的版本号,在Windows中你所要做的就是调用GetVersionEx()函数。还记得要怎么去使用API吗?Python-SDK04

(2)DLL(DynamicLinkLibary)动态连接库:我们经常看到一些.dll格式的文件,这些文件就是动态连接库文件,其实也是一种可执行文件格式。跟exe文件不同的是,dll文件不能直接执行,他们通常由.exe在执行时装入内含有一些资源以及可执行的代码等。那DLL的详细介绍呢?什么是DLL?04

DLL,即DynamicLinkLibrary(动态链接库)。在Windows环境下含有大量.dll格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟.exe文件不同的是,.dll文件不能直接执行,通常由.exe在执行时装入,内含有一些资源以及可执行代码等。其实Windows的三大模块就是以DLL的形式提我们要怎么使用DLL?什么是DLL?04

供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了API函数的执行代码。为了使用DLL中的API函数,必须要有API函数的声明(.h)和其导入库(.lib),导入库可以先这样理解,导入库是为了在DLL中找到API的入口点而使用的。我们要怎么使用DLL?Python-SDK04

(3)导入库:导入库是为了在DLL中找到API的入口点而使用的,所以,为了使用API函数。我们要又跟API所对应的.H和.LIB文件,而SDK正式提供了一整套开发Windows应用程序所需的相关文件、范例和工具的“工具包”。思考一下,我们要怎么导入对应库?Python-SDK04

SDK包含了使用API的必需资料,所以也常把仅使用API来编写Windows应用程序的开发方式叫做“SDK编程”。而API和SDK是开发Windows应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如VCL和MFC,虽然比起“SDK编程”来有着更高的抽象度,但这丝毫不妨碍在需要的时候随时直接调用API函数。Python-SDK04连接机械臂:swift.connect()##连接机械臂swift.disconnect()##断开连接获取方法:swift.get_power_status()##获取工作状态swift.get_limit_switch()##获取工作信息swift.get_gripper_catch()##机械臂抓取swift.get_pump_status()##获取吸泵状态swift.get_mode()##获取模型swift.get_servo_attach(servo_id=2)##获取电机加载swift.get_servo_angle()##获取电机角度swift.get_polar()##获取坐标系swift.get_position()##获取位置swift.get_analog(0)##获取模拟swift.get_digital(0)##获取数据

SDK常用方法:Python-SDK04设置方法:swift.set_speed_factor(1)##设置速度参数swift.set_mode(mode=0)##设置模拟量值swift.set_wrist(90)swift.set_servo_attach()##设置电机加载swift.set_servo_detach()##设置电机分离swift.set_buzzer(frequency=1000,duration=2)swift.set_pump(on=True)##设置吸泵swift_set_gripper(catch=True)##设置机械臂移动swift.reset()##重置状态swift.set_position(x=200,y=0,z=100,speed=100000)##设置参数swift.set_polar(stretch=200,rotation=90,height=150)##设置坐标swift.set_servo_angle(servo_id=0,angle=90)##设置舵机属性

SDK常用方法:05知识储备串口通信的相关参数及作用213Python-SDK串口通信的相关参数及作用04

这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。一般调制速率大于波特率,比如曼彻斯特编码)。波特率:串口通信的相关参数及作用04

这是衡量通信中实际数据位的参数。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。数据位:停止位04

用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。思考一下,我们要怎么在串口中设置呢?串口通信的相关参数及作用04

在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不奇偶校验位:串口通信的相关参数及作用04

真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。奇偶校验位:职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体串口控制机械臂移动到指定位置205任务实施使用uArm-Python-SDK编写控制机械臂的Python脚本1接下来到了实践练习的时刻了,让我们来回忆一下第二章通过SDK控制机械臂有哪些重要的知识点吧:使用uArm-Python-SDK编写控制机械臂的Python脚本05

uArm-Python-SDK核心代码结构说明luarm/wrapper/swift_api.pyuArm-Python-SDK核心API模块,主要核心的方法都在这个模块中luarm/tools/threads.py线程管理模块luarm/tools/list_ports.py获取串口端口号的方法集成模块luarm/tools/config.py机械臂固定的配置文件luarm/swift/protocol.py控制机械臂过程用到的串口命令luarm/swift/pump.py吸泵控制模块异步装饰器lPython装饰器:可以让被装饰的函数在不修改代码的情况下增加额外的功能,装饰器本质上是一个函数l异步:即非阻塞,意味着在执行某项任务时候不会阻塞后续或其他任务的执行多线程:在进程基础上开辟多个执行任务的线程接下来到了实践练习的时刻了,让我们来回忆一下第二章通过SDK控制机械臂有哪些重要的知识点吧:使用uArm-Python-SDK编写控制机械臂的Python脚本05uArm-Python-SDK常用函数使用lswift=SwiftAPI()连接机械臂,初始化机械臂lswift.reset(speed=1000)机械臂位置重置,默认速度是1000,可根据实际需要进行调整lswift.get_position()获取机械臂位置方法,返回的是x,y,z浮点类型值lswift.set_position(x=100,y=100,z=80)移动机械臂到指定坐标方法lswift.set_pump(on=False)打开或关闭吸泵方法,默认是Flase吸泵是关闭,需要打开是将on=True即可大家还记得多少前置知识呢,那么接下来到了我们的实践环节,大家开始动手练习尝试编写SDK控制机械臂的相关代码吧!实验预览:使用uArm-Python-SDK编写控制机械臂的Python脚本05#对应封装代码importtimefromuarm.wrapper

importSwiftAPIfromthreadingimportThreadswift=SwiftAPI()#调用API实例化time.sleep(3)swift.reset(speed=1000,z=100)#速度参数为1000,z轴高度100stop_=

False

def

async_call(fn):

"""异步装饰器:paramfn:函数:return:"""

def

wrapper(*args,**kwargs):#传入字典th=Thread(target=fn,args=args,kwargs=kwargs)th.start()

returnwrapper

@async_calldef

move_left():position=swift.get_position()x=position[0]y=position[1]z=position[2]

whileTrue:y=y-2swift.set_position(x=x,y=y,z=z)#坐标参数设置time.sleep(0.5)

ifstop_:

break

def

stop_button():

globalstop_stop_=Trueswift.disconnect()

print("停止成功")实验预览:使用uArm-Python-SDK编写控制机械臂的Python脚本05开始(点击运行,机械臂开始向左移动):move_left()结束(点击运行,机械臂结束移动):stop_button()通过阅读并运行代码,你是否了解了通过SDK控制机械臂的原理吗?那你能不能举一反三,思考如何更改上述代码,控制机械臂向右、向上、向下移动呢?#请根据课本所学,编写相应代码:实验预览:使用uArm-Python-SDK编写控制机械臂的Python脚本05我们刚刚已经通过阅读代码并运行向左移动机械臂这一实验,对SDK控制机械臂有了一定的了解了吧,那么接下来我们来学习如何控制吸泵的开启与关闭。importtimefromuarm.wrapper

importSwiftAPIswift=SwiftAPI()time.sleep(3)swift.reset(speed=1000)swift.set_pump(on=True)关闭吸泵:swift.reset(speed=1000)swift.set_pump(on=False)time.sleep(2)swift.disconnect()打开吸泵:05任务实施串口控制机械臂移动到指定位置213使用uArm-Python-SDK编写控制机械臂的Python脚本串口控制机械臂移动到指定位置通过对第三章知识点的回顾,相信大家对之前的知识有了更好的了解。那么我们要怎么更好得使用串口完成所需任务呢?在学习完后,我们要怎么帮所学整合利用,学以致用呢?串口方式实现机械臂三维空间移动

05通过对第三章知识点的回顾,相信大家对之前的知识有了更好的了解。接下来让我们尝试编写通过串口控制机械臂的代码吧!!串口方式实现机械臂三维空间移动05进入学习通过串口方式编写Python脚本串口方式实现机械臂三维空间移动05动手练习:(根据实验预览中所学知识,我们来试试自行编写代码完成所需任务吧!)1.在<1>、<2>、<3>处,填入相应的值,使得机械臂移动到x=130,y=30,z=70。2.在<4>处填写对应的代码,使得代码能将机械臂移动指定的位置。importtimeimportserialser=serial.Serial("/dev/ttyACM0",115200)time.sleep(2)data=b"G0X<1>Y<2>Z<3>F90\n"<4>whileTrue:line=ser.readline()print(line)在完成动手练习后,接下来我们来学习串口方式打开机械臂末端吸泵吧!串口方式打开机械臂末端吸泵05实验预览:importtime#导入库importserialser=serial.Serial("/dev/ttyACM0",115200)#串口通信time.sleep(2)#延时data=b"M2231V1\n"#打开ser.write(data)whileTrue:line=ser.readline()#读取数据print(line)以通过重启内核,来停止代码中的while循环,如图所示:除了串口方式打开机械臂末端,我们还要学习串口方式关闭机械臂末端吸泵。串口方式关闭机械臂末端吸泵05实验预览:以通过重启内核,来停止代码中的while循环,如图所示:importtimeimportserialser=serial.Serial("/dev/ttyACM0",115200)time.sleep(2)data=b"M2231V0\n"#关闭ser.write(data)whileTrue:line=ser.readline()#读入数据print(line)使用串口方式编写Python脚本控制机械臂05通过使用serial库编写一个可以左右上下移动机械臂和吸泵开关的脚本(根据常用的串口控制机械臂指令调用进行编写)。接下来让我们进入实验预览。实验预览:(详细代码运行结果请参照Jupyter,任务三、串口方式编写脚本控制机械臂)使用串口方式编写Python脚本控制机械臂05通过使用serial库编写一个可以左右上下移动机械臂和吸泵开关的脚本(根据常用的串口控制机械臂指令调用进行编写)。接下来让我们进入实验预览。实验预览:(详细代码运行结果请参照Jupyter,任务三、串口方式编写脚本控制机械臂)打开串口编写脚本实验使用串口方式编写Python脚本控制机械臂05通过使用serial库编写一个可以左右上下移动机械臂和吸泵开关的脚本(根据常用的串口控制机械臂指令调用进行编写)。接下来让我们进入实验预览。实验预览:(运行以下代码,查看实验效果)左移动机械臂move_left()

stop()右移动机械臂move_right()stop()move_forward()stop()前移动机械臂使用串口方式编写Python脚本控制机械臂05通过使用serial库编写一个可以左右上下移动机械臂和吸泵开关的脚本(根据常用的串口控制机械臂指令调用进行编写)。接下来让我们进入实验预览。实验预览:(运行以下代码,查看实验效果)后移动机械臂move_backward()

stop()上移动机械臂move_up()stop()move_down()stop()下移动机械臂使用串口方式编写Python脚本控制机械臂05通过使用serial库编写一个可以左右上下移动机械臂和吸泵开关的脚本(根据常用的串口控制机械臂指令调用进行编写)。接下来让我们进入实验预览。实验预览:(运行以下代码,查看实验效果)打开吸泵set_pump_on()

关闭吸泵set_pump_off()ser.close断开连接职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务五

机械臂抓取指定空间位置的物体任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分

理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)完成学习使用SDK、串口方式编写Python脚本控制机械臂,并能独立完成更改相应代码块实现任务目标。(40分)40分

完成学习使用SDK、串口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论