Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

DISTRIBUSI WEARHOUSE

1. PENDAHULUAN

Dengan munculnya e-commerce, permintaan produk telah meningkat dan perusahaan membutuhkan persediaan besar dan memerlukan penanganan volume besar setiap hari. Ini mencakup banyak tugas padat karya seperti menyimpan, memindahkan, memindai, memeriksa, mengirimkan, dan banyak lagi. Untuk efisiensi yang lebih baik, semakin banyak gudang dan pusat distribusi yang bergerak menuju otomatisasi dalam berbagai tingkat, dari sistem semi-otonom hingga sepenuhnya otonom, berdasarkan permintaan.

Sistem penanganan robotik semakin banyak digunakan di gudang dan pusat distribusi karena memberikan fleksibilitas dalam mengelola berbagai persyaratan permintaan dan dapat bekerja 24/7.

Dalam proyek ini, lengan robot digunakan untuk mentransfer paket dari konveyor dan memuatnya ke bot transportasi internal untuk penyimpanan.

II. BEKERJA

Ini adalah sistem penjemputan dan pengangkutan otomatis, di mana lengan robot 2 DOF (ditunjukkan pada Gambar

2 ) dapat berputar pada sumbu z &sumbu x dan memiliki gripper. Bot transportasi (ditampilkan di

Gambar 1 ) memiliki sensor ultrasonik yang dipasang untuk mendeteksi, jaraknya dari, stasiun dok. Setelah dekat stasiun, kendaraan berbelok 180 derajat sambil mengirimkan pemberitahuan ke lengan menginformasikan kedatangan. Saat penerimaan, lengan yang awalnya sejajar dengan sumbu z, berputar 90 derajat ke arah konveyor, untuk mengambil kargo darinya dengan bantuan gripper. Setelah mengambil kargo, lengan berputar -90 derajat menyelaraskan dirinya kembali dengan sumbu z (pegangan mengarah ke atas). Lengan kemudian mulai berputar pada sumbu z saat mencari kendaraan transportasi, menggunakan OpenCV dan PiCamera. Setelah menemukan bot transportasi yang ditempatkan di seberang konveyor, lengan selanjutnya memutar lengan -90 derajat, ke arah bot, tentang x menempatkan gripper di atas bot pickup. Kemudian, gripper terbuka untuk menempatkan kargo di bot, dan kemudian memberikan sinyal (Bluetooth) yang sama yang menunjukkan pemuatan, saat bergerak kembali ke posisi awal. Setelah kendaraan pengangkut menerima pemberitahuan ini, kendaraan mulai bergerak menjauh dari stasiun dok menuju lokasi penyimpanan yang diinginkan.

III. FILTER LULUS RENDAH

Kami menggunakan filter Low Pass Butterworth untuk menyaring perubahan frekuensi tinggi dalam data pembacaan kamera x-y-z. Kami membuat vektor nilai x-y-z dan menerapkan filter ini padanya. Setelah menerapkan filter, kami mengambil nilai rata-rata dari 20 elemen terakhir dari vektor untuk mengurangi noise dan menghaluskan grafik, sehingga mendapatkan posisi bola yang lebih akurat dari PiCam.

Dalam Gambar 3 , garis oranye adalah data mentah (yang sangat bising dan sangat berfluktuasi) dan garis biru adalah bata yang disaring yang halus.

IV. ELEKTRONIK

Servo: total 5 motor servo digunakan dalam proyek ini. 2 untuk mengemudikan kendaraan pengangkut (penggerak diferensial). 3 digunakan untuk mengontrol sendi lengan robot.

Sensor Ultrasonik: Sensor ultrasonik mengukur jarak ke suatu objek menggunakan gelombang ultrasonik. Pemancar di sensor memancarkan pulsa suara frekuensi tinggi pendek secara berkala yang merambat di udara dan dipantulkan kembali sebagai sinyal gema ke penerima ketika mereka menyerang suatu objek. Jarak dihitung dengan mengukur rentang waktu antara memancarkan sinyal dan menerima gema (disebut Waktu terbang). Itu dipasang pada robot seluler dan digunakan untuk perencanaan dan pendeteksian jalur Bluetooth:HC06 yang dipasang pada Arduino digunakan untuk berkomunikasi secara serial dengan modul Bluetooth bawaan dari Raspberry pi.

Pi-Camera:Kamera yang dipasang di salah satu sambungan lengan robot digunakan untuk melacak kendaraan pengangkut yang ditempatkan di suatu tempat di stasiun dok.

V. SIRKUIT

Seperti yang dapat kita lihat pada Gambar 4 kami telah menggunakan tiga servo di raspberry pi.

Raspberry pi hanya memiliki dua pin PWM, jadi kami telah menulis kode servo PWM kami sendiri untuk menjalankan tiga servo,

Pi cam terpasang ke raspberry pi seperti yang ditunjukkan di atas. Kamera menemukan bola menggunakan OpenCV dan mengunci posisi lengan.

Arduino memiliki total empat komponen yang melekat padanya seperti yang ditunjukkan pada gambar di atas. Dua servo, satu sensor ultrasonik, dan satu modul Bluetooth HC-06. Mana yang digunakan untuk menjalankan bot kargo?

V. KODE

VI.I. Kode Arduino:

#include

Servo kiri;

Servo kanan;

const int GNND =4; const int GNDD =35; const int gema =37; const int trigonometri =39; const int VCCC =41;

float invcmCosnt =(2*1000000)/(100*344.8); //cmDist=rawTime/invcmCosnt void setup() {

Serial.begin(9600); Serial3.begin(9600);

kiri.attach(3); // pasang servo pada pin 9 ke objek servo right.attach(5);

pinMode(trig, OUTPUT); pinMode(gema, INPUT); pinMode(GNND, OUTPUT); pinMode(GNDD, OUTPUT); pinMode(VCCC, OUTPUT);

digitalWrite(VCCC, TINGGI); digitalWrite(GNND, RENDAH); digitalWrite(GNDD, RENDAH); pinMode(LED_BUILTIN, OUTPUT);

kiri.tulis(114); kanan.tulis(74);

}

void loop() {}P>

float rawTime, cmDist; digitalWrite(trigonometri, RENDAH); delayMicroseconds(2); digitalWrite(trigonometri, TINGGI); delayMicroseconds(5); digitalWrite(trigonometri, RENDAH); rawTime =pulseIn(gema, TINGGI); cmDist =100;

while(cmDist> 4){ digitalWrite(trig, RENDAH); delayMicroseconds(2); digitalWrite(trigonometri, TINGGI); delayMicroseconds(5); digitalWrite(trigonometri, RENDAH); rawTime =pulseIn(gema, TINGGI); cmDist =rawTime/invcmCosnt; Serial.println(cmDist);

}

Serial.println("Keluar"); Serial3.println(“s”); kiri.tulis(94); kanan.tulis(94); penundaan (1000); kiri.tulis(114); kanan.tulis(114); penundaan (1700); Serial.println("Terbalik"); kiri.tulis(94); kanan.tulis(94); Serial.println("Berhenti"); sementara(1){

if(Serial3.read()==’f’){ break;

}

}

kiri.tulis(114); kanan.tulis(74); penundaan (2500); kiri.tulis(94); kanan.tulis(94); sementara(1){

}

}

VI.II. Raspberry

Di ujung Raspberry, seseorang perlu menghubungkan Raspberry Pi ke Modul Bluetooth HC-06 menggunakan perintah berikut untuk menemukan,

$         hcitool scan        # Dapat dilewati jika MAC ID Bluetooth diketahui dan tersedia

Dan kemudian sambungkan ke Bluetooth yang diperlukan menggunakan ID MAC yang benar:

$         sudo rfcomm connect hci0 xx:xx:xx:xx:xx:xx

Jika ini berhasil dijalankan, maka Bluetooth terhubung.

impor paket yang diperlukan dari koleksi deque impor

dari imutils.video import VideoStream import numpy as np
import argparse import cv2 import imutils import timeit import waktu
dari scipy import signal import matplotlib.pyplot as plt

impor RPi.GPIO sebagai GPIO

impor serial

GPIO.setmode(GPIO.BCM) GPIO.setup(12, GPIO.OUT) # Gripper GPIO.setup(13, GPIO.OUT) # Rot_x GPIO.setup(16, GPIO.OUT) # Rot_z

rotz =16
rotx =GPIO.PWM(13, 50) gr =GPIO.PWM(12, 50)

biru =serial.Serial(“/dev/rfcomm0”, baudrate=9600) print(“Bluetooth terhubung”)

def duty(angle):
sudut balik * 5 / 90 + 2.5

def search(angle=90, add=1):servo_pwm(rotz, duty(angle), 50) ap =argparse.ArgumentParser() ap.add_argument(“-v”, “–video”,
help=”jalur ke file video (opsional)”) ap.add_argument(“-b”, “–buffer”, type=int, default=64,
help="max buffer size") args =vars(ap .parse_args())
xn =np.zeros([500]) xm =np.zeros([1])
greenLower =(20, 20, 53)
greenUpper =(64 , 255, 255)
pts =deque(maxlen=args[“buffer”])

jika jalur video tidak disediakan, ambil referensi # ke webcam

jika tidak args.get(“video”, False):
vs =VideoStream(src=0).start()

jika tidak, ambil referensi ke file video lain:

vs =cv2.VideoCapture(args[“video”])

memungkinkan kamera atau file video untuk pemanasan time.sleep(2.0)

while Benar:
jika sudut ==125:
tambah =-5
sudut elif ==35:
tambah =5 sudut +=tambah
servo_pwm(rotz, duty(angle), 10) time.sleep(0.01)

ambil frame frame saat ini =vs.read()

menangani frame dari VideoCapture atau VideoStream frame =frame[1] if args.get(“video”, False) else frame

jika kami melihat video dan kami tidak mengambil bingkai, # maka kami telah mencapai akhir video

jika bingkai Tidak Ada:
break

mengubah ukuran bingkai, mengaburkannya, dan mengubahnya menjadi ruang warna # HSV

frame =imutils.resize(frame, lebar=600) blur =cv2.GaussianBlur(frame, (11, 11), 0)
hsv =cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)

buat topeng untuk warna "hijau", kemudian lakukan # serangkaian pelebaran dan erosi untuk menghilangkan # gumpalan kecil yang tersisa di topeng

mask =cv2.inRange(hsv, greenLower, greenUpper) mask =cv2.erode(mask, None, iterations=2)
mask =cv2.dilate(mask, None, iterations=2)

temukan kontur di topeng dan inisialisasi # (x, y) pusat bola saat ini

cnts =cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts =imutils.grab_contours(cnts) center =Tidak ada

hanya lanjutkan jika setidaknya satu kontur ditemukan jika len(cnts)> 0:

temukan kontur terbesar di topeng, lalu gunakan

untuk menghitung lingkaran penutup minimum dan # centroid

c =max(cnts, key=cv2.contourArea)
((x, y), radius) =cv2.minEnclosingCircle(c) M =cv2.moments(c)
center =(int(M [“m10”] / M[“m00”]), int(M[“m01”] / M[“m00”])) # hanya dilanjutkan jika radius memenuhi ukuran minimum
jika radius> 10:

gambar lingkaran dan centroid pada frame, # kemudian perbarui daftar titik yang dilacak cv2.circle(frame, (int(x), int(y)), int(radius),

(0, 255, 255), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)

xn =np.hapus(xn, 0) xn =np.append(xn, x) fs =300
fc =1 x_old =x
w =fc / (fs / 2)
b, a =signal.butter(5, w, 'low') output =signal.filtfilt(b, a, xn) x =np.average(xn[480:500]) print(x, x_old)
xm =np.append(xm, x) jika abs(x – 300) <20:
break

perbarui antrian poin pts.appendleft(center)

for i in range(1, len(pts)):

jika salah satu dari titik yang dilacak adalah Tidak Ada, abaikan # mereka

jika pts[i – 1] adalah Tidak Ada atau pts[i] adalah Tidak Ada:
lanjutkan

jika tidak, hitung ketebalan garis dan # gambar garis penghubung

ketebalan =int(np.sqrt(args[“buffer”] / float(i + 1)) * 2.5) cv2.line(frame, pts[i – 1], pts[i], (0, 0, 255) , ketebalan)

tampilkan bingkai ke layar kita cv2.imshow(“Frame”, frame) key =cv2.waitKey(1) &0xFF

jika tombol 'q' ditekan, hentikan loop jika kunci ==ord(“q”):

print(xn) print(xn.shape) plt.plot(xm, label='x') plt.show()
break

jika tidak args.get(“video”, False):vs.stop()

jika tidak, lepaskan kamera yang lain:

vs.release()

tutup semua jendela cv2.destroyAllWindows() kembalikan x, tambahkan

def servo_pwm(pin, duty, pulse):on =20 * duty / 100000
off =-on + 20 / 1000 untuk i in range(pulse):
GPIO.output(pin, GPIO.HIGH ) time.sleep(on) GPIO.output(pin, GPIO.LOW) time.sleep(off)

def grip(angle=90):
servo_pwm(rotz, duty(angle), 100) rotx.start(duty(90)) gr.start(duty(100))
time.sleep(1 ) rotx.ChangeDutyCycle(duty(0)) time.sleep(1) gr.ChangeDutyCycle(duty(180)) time.sleep(0.5) rotx.ChangeDutyCycle(duty(90)) time.sleep(0.5)

def drop():rotx.ChangeDutyCycle(duty(180))

time.sleep(1) gr.ChangeDutyCycle(duty(100)) time.sleep(1) rotx.ChangeDutyCycle(duty(90)) time.sleep(0.5)

def done():
selesai =“f”
selesai =selesai.encode() blue.write(selesai)

coba:
sementara Benar:
data =blue.readline() # data =data.decode()

print(type(data), data) # if data !=“s”:

print(“tidak”) # lanjutkan

lain:print("ditemukan s") grip(80)

x, tambahkan =cari(80, 5) drop()
selesai()

kecuali KeyboardInterrupt:GPIO.cleanup() print(“Quit”)

VII. KESIMPULAN

Dalam proyek ini, kami menerapkan sistem penanganan kargo untuk otomatisasi gudang. Lengan robot mengambil barang dari ban berjalan, mencari kendaraan pengangkut menggunakan kamera yang terpasang di atasnya, memuat pesanan ke kendaraan setelah itu kendaraan pengangkut kemudian membawa barang ke lokasi yang dibutuhkan untuk diproses lebih lanjut. Otomatisasi gudang menjadi semakin umum di perusahaan besar dan kecil karena meningkatnya permintaan pelanggan dan pertumbuhan e-commerce. The Goods to People (GTP) adalah tren baru yang muncul di mana barang dipindahkan ke pekerja, bukan pekerja ke item. Menurut Nathan Busch, associate engineer konsultan di Bastian Solutions Inc., “Tingkat throughput sistem GTP biasanya sedikit lebih tinggi daripada operasi manual tradisional. Hal ini memungkinkan perusahaan untuk mengurangi biaya operasional dan pemenuhan pesanan mereka secara keseluruhan sambil meningkatkan throughput dan tingkat layanan.” Robotika seluler kini telah menjadi bagian penting dari hal ini karena barang-barang tersebut dicari, diambil, dan kemudian dibawa ke tempat pemrosesannya masing-masing. Lingkup masa depan proyek ini secara luas dipertimbangkan untuk sistem gudang yang sepenuhnya otonom, di mana barang-barang yang akan disimpan dapat dipisahkan oleh sistem lain dan sistem yang disajikan di atas dapat mentransfer barang dari konveyor ke stocking bot, yang selanjutnya menemukan jalur optimal ke lokasi penyimpanan yang diinginkan dan persediaan barang. Demonstrasi ini menunjukkan bahwa sistem tersebut dapat diimplementasikan di bagian-bagian untuk kepentingan usaha kecil; oleh karena itu, menggabungkan operasi manual dan robotik untuk meningkatkan throughput dan meningkatkan kinerja.

Sumber:DISTRIBUSI WEARHOUSE


Proses manufaktur

  1. Spork
  2. Titanium
  3. Biokeramik
  4. gips
  5. Derek
  6. Lem
  7. Jam pasir
  8. Utas
  9. Asetilen
  10. Timah