天天爽夜夜爽夜夜爽精品视频,少妇偷人宾馆精品自拍,自慰女人自慰喷水高清AV毛片,精品国偷自产在线视频99,欧美性受XXXX黑人XYX性爽
機(jī)器人系統(tǒng)
機(jī)器視覺物流分揀機(jī)器人,基于RaspberryPi Zero W的機(jī)器人的制作
2022-11-30
快遞分揀機(jī)器人設(shè)計理念湖北高速分揀機(jī)器人

第1步:籌備

步調(diào)2:代碼布局

我將代碼分別為這些文件,我將逐個注釋:

正在接下來的步調(diào)中,我將一步一步天注釋這些文件

第3步:

這是應(yīng)用程序的次要出口面,包括機(jī)械人類

importasGPIO

fromimportreactor,task

importl298NDrive

importremoteControl

importlogging

importutils

log=

enableMotors=True#Motorscanbedisabledfortestingwiththis

runFrequency=1#ThefrequencyonwichthemainTaskwillberan

classAum2:

def__init__:

(“InitializingAum2robot.。.”)

#Configuration

=5555#Porttoopensotheremotecanconnect

#Configureminandmaxservopulselengths

#Keepinmindthesearenotpinsbutservoouts

=(10,11,12,13,14,15,enableMotors)

=

defprocessRemoteCommand:

=(,,-9.8,9.8,-4095,4095)

,int

defrun:

print

defstart

l=

#runwillbecalledwiththisfrequency

#Gatherourcodeinamainfunction

defmain:

robot=Aum2

#Standardboilerplatetocallthemainfunctiontobegin

#theprogram.

if__name__==‘__main__’:

main

有些我要對此文件頒發(fā)評論的要點(diǎn):

我正在利用歪曲庫來調(diào)和來自UDP的近程節(jié)制定單服務(wù)器跟機(jī)器人的次要Run方式。如你所見,該方式此刻甚么也沒有做,可是其設(shè)法主意是正在此中增添代碼以使機(jī)器人更具自治性。

processRemoteCommand方式將是

起頭方式是正在我設(shè)置須要調(diào)和的兩件事時:監(jiān)聽

第4步:

此文件包括兩個類,即RemoteControl類,RCCommand類

importlogging

importtraceback

fromimportDatagramProtocol

fromimportreactor

分揀機(jī)器人分揀系統(tǒng)設(shè)計

importutils

log=

classRemoteControl(DatagramProtocol):

def__init__:

=port

defstart(self,onCommandReceived):

(“InitializingRemoteControl.。.”)

=onCommandReceived

defdatagramReceived(self,data,addr):

try:

(“Received%rfrom%s”%

command=RCCommand

except(KeyboardInterrupt,SystemExit):

raise

except:

_exc

classRCCommand:

#Timestamp[sec],sensorid,x,y,z,sensorid,x,y,z,sensorid,x,y,z

#890.71558,3,0.076,9.809,0.565,。..

def__init__:

=0

=0

=0

=

iflen》=5and[1].strip==“3”:

=-float

=-float

=float

(“x={}y={}z={}”.format

else:

(“Invalidmessage:{}”.format

一樣是RemoteControl類,它利用歪曲的框架去偵聽運(yùn)轉(zhuǎn)WirelessIMU使用的Android手機(jī)發(fā)送的UDP程序包。此應(yīng)用程序發(fā)送存在以下布局的動靜:

890.71558,3、0.076、9.809、0.565,4,-0.559、0.032,-0.134、5-21.660,-36.960,-28.140

我只對下面突出顯現(xiàn)的動靜部門感興趣,那就是傳感器ID3,和加速度計供給的三個丈量值(0.076、9.809、0.565)。

你可以正在代碼中看到,類RCCommand將此動靜的有用參數(shù)轉(zhuǎn)換為機(jī)器人所需的x跟y值,此中

快遞分揀機(jī)器人哪個牌子好

x是疇前到后的軸,而

y則是從一側(cè)到另一側(cè)。

我也有z軸的代碼,可是我臨時沒有利用它。

步調(diào)5:

這是擔(dān)任節(jié)制電動機(jī)的文件。為此,它將下令發(fā)送到16伺服驅(qū)動器,該驅(qū)動器毗鄰到L298N電動機(jī)驅(qū)動器。我念我能夠會正在我構(gòu)建的每一個RaspberryPi機(jī)器人上重用該類。它的確很簡略,而且沒有須要龐大的處置懲罰便可實(shí)現(xiàn)它的事情。

importAdafruit_PCA9685

importlogging

importmath

importutils

log=

classL298NDrive:

def__init__(self,enA,in1,in2,in3,in4,enB,enabled):

(“InitializingL298Drive.。.”)

=0

=4095

=enA

=in1

=in2

=in3

=in4

=enB

=enabled

ifenabled:

defenable:

=True

#InitialisethePCA9685usingthedefaultaddress。

=Adafruit_

defdisable:

=False

#InitialisethePCA9685usingthedefaultaddress。

=None

defsetSpeeds(self,rSpeed,lSpeed):

defsetSpeed(self,motor,speed):

pwm=int

(“Motor:{}speed:{}pwm:{}”.format(motor,speed,pwm))

ifmotor==1:

ifspeed》=0:

if:

_pwm

_pwm

else:

if:

_pwm

_pwm

if:

廣州分揀機(jī)器人特點(diǎn)

_pwm

else:#motor==2

ifspeed》=0:

if:

_pwm

_pwm

else:

if:

_pwm

_pwm

if:

_pwm

可以看出,代碼的次要部門正在setSpeed(self,motor,speed)方式中,該方式吸收要設(shè)置的電動機(jī)編號,并通知伺服驅(qū)動器若何處置懲罰與該電動機(jī)關(guān)系的引腳。

大概該當(dāng)給出一些注釋以相識我為何要履行我的事情

L298N機(jī)電驅(qū)動器

利用6個引腳驅(qū)動兩個機(jī)電:

enA用來通知速率,咱們要使電動機(jī)啟動1。通電后,通知駕駛員電動機(jī)1該當(dāng)沿一個標(biāo)的目的挪動

in2通電時,通知駕駛員電動機(jī)1應(yīng)該沿相反標(biāo)的目的挪動

in3通電時,見告駕駛員機(jī)電2該當(dāng)沿一個標(biāo)的目的挪動

in4通知駕駛員,電動機(jī)2該當(dāng)沿相反標(biāo)的目的挪動

enB用于通知速率,咱們愿望電動機(jī)遷移轉(zhuǎn)變

以是正在咱們的例子中,由于我對一切引腳皆利用了伺服驅(qū)動器:

當(dāng)我做到那一點(diǎn):

_pwm

我真的是正在通知伺服驅(qū)動器,正在一切PWM時代,該引腳該當(dāng)為OFF,

當(dāng)我如許做時:

_pwm

我實(shí)際上是正在通知伺服驅(qū)動器,正在一切PWM周期中,該引腳該當(dāng)處于ON地位(以是我將其翻開

然后,當(dāng)我如許做時:

_pwm

我利用真正的PWM引腳,并利用速率參數(shù)設(shè)置我所要求的脈沖。

步調(diào)6:

最初,這是最初的安然。它沒有包括類,可是我認(rèn)為我會正在其他處所重用的一切有用功用。

importmath

importlogging

log=

defmap(v,in_min,in_max,out_min,out_max):

#Checkthatthevalueisatleastin_min

ifv《in_min:

v=in_min

#Checkthatthevalueisatmostin_max

ifv》in_max:

v=in_max

return*(out_max-out_min)//+out_min

defjoystickToDiff(x,y,minJoystick,maxJoystick,minSpeed,maxSpeed):

#Ifxandyare0,thenthereisnotmuchtocalculate.。.

ifx==0andy==0:

return

#FirstComputetheangleindeg

#Firsthypotenuse

z=

#angleinradians

rad=

#andindegrees

angle=rad*180/

#Nowangleindicatesthemeasureofturn

#Alongastraightline,withanangleo,theturnco-efficientissame

#thisappliesforanglesbetween0-90,withangle0thecoeffis-1

#withangle45,theco-efficientis0andwithangle90,itis1

tcoeff=-1+*2

turn=tcoeff*

turn=round/100

#Andmaxofyorxisthemovement

mov=max

#Firstandthirdquadrant

if(x》=0andy》=0)or:

rawLeft=mov

rawRight=turn

else:

rawRight=mov

rawLeft=turn

#Reversepolarity

自動分揀機(jī)器人設(shè)備

ify《0:

rawLeft=0-rawLeft

rawRight=0-rawRight

#minJoystick,maxJoystick,minSpeed,maxSpeed

#Mapthevaluesontothedefinedrang

rightOut=map(rawRight,minJoystick,maxJoystick,minSpeed,maxSpeed)

leftOut=map(rawLeft,minJoystick,maxJoystick,minSpeed,maxSpeed)

(“x={}y={},rOut={},lOut={}”.format(x,y,rightOut,leftOut))

return(rightOut,leftOut)

這里只有兩種方式,第一種是從地圖功能的Arduino。它將指定輸入限定內(nèi)的值轉(zhuǎn)換為輸出規(guī)模內(nèi)的響應(yīng)值。

我為輸入值增添了限定,以是我只接管av,位于in_min跟in_max以內(nèi)。

我擁有的另一個函數(shù)(joystickToDiff)略微龐大一點(diǎn),可是其目標(biāo)是從輸入的操縱桿對轉(zhuǎn)換值,以到達(dá)差動驅(qū)動機(jī)器人擺布機(jī)電所需的速率。此輸出已托付,已轉(zhuǎn)換為指定為參數(shù)的速率規(guī)模。

你可以正在我的博客中找到有關(guān)此部門的更多詳細(xì)信息

分揀機(jī)器人企業(yè)分揀機(jī)器人展示交易物流中心快遞分揀機(jī)器人