สารบัญ:

A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator: 4 ขั้นตอน
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator: 4 ขั้นตอน

วีดีโอ: A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator: 4 ขั้นตอน

วีดีโอ: A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator: 4 ขั้นตอน
วีดีโอ: The BEST Self-Hosted CCTV Solution With AI Object Detection? 2024, กรกฎาคม
Anonim
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator
A Hearing Jumping Jack เวอร์ชัน Google Coral TPU Accelerator

มันขยับแขนขา ฟังคำสั่งของคุณ ขับเคลื่อนด้วยเทคโนโลยีการเรียนรู้ของเครื่องล่าสุด

"แจ็คกระโดดการได้ยิน" เป็นแจ็คกระโดดแบบไฟฟ้าเครื่องกลอย่างง่าย ขับเคลื่อนด้วยเซอร์โวไมโครสองตัวและเกียร์ธรรมดามาก โดยมีไฟ LED เป็น "ตา" มันถูกควบคุมโดยคำสั่งเสียงง่ายๆ ที่ระบุว่าจะต้องใช้ตำแหน่งใดจากเก้าตำแหน่งที่กำหนดไว้ล่วงหน้า หรือหากไฟ LED ควรเปิดหรือปิด หรือถ้าจะทำ "การเต้นรำ" ที่กำหนดไว้ล่วงหน้าหรือชุดการเคลื่อนไหวแบบสุ่ม

องค์ประกอบหลักของระบบคือตัวเร่ง Google Coral TPU ซึ่งอนุญาตให้เรียกใช้รุ่น Tensorflow Lite แบบออฟไลน์ด้วยความเร็วสูงมาก แม้แต่ในคอมพิวเตอร์ที่ "อ่อนแอ" เช่น Raspberry Pi ซึ่งช่วยให้เช่น ระบุวัตถุอย่างรวดเร็วและจำแนกประเภทโดยใช้กล้อง RPi แต่ยังเรียกใช้ฟังก์ชันการรู้จำเสียงตามการเรียนรู้ของเครื่องภายในเครื่อง

ตามความรู้ของฉัน นี่เป็นตัวอย่างแรกที่เผยแพร่สำหรับอุปกรณ์ DIY ทางกายภาพที่ตรวจจับด้วยเสียงของ Coral Accelerator และตัวอย่างโค้ดที่แนบมาอาจใช้สำหรับโครงการอื่นๆ ที่ซับซ้อนมากขึ้น

การควบคุมด้วยเสียงอิงจากตัวอย่าง "งูที่ได้ยิน" ใน "ตัวระบุคำหลักของโครงการ" (https://github.com/google-coral/project-keyword-spotter) ซึ่งเพิ่งวาง (กันยายน 2019) บน GitHub ในการกำหนดค่าของฉัน ระบบประกอบด้วย Raspberry Pi 4 ที่ติดตั้งฝากระโปรงหน้าเซอร์โว Adafruit 16 ช่อง, Google Coral TPU Accelerator และเว็บแคม ซึ่งใช้เป็นไมโครโฟนในที่นี้ มีการอธิบาย Jumping Jack ไว้ก่อนหน้านี้ในคำแนะนำก่อนหน้านี้ ซึ่งขับเคลื่อนโดยชุด Google Voice เพื่ออ่านคำสั่งเสียง แนบมากับ Servo Bonnet ในเวอร์ชัน 2.0 ที่อธิบายไว้ในต่อไปนี้

Google Voice Kit เวอร์ชันก่อนหน้ามีข้อจำกัดหลักสามประการ: ขึ้นอยู่กับบริการจดจำเสียงบนเว็บของ Google และการตั้งค่าค่อนข้างซับซ้อน ต้องกดปุ่มบางอย่างก่อนจึงจะสั่งได้ และมีความล่าช้าอย่างร้ายแรง ระหว่างการพูดคำสั่งกับการตอบสนองของระบบ การใช้ตัวเร่งความเร็วของ Google Coral ช่วยลดเวลาตอบสนองเป็นวินาที ไม่ขึ้นกับการเชื่อมต่ออินเทอร์เน็ต และรับฟังอยู่ตลอดเวลา ด้วยการดัดแปลงบางอย่าง คุณอาจใช้เพื่อควบคุมอุปกรณ์ที่ซับซ้อนมากขึ้น เช่น Jumping Jack หุ่นยนต์หรือรถยนต์ หรืออะไรก็ตามที่คุณสามารถสร้างและควบคุมด้วย Raspberry Pi

ในเวอร์ชันปัจจุบัน ตัวค้นหาคำหลักเข้าใจชุดของคำหลัก/วลีสำคัญสั้นๆ ประมาณ 140 คำ ซึ่งกำหนดไว้ในไฟล์รูปแบบที่แนบมา (“voice_commands_v0.7_egetpu.tflite”) และอธิบายไว้ในไฟล์ป้ายกำกับแยกต่างหาก (“labels_gc2.raw.txt”). กำหนดโดยไฟล์ที่ปรับเปลี่ยนได้อย่างอิสระ (“commands_v2_hampelmann.txt”) คีย์เวิร์ดที่ใช้โดยสคริปต์ของเราโดยเฉพาะจะถูกจับคู่กับการกดแป้นพิมพ์บนแป้นพิมพ์เสมือน เช่น สำหรับตัวอักษร ตัวเลข ขึ้น/ลง/ซ้าย/ขวา crtl+c และอื่นๆ

จากนั้นเช่น การใช้ pygame.key "การกดแป้น" เหล่านี้จะถูกอ่านและใช้เพื่อควบคุมการกระทำที่อุปกรณ์ ซึ่งนี่คือแจ็คกระโดด ที่จะดำเนินการ ในกรณีของเรา นี่หมายถึงการขับเซอร์โวสองตัวไปยังตำแหน่งที่กำหนดไว้ล่วงหน้า หรือเพื่อเปิดหรือปิดไฟ LED เนื่องจากตัวตรวจสอบคำหลักทำงานแยกจากกัน มันสามารถรับฟังคำสั่งซื้อของคุณได้อย่างถาวร

เวอร์ชัน 21 กันยายน 2019

เสบียง

Raspberry Pi 4 ผ่าน Pimoroni

Google Coral TPU Accelerator ผ่าน Mouser Germany 72€

Adafruit 16 Servo Bonnet ผ่าน Pimoroni ประมาณ 10 €

www.adafruit.com/product/3416

learn.adafruit.com/adafruit-16-channel-pwm…

ส่วนหัว Stacker (ถ้าจำเป็น)

www.adafruit.com/product/2223

4x ก้อนแบตเตอรี่ AA (หรือแหล่งพลังงาน 5-6V อื่นๆ) สำหรับ Servo Bonnet

เว็บแคมเก่า เป็นไมโครโฟน

Jumping Jack ขับเคลื่อนด้วยเซอร์โวตามที่อธิบายไว้ในคำสั่งก่อนหน้า ภาพวาดเค้าโครงจะแนบไปกับขั้นตอนถัดไป แต่อาจต้องมีการปรับเปลี่ยน

ชิ้นส่วนที่จำเป็นสำหรับ Jumping Jack:

- จาน Forex 3 มม.

- เซอร์โวไมโคร 2 ตัว

- สกรูและน็อต 2 และ 3 มม.

- ไฟ LED สีขาว 2 ดวงและตัวต้านทาน

- สายนิดหน่อย

ขั้นตอนที่ 1: การตั้งค่าอุปกรณ์

การตั้งค่าอุปกรณ์
การตั้งค่าอุปกรณ์
การตั้งค่าอุปกรณ์
การตั้งค่าอุปกรณ์
การตั้งค่าอุปกรณ์
การตั้งค่าอุปกรณ์

ในการสร้าง Jumping Jack โปรดปฏิบัติตามคำแนะนำที่ให้ไว้ก่อนหน้านี้ ฉันใช้ Forex สำหรับต้นแบบของฉัน แต่คุณอาจใช้แผ่นอะคริลิกหรือแผ่นไม้อัดที่ตัดด้วยเลเซอร์ คุณอาจต้องปรับเลย์เอาต์ตามขนาดของเซอร์โวของคุณ ฯลฯ ทดสอบว่าแขนขาและเกียร์สามารถเคลื่อนที่ได้โดยไม่เสียดสีหรือไม่

ตั้งค่า Raspberry Pi ของคุณ บนไซต์ Coral Github มีรูปภาพ Raspian ที่มีทุกอย่างที่จำเป็นในการรัน Coral accelerator บน Pi และมีโปรเจ็กต์จำนวนมาก โดยมีการตั้งค่าทั้งหมดอยู่แล้ว

รับตัวระบุคำหลักของโครงการจากหน้า Google Coral GitHub ติดตั้งซอฟต์แวร์ที่จำเป็นทั้งหมดตามที่ระบุ

ติดตั้งไฟล์ที่ให้มา วางสคริปต์ jumping jack python ในโฟลเดอร์ spotter คีย์เวิร์ดของโปรเจ็กต์ และไฟล์คำสั่ง coresponding ในโฟลเดอร์ย่อย config

แนบ Adafruit Servo Bonnet กับ Pi เนื่องจากฉันใช้เคส RPI กับพัดลม ฉันจึงต้องใช้ตัวเรียงซ้อน GPIO (เช่น มีให้จาก Pimoroni) เพื่อเปิดใช้งานการเชื่อมต่อ ติดตั้งไลบรารีที่จำเป็นทั้งหมด ตามคำแนะนำของ Adafruit สำหรับฝากระโปรงหน้าเซอร์โว

ต่อแหล่งจ่ายไฟ 5-6V เข้ากับฝากระโปรงหน้าเซอร์โว ติดเซอร์โวและไฟ LED ในกรณีของฉัน ฉันใช้พอร์ต 0 สำหรับ LED และพอร์ต 11 และ 15 สำหรับเซอร์โว

ในการตรวจสอบทุกอย่าง ขอแนะนำให้ลองใช้ตัวอย่างคีย์เวิร์ด "งูได้ยิน" ของโปรเจ็กต์และตัวอย่างฝากระโปรงหน้าเซอร์โว Adafruit ก่อน

ขั้นตอนที่ 2: เรียกใช้ Jumping Jack

หากทุกส่วนได้รับการติดตั้งและใช้งานแล้ว ให้ลองใช้มัน คุณสามารถเรียกใช้สคริปต์ใน IDE หรือจากบรรทัดคำสั่ง

การตะโกน "ตำแหน่ง 0" ถึง "ตำแหน่ง 9" จะทำให้ Jumping Jack เข้าสู่ตำแหน่งที่กำหนดไว้ล่วงหน้าอย่างใดอย่างหนึ่ง ฉันกำหนด "1" เป็นแขนทั้งสองข้าง (uu), "3" เป็นซ้ายขึ้น ขวาลง (ud), "9" เป็นแขนทั้งสองข้าง (dd) และ "5" โดยวางแขนทั้งสองไว้ตรงกลาง (cc)

uu uc ud = 1 2 3

ลูกบาศ์ก ซีซี cd = 4 5 6

du dc dd = 7 8 9

"0" เหมือนกับ "5" ตัวชี้คำหลักไม่รู้จัก "3" และ "8" เป็นอย่างดี และอาจต้องทำซ้ำ

คุณอาจต้องปรับค่าต่ำสุดและสูงสุดสำหรับแต่ละเซอร์โว/ด้านเพื่อไม่ให้เซอร์โวถูกบล็อกและดึงพลังงานมากเกินไป

"เกมถัดไป" จะเริ่ม "การเต้นรำ" เช่น ลำดับตำแหน่งที่กำหนดไว้ ในขณะที่ "เกมสุ่ม" จะเริ่ม Jumping Jack เพื่อทำการสุ่มลำดับการเคลื่อนไหว ในทั้งสองกรณี พวกมันจะวิ่งตลอดไป ดังนั้นคุณอาจต้องหยุดการเคลื่อนไหวเช่น ด้วยคำสั่ง "ตำแหน่งศูนย์"

"หยุดเกม" จะทำให้เกิด "ctrl + c" และหยุดกระบวนการ

สามารถใช้ "สวิตช์เปิด" และ "ปิด" เปิดและปิดไฟ LED ได้

โดยการปรับเปลี่ยนค่า time.sleep คุณสามารถปรับความเร็วของการเคลื่อนไหวได้

ขั้นตอนที่ 3: ไฟล์โค้ดและคำสั่ง

รหัสที่นำเสนอนี้เป็นการแก้ไขรหัส "งูได้ยิน" ซึ่งเป็นส่วนหนึ่งของแพ็คเกจตัวชี้คำหลักของโครงการ ฉันเพิ่งลบสิ่งที่ไม่จำเป็นสำหรับการสมัครของฉันออกไป โดยไม่เข้าใจรายละเอียดจริงๆ การปรับปรุงใด ๆ ยินดีต้อนรับ

จากนั้นฉันก็เพิ่มชิ้นส่วนที่จำเป็นสำหรับ Adafruit Servo Bonnet ตามไฟล์ตัวอย่าง

ผมต้องขอขอบคุณโปรแกรมเมอร์ของทั้งสองส่วน

รหัสสามารถพบได้แนบเป็นไฟล์ ใช้ความเสี่ยงของคุณเอง แก้ไข ปรับปรุง เล่นกับมัน

# ลิขสิทธิ์ 2019 Google LLC

# # ได้รับอนุญาตภายใต้สัญญาอนุญาต Apache เวอร์ชัน 2.0 ("ใบอนุญาต"); # คุณไม่สามารถใช้ไฟล์นี้ได้ยกเว้นการปฏิบัติตามใบอนุญาต # คุณสามารถขอรับสำเนาใบอนุญาตได้ที่ # # https://www.apache.org/licenses/LICENSE-2.0 # # เว้นแต่กฎหมายที่บังคับใช้กำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ # เผยแพร่ภายใต้ใบอนุญาตจะเผยแพร่บน "ตามที่เป็น" พื้นฐาน # โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย # ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและ # ข้อ จำกัด ภายใต้ใบอนุญาต จาก _future_ import absolute_import จาก _future_ นำเข้าส่วนจาก _future_ นำเข้า print_function นำเข้า argparse นำเข้าระบบปฏิบัติการจากการสุ่มนำเข้า randint จาก threading นำเข้า เวลานำเข้าเธรดจาก edgetpu.basic.basic_engine นำเข้า BasicEngine โมเดลการนำเข้า นำเข้า pygame จาก pygame.locals นำเข้า * นำเข้าคิวจาก randrange การนำเข้าแบบสุ่ม จาก adafruit_servokit นำเข้าบอร์ดนำเข้า ServoKit นำเข้า busio นำเข้า adafruit_pca9685 เวลานำเข้า i2c = busio. I2C(board. SCL, board. SDA) hat = adafruit_pca9685. PCA9685(i2c) hat.frequency = 60 kit = ServoKit(channels=16) # set number ของช่อง #kit.servo[0].actuation_range = 160 #kit.servo[0].set_pulse_width_range(1000, 2000) # การตั้งค่าขึ้น กลาง และล่างสำหรับแขนซ้ายและขวา up_l = 35 md_l = 90 dn_l = 160 up_r = 160 md_r = 90 dn_r = 35

lft= 15 # จำนวนพอร์ตเซอร์โว, เซอร์โวซ้าย (0-8)

rgt= 11 # จำนวนพอร์ตเซอร์โว, เซอร์โวขวา (0-8) led_channel_0 = hat.channels[0] # LED ที่พอร์ต 0 led_channel_0.duty_cycle = 0 # เปิด LED 100% # รายการการตั้งค่าแขนสำหรับตำแหน่งเก้าตำแหน่ง = [(md_l, md_r), (up_l, up_r), (up_l, md_r), (up_l, dn_r), (md_l, up_r), (md_l, md_r), (md_l, dn_r), (dn_l, up_r), (dn_l, md_r), (dn_l, dn_r)] # กำหนดตำแหน่ง JumpingJack 9 ตำแหน่ง ระบุด้วยจำนวนเต็ม 0-9 dance1 =(0, 8, 7, 4, 1, 2, 3, 6, 9, 8, 5, 2, 1, 4, 7, 8, 9, 6, 3, 2, 0) # ตัวควบคุมคลาส "เต้น" (วัตถุ): #Callback function def _init_ (ตัวเอง, q): self._q = q def โทรกลับ (ตัวเอง คำสั่ง): self._q.put(command) class App: def _init_(self): self._running = True def on_init(self): pygame.init() self.game_started = True self._running = True return True def on_event(ตัวเอง, เหตุการณ์): if event.type == pygame. QUIT: self._running = False def JumpingJack0(ตัวเอง, คีย์): # ควบคุม Jumping Jack, คีย์เวิร์ด: "position x" key = int(keys) p = position [คีย์] a = p[0] b = p[1] พิมพ์ ("ตำแหน่ง: ", คีย์, " left / ขวา: "," a, "/", b, "ดีกรี") # sys.stdout.write ("ตำแหน่ง: ", คีย์, " ซ้าย/ขวา: ", a, "/", b, "ดีกรี") kit.servo[lft].angle = a kit.servo[rgt].angle = b time.sleep(0.1) def JumpingJack1(self): # ควบคุมการเต้น Jumping Jack คำสำคัญ: "เกมถัดไป" dnce = dance1 sp=(len(dnce)) สำหรับ r ในช่วง (sp): #dancing ลำดับของตำแหน่ง sp ขั้นตอน dc = dnce[r] ถ้า (dc ไม่อยู่ในช่วง (10)): # พิมพ์ ("อินพุตผิดพลาดที่ตำแหน่ง ", sp) dc=4 p = position[dc] a = p[0] b = p [1] kit.servo[lft].angle = a kit.servo[rgt].angle = b time.sleep (0.25) # ตั้งค่าความเร็ว ของการเคลื่อนไหว def JumpingJack2 (ตัวเอง, คีย์): # ควบคุม Jumping Jack LEDs, คำสำคัญ: "เปิด/ปิด" led = int (คีย์) ถ้า led == 1: led_channel_0.duty_cycle = 0xffff #turn on LED 100% time.sleep (0.1) ถ้า led == 0: led_channel_0.duty_cycle = 0 # ปิด LED time.sleep (0.1) ถ้า led == 2: # กะพริบ led_channel_0.duty_cycle = 0xffff #เปิด LED 100% time.sleep (0.5) led_channel_0.duty_cycle = 0 #เปิด LED 100% time.sleep (0.5) led_channel_0.duty_cycle = 0xffff #turn on LED 100% time.sleep (0.5) led_channel_0.duty_cycle = 0 #turn on LED 100% time.sleep (0.5) led_channel_0.duty_cycle = 0xffff #turn on LED 100% time.sleep (0.1) def JumpingJack3(ตัวเอง)): # ควบคุมการเต้น Jumping Jack คำสำคัญ: "เกมสุ่ม" # สำหรับ h ในช่วง (10): dr= randrange (9) p = ตำแหน่ง[dr] a = p[0] b = p[1] kit.servo [lft].angle = a kit.servo[rgt].angle = b time.sleep(0.25) # กำหนดความเร็วของการเคลื่อนที่ def spotter(ตัวเอง, args): engine = BasicEngine(args.model_file) mic = args.mic if args.mic เป็น None else int (args.mic) model.classify_audio (mic, engine, labels_file="config/labels_gc2.raw.txt", commands_file="config/commands_v2_hampelmann.txt", dectection_callback=self._controler.callback, sample_rate_hz=int(args.sample_rate_hz), num_frames_hop=int(args.num_frames_hop))

def on_execute(ตัวเอง, args):

ถ้าไม่ใช่ self.on_init(): self._running = False q = model.get_queue() self._controler = Controler(q) ถ้าไม่ args.debug_keyboard: t = Thread(target=self.spotter, args=(args,)) t.daemon = True t.start() item = -1 while self._running: pygame.event.pump() if args.debug_keyboard: keys = pygame.key.get_pressed() else: ลอง: new_item = q.get (True, 0.1) ยกเว้น queue. Empty: new_item = None ถ้า new_item ไม่ใช่ None: item = new_item if (args.debug_keyboard and keys[pygame. K_ESCAPE]) หรือ item == "stop": self._running = False # if (args.debug_keyboard และ keys[pygame. K_SPACE]) หรือ item == "go": # self. JumpingJack0(7) # if (args.debug_keyboard and keys[pygame. K_RIGHT]) หรือ item == "right": self. JumpingJack0(6) if (args.debug_keyboard and keys[pygame. K_LEFT]) หรือ item == "left": self. JumpingJack0(4) if (args.debug_keyboard and keys[pygame. K_UP]) หรือ item == " up": self. JumpingJack0(1) if (args.debug_keyboard and keys[pygame. K_DOWN]) หรือ item == "down": self. JumpingJack0(9) if (args.debug_keyboard and keys[pygam) e. K_0]) หรือ item == "0": self. JumpingJack0(0) if (args.debug_keyboard and keys[pygame. K_1]) หรือ item == "1": self. JumpingJack0(1) if (args. debug_keyboard และ keys[pygame. K_2]) หรือ item == "2": self. JumpingJack0(2) if (args.debug_keyboard and keys[pygame. K_3]) หรือ item == "3": self. JumpingJack0(3) if (args.debug_keyboard และ keys[pygame. K_4]) หรือ item == "4": self. JumpingJack0(4) if (args.debug_keyboard and keys[pygame. K_5]) หรือ item == "5": self. JumpingJack0(5) if (args.debug_keyboard and keys[pygame. K_6]) หรือ item == "6": self. JumpingJack0(6) if (args.debug_keyboard and keys[pygame. K_7]) หรือ item == "7 ": self. JumpingJack0(7) if (args.debug_keyboard and keys[pygame. K_8]) หรือ item == "8": self. JumpingJack0(8) if (args.debug_keyboard and keys[pygame. K_9]) หรือ item == "9": self. JumpingJack0(9) if (args.debug_keyboard and keys[pygame. K_a]) หรือ item == "d": self. JumpingJack1() #dancing Jack ใน "next_game" if (args. debug_keyboard และ keys[pygame. K_j]) หรือ item == "j": self. JumpingJack2(0) #LED on, ON " switch_on" if (args.debug_keyboard and keys[pygame. K_k]) หรือ item == "k": self. JumpingJack2(1) #LED off, on "swithch off" if (args.debug_keyboard and keys[pygame. K_l]) หรือ item == "l": self. JumpingJack2(1) #LED กะพริบ "target" if (args.debug_keyboard and keys[pygame. K_r]) หรือ item == "r": self. JumpingJack3() #random dance "เกมสุ่ม" time.sleep(0.05) self.on_cleanup() ถ้า _name_ == '_main_': parser = argparse. ArgumentParser() parser.add_argument('--debug_keyboard', help='ใช้แป้นพิมพ์เพื่อควบคุม JumpingJack.', action='store_true', ค่าเริ่มต้น=False) model.add_model_flags(parser) args = parser.parse_args() the_app = App() the_app.on_execute(args)

นอกจากนี้ยังมีไฟล์กำหนดค่าคำสั่ง "commands_v2_hampelmann.txt" ปรับเปลี่ยนตามที่คุณต้องการ เป็นเพียงรายการชุดค่าผสม "คำสั่ง, คีย์, (ความแรง,)" ตามไฟล์ป้ายกำกับ

position_zero, 0, position_one, 1, position_two, 2, position_three, 3, position_four, 4, position_five, 5, position_six, 6, position_seven, 7, position_eight, 8, position_nine, 9, move_up, ขึ้น, go_up, ขึ้น, move_down, ลง, go_down, ลง, move_backwards, ซ้าย, move_forwards, ขวา, go_backwards, ซ้าย, go_forwards, ขวา, 0.8 เป้าหมาย, l, ปิดเสียง, z, ใช่, y, ไม่ใช่, n, switch_on, j, switch_off, k, volume_up, ขึ้น, volume_down, ลง, next_game, d, random_game, r, start_game, s, stop_game, ctrl+c,

ขั้นตอนที่ 4: แนวคิดเพิ่มเติมและตัวอย่างอื่นๆ

เห็นได้ชัดว่าการตั้งค่านี้อาจใช้เพื่อควบคุมหุ่นยนต์หรืออุปกรณ์อื่นๆ โดยทั่วไปทุกอย่างที่อาจควบคุมโดย Raspberry Pi

ฉันกำลังพัฒนาสคริปต์เพื่อขับเคลื่อน MeArm และหวังว่าจะสามารถนำเสนอได้ในเดือนตุลาคม 2019

ฉันกำลังพิจารณาที่จะใช้ Jumping Jack เป็นสัญญาณ และใช้โปรแกรมการรู้จำตำแหน่งแขนขา "project posenet" เป็นเครื่องมือในการอ่านตำแหน่งของ Jumping Jack และแปลกลับเป็นตัวเลข วิธีนี้อาจทำให้สื่อสารข้อความได้ โดยตำแหน่ง 2x 8 ตำแหน่งสามารถระบุตัวเลขที่แตกต่างกัน 64 ตัว ซึ่งมากเกินพอสำหรับตัวอักษร ตัวเลข และเครื่องหมาย สิ่งนี้สามารถเปิดใช้งานในขณะที่แก้ไขเล็กน้อย การรับรู้ทางกายภาพสำหรับ IETF ที่เสนอ "การส่ง IP Datagrams ผ่านระบบสัญญาณ Semaphore Flag Signaling (SFSS)" (https://tools.ietf.org/html/rfc4824)

แต่นี่จะเป็นอีกหนึ่งคำสั่งสอน และจากการทดลองครั้งแรกระบุว่าแจ็คกระโดดจะต้องมีการปรับเปลี่ยนที่สำคัญก่อนที่จะได้รับการยอมรับว่าเป็นมนุษย์โดยระบบ AI อาจต้องใช้เวลาสักระยะ

ฉันต้องการดึงความสนใจของคุณไปที่คำแนะนำต่อไปนี้: Object-Finding-Personal-Assistant-Robot-Ft-Raspberry ซึ่งมีการอธิบายหุ่นยนต์ค้นหาวัตถุโดยใช้ Raspberry Pi และ Google Coral TPU

แนะนำ: