รถเข็นของคุณว่างเปล่า!
Octoprint The Series - EP5. ถ่ายทำ Timelapse สุดเจ๋งด้วย Octolapse
ดูวิดีโอประกอบได้ที่นี่ :
เพื่อนๆเคยเห็นวิดีโอของโมเดล 3 มิติที่ถูกพิมพ์ขึ้นมาบนฐานพิมพ์โดยที่หัวพิมพ์ไม่ได้ขยับเลยหรือเปล่า เหมือนตัวโมเดลมันค่อยๆงอกออกมาเอง เขาทำแบบนั้นได้อย่างไร ลองมาดูกันครับ
Timelapse คืออะไร
ก่อนอื่นเราต้องมาเข้าใจว่า Timelapse คืออะไรกันก่อน โดย Timelapse นั้นคือการถ่ายทำวิดีโอรูปแบบหนึ่ง โดยอาศัยการถ่ายภาพหลายๆภาพในแต่ละช่วงเวลามาประกอบกัน โดยมีช่วงระยะเวลาที่เว้นไม่ถ่ายภาพเท่าๆกัน โดยนำภาพทั้งหมดมาประกอบเรียบเรียงกันตามลำดับเวลา ก็จะได้เป็นวิดีโอที่แสดงให้เห็นถึงความเปลี่ยนแปลงของวัตถุที่มีการเปลี่ยนแปลงอย่างรวดเร็ว จากการที่ภาพในแต่ละช่วงเวลาที่ถูกถ่ายออกมานั้นเป็นเพียงช่วงระยะเวลาสั้นๆที่กล้องได้บันทึกภาพไว้ ซึ่งมีความนิยมเป็นอย่างมากในการนำไปถ่ายความเปลี่ยนแปลงของธรรมชาติ สภาพแวดล้อมต่างๆที่มีการเปลี่ยนแปลงอย่างช้าๆ เช่น เมฆเคลื่อนที่บนท้องฟ้า ดาวเคลื่อนที่บนท้องฟ้า หรือ ดอกไม้ที่ค่อยๆบานในช่วงวัน
ซึ่งจากลักษณะการถ่ายภาพข้างต้น ทำให้เหมาะสมเป็นอย่างยิ่ง สำหรับการสังเกตถึงความคืบหน้าของการพิมพ์ 3 มิติ เพราะกว่าที่หัวฉีดจะทำการพิมพ์เส้นพลาสติกขึ้นมาแต่ละชั้น ก็ใช้เวลาเอาการอยู่ ถ้าจะถ่ายเป็นวิดีโอทั่วไป ก็จะเป็นวิดีโอที่มีความยาวหลายชั่วโมงเลยทีเดียว แต่ถ้าหากเป็นการถ่ายทำ Timelapse เราสามารถถ่ายทำเฉพาะเมื่อโมเดลมีการเปลี่ยนแปลงเท่านั้นได้ เช่น เมื่อมีการพิมพ์ Layer เสร็จสิ้น หรือ ทุกๆ 1 นาที ซึ่งจะช่วงให้วิดีโอสุดท้ายที่ได้จาก Timelapse สั้นกว่ามาก โดยอาจเหลือเพียงวิดีโอความยาวไม่ถึง 1 นาทีเท่านั้น (ขึ้นอยู่กับลักษณะการตั้งค่า Timelapse)
Octolapse ปลั๊กอินที่จะทำให้การถ่ายทำ Timelapse ด้วย Octoprint เป็นเรื่องกล้วยๆ
หากใครเคยใช้งานฟีเจอร์ Timelapse ของ Octoprint มาก่อนก็จะรู้ว่ามันไม่ได้มีอะไรที่แตกต่างจากการเอากล้องวงจรปิดมาถ่าย Timelapse เลย เพราะภาพที่ได้มีความละเอียดต่ำ และตาลายเพราะถ่ายทุกช่วงเวลา แต่ด้วยพลังของปลั๊กอิน Octolapse จะช่วยให้วิดีโอ Timelapse ของคุณชัดเหมือนมืออาชีพเลยทีเดียว โดย Octolapse สามารถช่วยให้เราตั้งค่าในส่วนต่างๆที่เกี่ยวข้องกับการถ่าย Timelapse ได้ ไม่ว่าจะเป็น resolution ของวิดีโอ Timelapse ที่ต้องการ, ช่วงเวลาที่ต้องการให้เว้นระยะการถ่าย, จุดที่ต้องการให้หัวฉีดเลื่อนไปหลบกล้อง และอื่นๆอีกมากมาย ไม่พิมพ์ให้เมื่อยมือ เรามาติดตั้งปลั๊กอิน Octolapse กันดีกว่า
วิธีการติดตั้งและตั้งค่า Octolapse plugin
- ไปที่ Setting เลือกหัวข้อ Plugin Manager แล้วกดปุ่ม Get More
- ทำการค้นหาโดยใช้คีย์เวิร์ด "Octolapse" แล้วทำการกด Install ได้เลย
- หลังจากนั้นจะปรากฏกล่องข้อความให้รีสตาร์ต Octoprint ให้กดปุ่ม Restart Now เพื่อทำการรีสตาร์ตตัวบอร์ด
- เมื่อบอร์ดเริ่มทำงานอีกครั้ง ให้คลิกที่สัญลักษณ์ทางด้านซ้ายบนของกราฟอุณหภูมิ (ดังภาพด้านล่าง) แล้วเลือก Octolapse
- ทำการเพิ่มเครื่องพิมพ์ 3 มิติให้ Octolapse รู้จักก่อน โดยคลิกที่รูปเฟืองด้านขวาบนของกราฟอุณหภูมิ
- เลือกหัวข้อ Printer แล้วกดปุ่ม Add Profile...
- เมื่อเข้ามาแล้วให้ทำการตั้งชื่อเครื่องพิมพ์ 3 มิติที่ต้องการเพิ่มให้ Octolapse รู้จัก และตั้งค่าในส่วนของหัวข้อ Current Slicer Setting > Slicer Type ให้เป็น Automatic Configuration
- เลื่อนลงไปด้านล่างสุด แล้วกด Save
ต่อมาเราจะมาทำการเพิ่ม Gcode ใน Slicer ที่เราใช้งานกัน โดย Gcode ในส่วนที่เราจะเพิ่มเข้าไปนี้จะทำงานร่วมกับ Octolapse ในการสั่งให้หัวพิมพ์ให้เคลื่อนที่ไปตามจุดที่เรากำหนด สำหรับการหลบมุมกล้อง หรือท่าทางอื่นๆตามที่เรากำหนดไว้ใน Octolapse โดยสามารถทำได้ ดังนี้
- ทำการเปิด Cura ขึ้นมา เลือก Preferences > Configure Cura... เลือกหัวข้อ Printers แล้วเลือกเครื่องพิมพ์ที่ต้องการตั้งค่า แล้วกดปุ่ม Machine Settings
- นำ G-code ด้านล่างไปวางไว้ในส่วนด้านบนสุดของ G-code เดิมในช่อง Start G-code โดยไม่ต้องลบ G-code ของเดิมออก โดยให้เว้นระยะห่าง 1 บรรทัดระหว่าง G-code ส่วนใหม่ที่นำเข้าไปวาง กับ G-code ส่วนเก่าที่มีอยู่แล้ว หลังจากนั้นกดปุ่มกากบาทออกมาได้เลย
G-code ด้านล่างสำหรับ Cura เวอร์ชัน 4.2 ขึ้นไปเท่านั้น!; Script based on an original created by tjjfvi (https://github.com/tjjfvi)
; An up-to-date version of the tjjfvi's original script can be found
; here: https://csi.t6.fyi/
; Note - This script will only work in Cura V4.2 and above!
; --- Global Settings
; layer_height = {layer_height}
; smooth_spiralized_contours = {smooth_spiralized_contours}
; magic_mesh_surface_mode = {magic_mesh_surface_mode}
; machine_extruder_count = {machine_extruder_count}
; --- Single Extruder Settings
; speed_z_hop = {speed_z_hop}
; retraction_amount = {retraction_amount}
; retraction_hop = {retraction_hop}
; retraction_hop_enabled = {retraction_hop_enabled}
; retraction_enable = {retraction_enable}
; retraction_speed = {retraction_speed}
; retraction_retract_speed = {retraction_retract_speed}
; retraction_prime_speed = {retraction_prime_speed}
; speed_travel = {speed_travel}
สำหรับ Cura หรือ Slicer โปรแกรมอื่น สามารถอ่านเพิ่มเติมได้ตามบทความนี้ : V0.4 Automatic Slicer Configuration
- ไปที่หัวข้อ Camera โดยแบ่งออกเป็น 2 รูปแบบ ดังนี้
- กรณีใช้งานกล้อง USB Webcam หรือ Raspberry Pi camera (CSI Interface) : สามารถใช้งาน Default setting ตามที่ Octolapse กำหนดให้เราได้เลย โดยจะขึ้นชื่อของ Default camera ว่า Webcam ดังภาพด้านล่าง
- กรณีใช้งานกล้อง DSLR - เราต้องทำการสร้าง script ให้ตัว Octolapse สามารถสั่งให้กล้องของเราถ่ายภาพและส่งมาเก็บใน Raspberry Pi ได้ โดยมีวิธีการ ดังนี้
- ทำการรีโมท SSH เข้าสู่ Raspberry Pi ที่รัน Octoprint อยู่ โดย Username และ Password นั้นคือ pi และ raspberry ตามลำดับ (กรณีที่ไม่ได้มีการเปลี่ยนแปลงรหัสผ่าน)
- ทำการสร้างสคริปสำหรับการถ่ายภาพ โดยใช้คำสั่ง
nano /home/pi/scripts/take-snapshot.sh
- คัดลอกนำสคริปด้านล่าง วางลงในไฟล์สคริปที่สร้างขึ้นมา หลังจากนั้นทำการกด Ctrl+O เพื่อ Save และ Ctrl+X เพื่อออก
#!/bin/sh
# Put the arguments sent by Octolapse into variables for easy use
SNAPSHOT_NUMBER=$1
DELAY_SECONDS=$2
DATA_DIRECTORY=$3
SNAPSHOT_DIRECTORY=$4
SNAPSHOT_FILENAME=$5
SNAPSHOT_FULL_PATH=$6
# Check to see if the snapshot directory exists
if [ ! -d "${SNAPSHOT_DIRECTORY}" ];
then
echo "Creating directory: ${SNAPSHOT_DIRECTORY}"
mkdir -p "${SNAPSHOT_DIRECTORY}"
fi
# IMPORTANT - You must add gphoto2 to your /etc/sudoers file in order to execute gphoto2 without sudo
# otherwise the following line will fail.
sudo gphoto2 --capture-image-and-download --filename "${SNAPSHOT_FULL_PATH}"
if [ ! -f "${SNAPSHOT_FULL_PATH}" ];
then
echo "The snapshot was not found in the expected directory: '${SNAPSHOT_FULL_PATH}'." >&2
exit 1
fi - กำหนดให้ Octoprint สามารถเข้าถึงไฟล์คริปนี้ได้ โดยใช้คำสั่ง
chmod +x /home/pi/scripts/take-snapshot.sh
- ทำการทดสอบการทำงานของสคริปถ่ายภาพ โดยใช้คำสั่ง
/home/pi/scripts/take-snapshot.sh 1 1 "" "/home/pi/scripts" "" "/home/pi/scripts/test.jpg"
- ซึ่งถ้าหากการทดสอบประสบความสำเร็จ เราจะได้ยินเสียงกล้องทำงาน โดยการถ่ายภาพ 1 ครั้ง และผลลัพธ์ที่แสดงออกมาจะได้ดังภาพ
- กลับไปที่ Octolapse เลือกหัวข้อ Camera แล้วกด Add Profile...
- ทำการตั้งค่าชื่อกล้องที่ต้องการเพิ่ม และเลือก Camera Type เป็น External Camera - Script
- ในส่วนของ External Camera Setup - Script > Sanpshot Acquire Script ให้ทำการคัดลอก Path ด้านล่างลงไปวาง
*ลองกด Test Script เพื่อทดสอบว่า Script ตาม Path ที่เรากำหนดไป Octoprint สามารถเข้าถึงและใช้งานได้หรือไม่ ซึ่งหากใช้งานได้ ตัวกล้องก็จะทำการถ่ายภาพ 1 ครั้งหลังจากที่เรากด Test Script
**โดยทั่วไปแล้ว Raspberry Pi มีโครงสร้าง Path ที่เหมือนกันทุกตัว ดังนั้น สามารถคัดลอก Path ข้างต้นเพื่อนำไปใช้ในการอ้างอิงตำแหน่งสคริปได้เลย/home/pi/scripts/take-snapshot.sh
- หลังจากตรวจสอบแล้วใช้งานได้ปกติ สามารถเลื่อนลงไปด้านล่างสุดแล้วกด Save ได้เลย
- ทำการรีโมท SSH เข้าสู่ Raspberry Pi ที่รัน Octoprint อยู่ โดย Username และ Password นั้นคือ pi และ raspberry ตามลำดับ (กรณีที่ไม่ได้มีการเปลี่ยนแปลงรหัสผ่าน)
- กรณีใช้งานกล้อง USB Webcam หรือ Raspberry Pi camera (CSI Interface) : สามารถใช้งาน Default setting ตามที่ Octolapse กำหนดให้เราได้เลย โดยจะขึ้นชื่อของ Default camera ว่า Webcam ดังภาพด้านล่าง
- หลังจากทำการเพิ่มกล้องเสร็จแล้ว สามารถไปที่หน้า Dashboard ของ Octolapse เพื่อตั้งค่าต่างๆที่เกี่ยวข้องกับการถ่าย Timelapse ของคุณได้เลย โดยมีรายละเอียด ดังนี้
- Printer - โปรไฟล์ของเครื่องพิมพ์ 3 มิติที่เลือกใช้งาน โดยให้เลือกให้ตรงกับรุ่นที่จะใช้ในการถ่ายทำ Timelapse ครั้งนั้นๆทุกครั้ง
- Stabilization - ตำแหน่งที่ต้องการให้หัวฉีดหลบไปอยู่เมื่อกล้องกำลังจะทำการถ่ายภาพชิ้นงาน โดยสามารถเลือกได้ตามต้องการ อาทิ Cetered (อยู่ตรงกลางนิ่งๆ), Left Back (หลังซ้าย) เป็นต้น
- Trigger - ช่วงเวลาที่ต้องการให้กล้องทำการถ่ายภาพ เช่น ทุกๆครั้งที่หัวพิมพ์มีการขยับไปฉีด Layer ถัดไป หรือ ถ่ายภาพทุกๆ 1 นาที เป็นต้น
- Rendering - ประเภทไฟล์วิดีโอและ framerate ที่ต้องการให้ Octolapse ทำการ render ไฟล์วืดีโอ Timelapse ของคุณออกมา เช่น MP4 - 60 FPS (MP4 ที่ 60fps)
- Cameras - กล้องที่ต้องการใช้ในการถ่าย Timelapse รอบนั้นๆ โดยสามารถมีกล้องมากกว่า 1 ตัวสำหรับการถ่าย Timelapse 1 ครั้งได้ กรณีที่กล้องตัวไหนไม่ได้ติดตั้งอยู่ในรอบนั้นๆ แนะนำให้ทำการนำเครื่องหมายติ๊กถูกออกด้วย
- กรณีที่บางชิ้นงานที่ไม่ต้องการถ่าย Timelapse ให้ทำการปิดสวิตช์ Plugin Enabled ทุกครั้งก่อนทำการพิมพ์ เพื่อที่จะไม่ต้องให้หัวพิมพ์ทำการเลื่อนหลบจากการที่ Octolapse สั่งให้หัวพิมพ์หลบกล้อง ทั้งๆที่ในรอบนั้นไม่มีการถ่ายทำ Timelapse ซึ่ง็จะทำให้ระยะเวลาที่ใช้ในการพิมพ์นานขึ้นโดยไม่มีประโยชน์
- เมื่อเริ่มพิมพ์โมเดล ก่อนการพิมพ์จะมีการถามก่อนว่าโอเคกับตำแหน่ง Stabilizer ตาม Snapshot Plan ที่ตั้งไว้แล้วหรือไม่ ถ้าโอเคก็สามารถกด Accept and Continue ได้เลย
หลังจากนั้นตัวเครื่องพิมพ์ก็จะเริ่มทำการพิมพ์และถ่ายทำ Timelapse โดยอัตโนมัติ
- หลังจากการพิมพ์โมเดลเสร็จสิ้น เราสามารถดาว์นโหลดวิดีโอ Timelapse ที่ได้จาก Octolapse โดยกดที่ปุ่ม Videos and Images... ซึ่งจะพบกับไฟล์วิดีโอ Timelapse ให้ทำการกดปุ่มสัญลักษณ์ดาว์นโหลดด้านหลังเพื่อดาว์นโหลดไฟล์เข้าสู่อุปกรณ์ของคุณได้ทันที
เป็นยังไงบ้านครับ ไม่ยากเลยใช่ไหมครับ สำหรับการถ่ายทำ Timelapse แบบมืออาชีพด้วย Octolapse
สำหรับบทความถัดไป เราจะมาให้ Ai ตรวจจับความผิดพลาดในการพิมพ์ของเครื่องพิมพ์ 3 มิติของเรากัน เราจะได้ไม่ต้องคอยกังวลว่าเราจะได้เส้นหมี่หรือฝอยขัดหม้อเวลาเราไม่ได้อยู่หน้าเครื่องแล้ว!