版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
工業(yè)機(jī)器人編程語(yǔ)言:URScript高級(jí)編程教程:函數(shù)與模塊1URScript函數(shù)基礎(chǔ)1.1函數(shù)的定義與調(diào)用在URScript中,函數(shù)是用于封裝一系列操作的代碼塊,可以被多次調(diào)用以執(zhí)行相同任務(wù)。函數(shù)定義使用def關(guān)鍵字,后跟函數(shù)名和括號(hào)內(nèi)的參數(shù)列表,最后是冒號(hào)和函數(shù)體。函數(shù)調(diào)用時(shí),只需使用函數(shù)名并提供相應(yīng)的參數(shù)。1.1.1示例代碼defmove_robot(x,y,z):
"""
移動(dòng)機(jī)器人到指定的x,y,z坐標(biāo)。
"""
p=[x,y,z,0,0,0]
speed=0.1
radius=0.0
movej(p,a=0.1,v=speed,t=0,r=radius)
#調(diào)用函數(shù)
move_robot(0.2,0.3,0.4)1.1.2解釋上述代碼定義了一個(gè)move_robot函數(shù),它接受三個(gè)參數(shù):x,y,z坐標(biāo)。函數(shù)內(nèi)部,這些坐標(biāo)被封裝到一個(gè)列表p中,然后使用movej命令移動(dòng)機(jī)器人。調(diào)用move_robot函數(shù)時(shí),傳遞了具體的坐標(biāo)值。1.2參數(shù)傳遞:按值與按引用URScript中的參數(shù)傳遞主要遵循按值傳遞的原則。這意味著在函數(shù)調(diào)用時(shí),傳遞給函數(shù)的參數(shù)的值會(huì)被復(fù)制,函數(shù)內(nèi)部對(duì)參數(shù)的修改不會(huì)影響到外部的原始值。1.2.1示例代碼defscale_vector(v,factor):
"""
將向量v的每個(gè)元素乘以factor。
"""
foriinrange(len(v)):
v[i]=v[i]*factor
vector=[1,2,3]
scale_vector(vector,2)
print(vector)#輸出:[1,2,3]1.2.2解釋盡管scale_vector函數(shù)試圖修改傳遞給它的向量,但由于URScript的按值傳遞機(jī)制,vector在函數(shù)外部保持不變。然而,由于URScript中列表是可變對(duì)象,如果在函數(shù)內(nèi)部直接修改列表,外部的列表也會(huì)受到影響。1.3返回值與函數(shù)類型URScript函數(shù)可以返回一個(gè)值,使用return語(yǔ)句。函數(shù)的返回類型可以是任何URScript支持的數(shù)據(jù)類型,包括數(shù)字、字符串、列表等。1.3.1示例代碼defcalculate_distance(p1,p2):
"""
計(jì)算兩個(gè)點(diǎn)p1和p2之間的歐幾里得距離。
"""
dx=p1[0]-p2[0]
dy=p1[1]-p2[1]
dz=p1[2]-p2[2]
returnsqrt(dx*dx+dy*dy+dz*dz)
point1=[0,0,0]
point2=[1,1,1]
distance=calculate_distance(point1,point2)
print(distance)#輸出:1.732051.3.2解釋calculate_distance函數(shù)接收兩個(gè)點(diǎn)的坐標(biāo),計(jì)算它們之間的距離,并返回結(jié)果。在調(diào)用函數(shù)后,返回的值被賦給變量distance,并打印出來(lái)。1.4局部變量與全局變量在URScript中,函數(shù)內(nèi)部定義的變量是局部變量,只在函數(shù)內(nèi)部可見(jiàn)。全局變量則在整個(gè)程序中可見(jiàn)。使用global關(guān)鍵字可以在函數(shù)內(nèi)部訪問(wèn)和修改全局變量。1.4.1示例代碼global_counter=0
defincrement_counter():
"""
增加全局計(jì)數(shù)器的值。
"""
globalglobal_counter
global_counter+=1
increment_counter()
increment_counter()
print(global_counter)#輸出:21.4.2解釋global_counter是一個(gè)全局變量,increment_counter函數(shù)通過(guò)global關(guān)鍵字訪問(wèn)并修改它。每次調(diào)用increment_counter,global_counter的值都會(huì)增加1。1.5函數(shù)的遞歸調(diào)用遞歸是函數(shù)調(diào)用自身的一種編程技術(shù)。在URScript中,可以使用遞歸來(lái)解決某些問(wèn)題,如重復(fù)執(zhí)行某個(gè)動(dòng)作直到滿足特定條件。1.5.1示例代碼defmove_to_target(target,current_position,tolerance):
"""
遞歸地移動(dòng)機(jī)器人直到達(dá)到目標(biāo)位置,誤差在tolerance內(nèi)。
"""
distance=calculate_distance(target,current_position)
ifdistance>tolerance:
move_robot(target[0],target[1],target[2])
move_to_target(target,current_position,tolerance)
target_position=[0.5,0.5,0.5]
current_position=[0,0,0]
tolerance=0.01
move_to_target(target_position,current_position,tolerance)1.5.2解釋move_to_target函數(shù)遞歸地調(diào)用自身,直到機(jī)器人到達(dá)目標(biāo)位置,誤差在tolerance范圍內(nèi)。每次調(diào)用move_robot后,都會(huì)再次檢查當(dāng)前位置與目標(biāo)位置的距離,如果距離大于tolerance,則繼續(xù)調(diào)用move_to_target。以上內(nèi)容詳細(xì)介紹了URScript中的函數(shù)基礎(chǔ),包括函數(shù)的定義與調(diào)用、參數(shù)傳遞、返回值與函數(shù)類型、局部變量與全局變量,以及函數(shù)的遞歸調(diào)用。通過(guò)這些示例,可以更好地理解如何在URScript中使用函數(shù)來(lái)組織和復(fù)用代碼。2工業(yè)機(jī)器人編程語(yǔ)言:URScript(UniversalRobots):URScript高級(jí)編程:模塊與庫(kù)的使用2.1模塊的概念與作用在URScript編程中,模塊是一個(gè)包含多個(gè)函數(shù)和變量的文件,用于組織和重用代碼。模塊可以提高代碼的可讀性和可維護(hù)性,同時(shí)通過(guò)封裝特定功能,使得程序結(jié)構(gòu)更加清晰。在工業(yè)機(jī)器人編程中,模塊的使用尤其重要,因?yàn)樗梢詭椭绦騿T管理復(fù)雜的任務(wù)流程,如抓取、放置、焊接等,每個(gè)模塊可以專注于實(shí)現(xiàn)一個(gè)具體的功能。2.2創(chuàng)建自定義模塊創(chuàng)建自定義模塊涉及編寫一個(gè)包含函數(shù)和變量的URScript文件。下面是一個(gè)簡(jiǎn)單的自定義模塊示例,該模塊包含一個(gè)用于計(jì)算兩點(diǎn)間距離的函數(shù)://文件名:distance.urp
defdistance(point1,point2):
"""
計(jì)算兩點(diǎn)之間的距離。
參數(shù):
point1(float[3]):第一個(gè)點(diǎn)的坐標(biāo)。
point2(float[3]):第二個(gè)點(diǎn)的坐標(biāo)。
返回:
float:兩點(diǎn)之間的距離。
"""
dx=point1[0]-point2[0]
dy=point1[1]-point2[1]
dz=point1[2]-point2[2]
returnsqrt(dx*dx+dy*dy+dz*dz)2.3導(dǎo)入與使用標(biāo)準(zhǔn)庫(kù)URScript提供了標(biāo)準(zhǔn)庫(kù),其中包含了一系列預(yù)定義的函數(shù)和工具,用于簡(jiǎn)化編程任務(wù)。例如,math庫(kù)提供了數(shù)學(xué)函數(shù),如sqrt用于計(jì)算平方根。要使用標(biāo)準(zhǔn)庫(kù)中的函數(shù),需要在程序開始處導(dǎo)入相應(yīng)的庫(kù)://導(dǎo)入math庫(kù)
importmath
//使用math庫(kù)中的sqrt函數(shù)
defcalculate_distance(point1,point2):
dx=point1[0]-point2[0]
dy=point1[1]-point2[1]
dz=point1[2]-point2[2]
returnmath.sqrt(dx*dx+dy*dy+dz*dz)2.4模塊的命名空間與作用域在URScript中,模塊有自己的命名空間,這意味著在模塊內(nèi)部定義的函數(shù)和變量不會(huì)與主程序或其他模塊中的同名函數(shù)和變量沖突。這有助于避免命名錯(cuò)誤,提高代碼的可靠性。例如,如果兩個(gè)模塊都定義了一個(gè)名為move的函數(shù),它們可以在各自的模塊中獨(dú)立工作,而不會(huì)相互干擾。2.5模塊間的依賴與管理當(dāng)一個(gè)模塊需要使用另一個(gè)模塊中的函數(shù)或變量時(shí),可以通過(guò)導(dǎo)入來(lái)實(shí)現(xiàn)依賴。在工業(yè)機(jī)器人編程中,這通常意味著一個(gè)模塊可能需要調(diào)用另一個(gè)模塊中的運(yùn)動(dòng)控制函數(shù),或者使用傳感器模塊中的數(shù)據(jù)。正確管理模塊間的依賴關(guān)系可以確保程序的穩(wěn)定運(yùn)行,避免因模塊加載順序錯(cuò)誤導(dǎo)致的問(wèn)題。2.5.1示例:模塊依賴假設(shè)我們有兩個(gè)模塊,motion_control.urp和sensor_data.urp。motion_control.urp模塊需要使用sensor_data.urp模塊中的get_sensor_reading函數(shù)來(lái)決定機(jī)器人的運(yùn)動(dòng)。下面是如何在motion_control.urp中導(dǎo)入并使用get_sensor_reading函數(shù)://文件名:motion_control.urp
//導(dǎo)入sensor_data模塊
importsensor_data
defmove_robot_based_on_sensor():
"""
根據(jù)傳感器讀數(shù)移動(dòng)機(jī)器人。
"""
reading=sensor_data.get_sensor_reading()
ifreading>100:
movej(p1)
else:
movej(p2)在這個(gè)例子中,motion_control.urp模塊通過(guò)導(dǎo)入sensor_data.urp模塊,可以訪問(wèn)并使用get_sensor_reading函數(shù)。這展示了如何在URScript中管理模塊間的依賴關(guān)系,確保代碼的模塊化和可維護(hù)性。通過(guò)以上內(nèi)容,我們了解了URScript中模塊與庫(kù)的使用,包括模塊的概念、創(chuàng)建自定義模塊、導(dǎo)入標(biāo)準(zhǔn)庫(kù)、命名空間與作用域,以及模塊間的依賴與管理。這些知識(shí)對(duì)于編寫高效、可維護(hù)的工業(yè)機(jī)器人程序至關(guān)重要。3高級(jí)函數(shù)編程3.1匿名函數(shù)與lambda表達(dá)式在URScript中,雖然不直接支持lambda表達(dá)式,但可以通過(guò)定義內(nèi)聯(lián)函數(shù)來(lái)實(shí)現(xiàn)類似的功能。匿名函數(shù)通常用于需要臨時(shí)使用函數(shù)的地方,避免了定義一個(gè)完整函數(shù)的繁瑣。在URScript中,可以使用def關(guān)鍵字在需要的地方定義一個(gè)函數(shù),然后立即調(diào)用它。3.1.1示例假設(shè)我們需要在機(jī)器人控制程序中,對(duì)一系列關(guān)節(jié)角度進(jìn)行快速的線性插值計(jì)算,但這個(gè)計(jì)算只在當(dāng)前任務(wù)中使用,我們可以通過(guò)定義一個(gè)內(nèi)聯(lián)函數(shù)來(lái)實(shí)現(xiàn):definterpolate(start_angle,end_angle,t):
returnstart_angle+t*(end_angle-start_angle)
angles=[0,90,180,270,360]
foriinrange(len(angles)-1):
fortinrange(0,11):
angle=interpolate(angles[i],angles[i+1],t/10.0)
set_joint_target(angle,angle,angle,angle,angle,angle)在這個(gè)例子中,interpolate函數(shù)用于計(jì)算兩個(gè)角度之間的線性插值,然后使用這個(gè)函數(shù)來(lái)平滑地移動(dòng)機(jī)器人關(guān)節(jié)。3.2高階函數(shù):函數(shù)作為參數(shù)URScript支持將函數(shù)作為參數(shù)傳遞給另一個(gè)函數(shù),這種特性稱為高階函數(shù)。這允許我們編寫更加靈活和可重用的代碼。3.2.1示例假設(shè)我們有一個(gè)函數(shù)execute_trajectory,它接受一個(gè)關(guān)節(jié)角度的列表和一個(gè)插值函數(shù)作為參數(shù),可以使用不同的插值方法來(lái)執(zhí)行軌跡:defexecute_trajectory(angles,interpolate_func):
foriinrange(len(angles)-1):
fortinrange(0,11):
angle=interpolate_func(angles[i],angles[i+1],t/10.0)
set_joint_target(angle,angle,angle,angle,angle,angle)
deflinear_interpolate(start_angle,end_angle,t):
returnstart_angle+t*(end_angle-start_angle)
defcubic_interpolate(start_angle,end_angle,t):
returnstart_angle+(3*t*(1-t)*(1-t)*(end_angle-start_angle))
angles=[0,90,180,270,360]
execute_trajectory(angles,linear_interpolate)
execute_trajectory(angles,cubic_interpolate)在這個(gè)例子中,execute_trajectory函數(shù)可以接受不同的插值函數(shù),如linear_interpolate或cubic_interpolate,來(lái)執(zhí)行不同的運(yùn)動(dòng)軌跡。3.3函數(shù)式編程在URScript中的應(yīng)用函數(shù)式編程強(qiáng)調(diào)函數(shù)的使用,避免改變狀態(tài)和數(shù)據(jù)的可變性。在URScript中,雖然語(yǔ)言本身并不完全支持函數(shù)式編程,但可以通過(guò)合理設(shè)計(jì)函數(shù)和數(shù)據(jù)結(jié)構(gòu)來(lái)接近這一編程范式。3.3.1示例假設(shè)我們需要一個(gè)函數(shù)來(lái)計(jì)算機(jī)器人在一系列關(guān)節(jié)角度下的運(yùn)動(dòng)時(shí)間,我們可以設(shè)計(jì)一個(gè)函數(shù)calculate_motion_time,它接受一個(gè)關(guān)節(jié)角度列表和一個(gè)運(yùn)動(dòng)函數(shù)作為參數(shù):defcalculate_motion_time(angles,motion_func):
total_time=0.0
foriinrange(len(angles)-1):
start_time=get_time()
motion_func(angles[i],angles[i+1])
end_time=get_time()
total_time+=end_time-start_time
returntotal_time
defmove_linear(start_angle,end_angle):
#實(shí)現(xiàn)線性運(yùn)動(dòng)的代碼
pass
defmove_circular(start_angle,end_angle):
#實(shí)現(xiàn)圓周運(yùn)動(dòng)的代碼
pass
angles=[0,90,180,270,360]
linear_time=calculate_motion_time(angles,move_linear)
circular_time=calculate_motion_time(angles,move_circular)在這個(gè)例子中,calculate_motion_time函數(shù)通過(guò)接受不同的運(yùn)動(dòng)函數(shù),可以計(jì)算出使用不同運(yùn)動(dòng)方式時(shí)的總運(yùn)動(dòng)時(shí)間。3.4閉包與函數(shù)記憶閉包是指函數(shù)可以訪問(wèn)其定義時(shí)所在作用域的變量。在URScript中,雖然不直接支持閉包,但可以通過(guò)全局變量或在函數(shù)內(nèi)部定義變量并返回函數(shù)的方式來(lái)模擬閉包的行為。3.4.1示例假設(shè)我們需要一個(gè)函數(shù)來(lái)記錄機(jī)器人關(guān)節(jié)的運(yùn)動(dòng)次數(shù),我們可以定義一個(gè)函數(shù)get_joint_counter,它返回一個(gè)可以增加關(guān)節(jié)運(yùn)動(dòng)次數(shù)的函數(shù):defget_joint_counter():
counter=0
defincrement_counter():
globalcounter
counter+=1
returncounter
returnincrement_counter
joint_counter=get_joint_counter()
angles=[0,90,180,270,360]
forangleinangles:
move_to(angle)
print("Jointmoved,totaltimes:",joint_counter())在這個(gè)例子中,get_joint_counter函數(shù)返回一個(gè)increment_counter函數(shù),這個(gè)函數(shù)可以訪問(wèn)并修改get_joint_counter函數(shù)內(nèi)部定義的counter變量,從而記錄關(guān)節(jié)的運(yùn)動(dòng)次數(shù)。3.5函數(shù)裝飾器與元編程函數(shù)裝飾器是一種在不修改原函數(shù)代碼的情況下,為函數(shù)添加新功能的機(jī)制。在URScript中,雖然不直接支持裝飾器,但可以通過(guò)定義一個(gè)包裝函數(shù)來(lái)實(shí)現(xiàn)類似的功能。3.5.1示例假設(shè)我們需要一個(gè)裝飾器來(lái)記錄函數(shù)的調(diào)用次數(shù),我們可以定義一個(gè)call_counter裝飾器:defcall_counter(func):
defwrapper(*args,**kwargs):
wrapper.calls+=1
print("Function",func.__name__,"called",wrapper.calls,"times")
returnfunc(*args,**kwargs)
wrapper.calls=0
returnwrapper
@call_counter
defmove_to(angle):
#實(shí)現(xiàn)移動(dòng)到指定角度的代碼
pass
angles=[0,90,180,270,360]
forangleinangles:
move_to(angle)在這個(gè)例子中,call_counter裝飾器通過(guò)定義一個(gè)包裝函數(shù)wrapper,并在每次調(diào)用move_to函數(shù)時(shí)增加調(diào)用計(jì)數(shù),實(shí)現(xiàn)了記錄函數(shù)調(diào)用次數(shù)的功能。以上示例展示了如何在URScript中使用高級(jí)函數(shù)編程技術(shù),包括匿名函數(shù)、高階函數(shù)、函數(shù)式編程、閉包以及函數(shù)裝飾器的模擬實(shí)現(xiàn),來(lái)編寫更加靈活、可重用和高效的機(jī)器人控制程序。4模塊化編程實(shí)踐4.1模塊化設(shè)計(jì)原則在URScript中,模塊化設(shè)計(jì)是將程序分解為獨(dú)立的、可重用的代碼塊,每個(gè)代碼塊負(fù)責(zé)一個(gè)特定的功能。這種設(shè)計(jì)原則提高了代碼的可讀性、可維護(hù)性和可擴(kuò)展性。模塊化設(shè)計(jì)的關(guān)鍵原則包括:?jiǎn)我宦氊?zé)原則:每個(gè)模塊應(yīng)只負(fù)責(zé)一個(gè)功能。高內(nèi)聚:模塊內(nèi)部的代碼應(yīng)緊密相關(guān),共同完成一個(gè)任務(wù)。低耦合:模塊之間應(yīng)盡量減少依賴,以便于獨(dú)立修改和測(cè)試。接口清晰:模塊應(yīng)通過(guò)清晰的接口與外界交互,隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。4.1.1示例:創(chuàng)建一個(gè)模塊用于抓取操作//抓取模塊
defgrab_object():
//打開夾爪
set_digital_out(8,1)
sleep(1)
//移動(dòng)到物體上方
movej(p[0.1,0.2,0.3,-1.57,0,1.57],a=0.1,v=0.1,t=0,r=0)
sleep(1)
//下降抓取物體
movej(p[0.1,0.2,0.05,-1.57,0,1.57],a=0.1,v=0.1,t=0,r=0)
sleep(1)
//關(guān)閉夾爪
set_digital_out(8,0)
sleep(1)
//移動(dòng)到安全位置
movej(p[0.1,0.2,0.3,-1.57,0,1.57],a=0.1,v=0.1,t=0,r=0)4.2構(gòu)建模塊化機(jī)器人程序構(gòu)建模塊化程序涉及將復(fù)雜任務(wù)分解為多個(gè)模塊,每個(gè)模塊負(fù)責(zé)一部分功能。在URScript中,可以使用def關(guān)鍵字定義模塊,通過(guò)參數(shù)傳遞和返回值實(shí)現(xiàn)模塊間的通信。4.2.1示例:構(gòu)建模塊化程序//主程序
defmain():
//初始化
init_robot()
//抓取物體
grab_object()
//移動(dòng)物體
move_object()
//釋放物體
release_object()
//清理
cleanup()
//初始化模塊
definit_robot():
//設(shè)置速度和加速度
set_speed(0.1,0.1)
//移動(dòng)物體模塊
defmove_object():
//移動(dòng)到目標(biāo)位置
movej(p[0.2,0.3,0.4,-1.57,0,1.57],a=0.1,v=0.1,t=0,r=0)
//釋放物體模塊
defrelease_object():
//打開夾爪
set_digital_out(8,1)
sleep(1)
//移動(dòng)到釋放位置
movej(p[0.2,0.3,0.5,-1.57,0,1.57],a=0.1,v=0.1,t=0,r=0)
//清理模塊
defcleanup():
//重置機(jī)器人到初始狀態(tài)
movej(p[0,0,0,0,0,0],a=0.1,v=0.1,t=0,r=0)4.3模塊測(cè)試與調(diào)試技巧模塊測(cè)試是確保每個(gè)模塊獨(dú)立工作正確的重要步驟。在URScript中,可以使用if語(yǔ)句和main()函數(shù)來(lái)測(cè)試模塊。4.3.1示例:模塊測(cè)試//測(cè)試抓取模塊
if__name__=="m
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024房地產(chǎn)代理居間合同
- 二零二五年度手房買賣全款合同規(guī)范3篇
- 2025年度房屋室內(nèi)空氣凈化改造合同協(xié)議詳細(xì)版3篇
- 2025年度環(huán)保手車買賣合同與回收利用合作協(xié)議3篇
- 2025標(biāo)準(zhǔn)版工業(yè)品買賣合同書
- 2025年度建筑廢棄物填埋場(chǎng)承包合同3篇
- 2025年度親子互動(dòng)托管班教師聘用合同3篇
- 2025年度房屋漏水排查及修復(fù)服務(wù)合同3篇
- 二零二五年度鐵路設(shè)備拆卸與更新?lián)Q代合同3篇
- 二零二五年度挖掘機(jī)械買賣及環(huán)保技術(shù)改造合同3篇
- 《praat使用入門》課件
- 供貨進(jìn)度計(jì)劃及保證措施
- 醫(yī)藥銷售主管市場(chǎng)規(guī)劃
- 測(cè)量應(yīng)急管理方案
- 2024-2025學(xué)年深圳市初三適應(yīng)性考試模擬試卷語(yǔ)文試卷
- DB22JT 147-2015 巖土工程勘察技術(shù)規(guī)程
- 杵針療法課件
- 軟件企業(yè)戰(zhàn)略規(guī)劃
- 護(hù)理安全隱患及風(fēng)險(xiǎn)防范
- 臨床成人失禁相關(guān)性皮炎的預(yù)防與護(hù)理團(tuán)體標(biāo)準(zhǔn)解讀
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)蘇教版
評(píng)論
0/150
提交評(píng)論