CMUcam3 Frame Grabber#

The CMUcam3 Frame Grabber is a simple utility that can be used to test your CMUcam3. Its primary purpose is to act as a terminal program similar to HyperTerminal or Minicom. It also allows you to view jpeg images returned from the camera. You need run the CMUcam2 Emulation firmware on the camera to use this program. The Frame Grabber requires that you install .NET version 2.0 or later which can be found on our software page. Unfortunately, the CMUcam3 Frame Grabber only works in Windows. The source can be found in the tools directory (called cc3_image_viewer). For Linux or Mac, please try using the CMUcam2GUI.

ในการเริ่มแอปพลิเคชัน:

  • ดับเบิลคลิกที่ CMUcam3 Frame Grabber

  • เลือกพอร์ต COM ที่ถูกต้องจากเมนูดรอปดาวน์ "Available COM Ports"

  • คลิกปุ่ม "Connect"

  • เปิด CMUcam3 ของคุณที่รันเฟิร์มแวร์การจำลอง CMUcam2 (รีบูตหากเปิดอยู่แล้ว)

  • คุณควรเห็นข้อความปรากฏในหน้าต่าง "Terminal Console"

  • กด "Grab Image" เพื่อถ่ายภาพ

นี่คือคำอธิบายของฟิลด์บนแท็บ "Main" ของอินเทอร์เฟซ:

  • พอร์ต COM ที่พร้อมใช้งาน

    • สิ่งนี้แสดงรายการพอร์ตอนุกรมที่ Windows รู้จัก

  • อัตราบอด

    • สิ่งนี้ให้คุณเปลี่ยนอัตราบอดหากคุณต้องการใช้โปรแกรมนี้เป็นไคลเอนต์เทอร์มินัล

  • การหมดเวลา

    • สิ่งนี้ตั้งค่าไทม์เอาต์สำหรับการตอบกลับอนุกรมใด ๆ ที่โปรแกรมอาจกำลังรออยู่

      • โดยปกติแล้วสิ่งนี้ไม่จำเป็นต้องเปลี่ยน

  • เชื่อมต่อ

    • เปิดการเชื่อมต่อซีเรียล

  • ตัดการเชื่อมต่อ

    • ปิดการเชื่อมต่อซีเรียล

  • ส่ง

    • ปุ่มนี้จะส่งข้อความใด ๆ ที่คุณพิมพ์ในกล่องข้อความที่อยู่ทางซ้ายของปุ่ม

    • กล่องข้อความเพิ่มอักขระ return โดยอัตโนมัติ ดังนั้นเพียงคลิก "Send" ก็ควรจะได้รับการตอบสนอง ACK จาก CMUcam2

    • ตามค่าเริ่มต้น โฟกัสจะอยู่ที่กล่องข้อความอินพุต ดังนั้นคุณสามารถพิมพ์และกด return เพื่อส่งข้อมูลได้เลย

  • CIF / QCIF

    • ปุ่มเหล่านี้ตั้งค่าความละเอียดของภาพที่กำลังแสดง

    • ตามค่าเริ่มต้น CMUcam3 จะส่งภาพความละเอียดต่ำที่ถูกปรับขนาดให้เต็มหน้าต่างทั้งหมด

  • จับภาพ

    • สิ่งนี้ส่งคำสั่ง "SJ" (Send JPEG) ไปยัง CMUcam3 และแสดงผลลัพธ์

  • วนซ้ำ

    • ช่องทำเครื่องหมายนี้ทำให้ไคลเอนต์กด "Grab Frame" โดยอัตโนมัติทุก ๆ "Refresh Interval" มิลลิวินาที

    • หาก CMUcam3 ไม่สามารถสร้างภาพภายในเวลาที่กำหนด โปรแกรมจะหมดเวลาพร้อมข้อผิดพลาด

      • หากสิ่งนี้เกิดขึ้น ให้เพิ่ม Refresh Interval หรือลดความละเอียดของภาพ

  • ช่วงเวลารีเฟรช

    • พารามิเตอร์นี้ตั้งค่าความถี่ในการส่งคำสั่ง "Grab Image" เมื่อ "Loop" ถูกทำเครื่องหมาย

  • หยุด

    • สิ่งนี้หยุดไม่ให้จับภาพแบบวนซ้ำ

แท็บ "Settings" ให้คุณตั้งค่าฟีเจอร์ทั่วไปบางอย่างของ CMUcam3 แต่ละปุ่มที่คุณกดเป็นเพียงการส่งคำสั่ง CMUcam2 ที่ตรงกันผ่านพอร์ตอนุกรม

นี่คือคำอธิบายของฟิลด์บนแท็บ "Setting" ของอินเทอร์เฟซ:

  • ความละเอียดต่ำ / ความละเอียดสูง

    • ปุ่มเหล่านี้สลับระหว่าง High Resolution CIF (352x288) หรือ Low Resolution QCIF (176x144)

    • สิ่งนี้สอดคล้องกับคำสั่งอนุกรม "HR 1" และ "HR 0"

  • RGB / YCrCb

    • สิ่งนี้เลือกโหมดพิกเซลดั้งเดิมของกล้องให้เป็น RGB หรือ YCrCb

    • สิ่งนี้สอดคล้องกับคำสั่ง CMUcam2 "CR 18 44" หรือ "CR 18 36"

  • ดาวน์แซมเปิล

    • สิ่งนี้ตั้งค่าปริมาณการดาวน์แซมพลิงที่อิงตามเฟิร์มแวร์

    • สิ่งนี้สอดคล้องกับ "DS X Y" โดยที่ X และ Y เป็นค่าที่ตั้งในแต่ละกล่องเลือก

  • หน้าต่าง

    • สิ่งนี้ตั้งค่าพารามิเตอร์หน้าต่างเสมือนสำหรับกล้อง

    • สิ่งนี้สอดคล้องกับคำสั่ง CMUcam2 "VW x0 y0 x1 y1"

  • ตัวควบคุมเซอร์โว

    • สิ่งนี้ให้คุณตั้งค่าตำแหน่งเซอร์โวของพอร์ตเซอร์โว 4 พอร์ตของ CMUcam3

    • สิ่งนี้จะทำให้เซอร์โวใด ๆ ที่เชื่อมต่อกับ CMUcam3 เคลื่อนที่

    • สิ่งนี้สอดคล้องกับคำสั่ง CMUcam2 "SV"

You can send any CMUcam2 command using the "Send" button and the text input box. For example, sending "GM" (Get Mean) returns the mean color of the image. To stop the streaming, simply click "Send" or press return. This program does not visualize most of the CMUcam2 commands. For visualization try using the CMUcam2GUI java program.

การแก้ไขปัญหา#

ทำไมกล้องจึงค้างเมื่อฉันเปลี่ยนคุณสมบัติขณะจับภาพในลูป?

  • น่าเสียดายที่ CMUcam3 Frame Grabber ไม่ฉลาดพอที่จะติดตามว่าคุณกำลังทำอะไรอยู่จริง ๆ ดังนั้นหากคุณกำลังวนภาพและคุณเปลี่ยนความละเอียดเป็นค่าที่ใหญ่กว่า มันอาจส่งคำสั่ง "Grab Frame" ถัดไปก่อนที่ภาพความละเอียดสูงจะถ่ายโอนเสร็จ หลังจากสิ่งนี้เกิดขึ้นไม่กี่ครั้ง Frame Grabber จะหลุดจากการซิงค์กับกล้องและซีเรียลจะไทม์เอาต์ โดยทั่วไปหากคุณกด "Stop" ก่อนเปลี่ยนพารามิเตอร์ และตรวจสอบให้แน่ใจว่าคุณตั้งค่า "Refresh Interval" เป็นค่าที่ใหญ่กว่าสำหรับภาพความละเอียดสูง คุณก็จะไม่ได้รับข้อผิดพลาดการสื่อสารหรือไทม์เอาต์

ทำไมฉันจึงวนซ้ำกับภาพความละเอียดสูงไม่ได้?

  • นี่คือปัญหาเดียวกับที่อธิบายในคำถามก่อนหน้า หาก "Refresh Interval" เล็กเกินไป กล้องจะร้องขอภาพเร็วกว่าที่มันจะผลิตได้