Robotic Car Charger ใช้ LiDAR + ChArUco เสียบชาร์จ Tesla อัตโนมัติ
โจทย์ยากของหุ่นยนต์ตัวนี้ไม่ใช่แค่ “ขับไปหารถให้เจอ” แต่คือเมื่อ Robot ตั้งใจทำให้ตัวเล็กและเบา แล้วจะเอาแรงจากไหนมาดันหัวชาร์จเข้า Tesla โดยไม่ทำให้ตัว Robot ถอยหนี?
โปรเจกต์ Robotic Car Charger ของ Mew463 แก้ปัญหานี้ด้วยการผสม Raspberry Pi 5, ESP32-C3, Mecanum Wheels, LiDAR, กล้อง 1080p, ChARuco Board และ Suction Cups สองตัว เข้าด้วยกันเป็นระบบชาร์จรถอัตโนมัติ สำหรับ 2021 Tesla Model 3
- Target Vehicle ในโปรเจกต์คือ 2021 Tesla Model 3
- ใช้ Raspberry Pi 5 RAM 8GB เป็นคอมพิวเตอร์หลัก
- มี ESP32-C3 บน Custom Pi HAT
- ใช้ Mecanum Wheels + LiDAR สำหรับเข้าใกล้รถ
- ผู้สร้างเลือกไม่ใช้ SLAM สำหรับระยะเดินทางประมาณ 2 เมตร
- ใช้กล้อง 1080p + ChARuco สำหรับ Fine Alignment
- Suction Cups สองตัวช่วยสร้างแรงต้านตอนเสียบหัวชาร์จ
- Current Sensor ช่วยตรวจการสร้าง Vacuum ของระบบดูด
- Current GitHub Implementation ใช้ Tessie API เพื่อสื่อสารกับรถ
- มี Source Code, ESP32 Project และ Onshape CAD เปิดบน GitHub
Robotic Car Charger ตัวนี้ทำอะไร?
เป้าหมายของ Project คือให้ Robot เคลื่อนจากตำแหน่ง Home ในโรงรถ ไปยัง Tesla Model 3 จัดแนวตัวเองกับ Charge Port เสียบหัวชาร์จ และถอดออกเมื่อเสร็จ ก่อนกลับไปจอดที่ผนัง
แนวคิดการออกแบบเน้นให้ตัว Robot ไม่ยื่นออกมาจากรถมากเกินไปขณะชาร์จ โดยสายชาร์จลงไปตามแนวพื้น แทนการมีฐานหรือแขนขนาดใหญ่กินพื้นที่ในโรงรถ
หัวใจของระบบคือ Raspberry Pi 5 + ESP32-C3
README ของผู้สร้างระบุว่า Raspberry Pi 5 รุ่น RAM 8GB เป็น Main Computer ของระบบ และมี ESP32-C3 อยู่บน Custom Pi HAT
Pi HAT ตัวนี้ยังรับไฟ 12V และเชื่อม Power ไปยัง Module ต่าง ๆ ของ Robot ตาม Architecture ของผู้สร้าง
เข้าใกล้แล้วค่อยใช้ Camera + ChARuco จัดแนวละเอียด
เมื่อ Robot เข้าใกล้รถแล้ว ระบบจะเปลี่ยนมาใช้กล้อง 1080p สำหรับ Final Alignment กับ ChARuco Board ที่ติดอยู่ใต้บริเวณ Charge Port
การ Align ต้องการ Pose ทั้งตำแหน่งและมุม ได้แก่ x, y, z, roll, pitch และ yaw เพื่อให้หัวชาร์จตั้งฉากกับ Charge Port ได้เหมาะสมก่อนดันเข้าไป
ทำไมเปลี่ยนจาก AprilTag มาใช้ ChARuco?
ผู้สร้างระบุว่า ตอนใช้ AprilTag เดี่ยว Pose Uncertainty มากเกินไป จนส่งผลต่อ Alignment
เมื่อเปลี่ยนมาใช้ ChARuco Board ผู้สร้างพบว่า Tracking มีความเสถียรมากขึ้นสำหรับงานนี้
LED มีหน้าที่ใน Vision Pipeline ด้วย
README ระบุว่า Camera PCB มี NeoPixels ด้านหน้า 8 ดวง และด้านหลัง 2 ดวง
Software ใช้ Closed-loop Logic ปรับความสว่างของ LED จน Frame Brightness อยู่ในระดับที่เหมาะกับ การตรวจ Marker
ปัญหาจริงคือ Robot เบาเกินไปสำหรับแรงเสียบหัวชาร์จ
เมื่อ Gear Assembly ดันหัวชาร์จไปด้านหน้า แรงปฏิกิริยาสามารถผลัก Robot ให้ถอยหลังได้ โดยเฉพาะเมื่อออกแบบ Robot ให้เตี้ยและน้ำหนักไม่มาก
วิธีแก้ของ Project คือใช้ Suction Cups สองตัว ยึด Robot กับพื้นที่รอบ Charge Port เพื่อให้ตัวรถกลายเป็นจุดรับแรง ขณะ Mechanism ดัน Connector เข้าไป
Current Sensor ช่วยรู้ว่า Vacuum ติดหรือยัง
ผู้สร้างระบุว่า เมื่อ Vacuum เกิดอย่างเหมาะสม Current ของ Motor จะเปลี่ยนไป จึงใช้ข้อมูลนี้เป็นอีกสัญญาณหนึ่ง ในการตรวจว่า Alignment และการยึดด้วย Suction Cup สำเร็จหรือไม่
Robot เปิด Charge Port ผ่าน API ก่อนเข้าไปเสียบ
README ระบุว่าผู้สร้างเคยลองทำงานตรงกับ Tesla Fleet API แต่ Current Implementation เปลี่ยนมาใช้ Tessie API
Robot ใช้ API สำหรับคำสั่งและสถานะที่เกี่ยวข้อง เช่นการเปิด Charge Port และการตรวจสถานะรถก่อนเริ่มขั้นตอนอัตโนมัติ
เงื่อนไขระดับ Workflow ที่ README ระบุ
- LiDAR ตรวจพบสิ่งที่อยู่ใน Range
- ตรวจว่ารถเคยออกจาก Geofence แล้วกลับมา
- รถอยู่ในตำแหน่งบ้าน/จุดชาร์จ
- Charging State เป็น Disconnected
- Shift State อยู่ใน Park
ใน Source Code ของ
car_ready_to_be_charged()
จะตรวจโดยตรงเรื่อง
Disconnected, อยู่ใน Charger Geofence
และ Shift State = P
ดังนั้นไม่ควรรวมทุกเงื่อนไขใน README
แล้วอ้างว่าอยู่ใน Function เดียวกัน
ตัวอย่าง Code: ตรวจว่ารถพร้อมให้ Robot เข้าไปชาร์จหรือยัง
Snippet ด้านล่างมาจาก
api/tesla_control.py
ใน Official GitHub
และไม่มี API Token, VIN
หรือ Credential จริงอยู่ในตัวอย่าง
def car_ready_to_be_charged(self) -> bool:
car_state = self.get_charging_related_data()
if (car_state is not None):
self.logger.debug(f"car_state: {car_state}")
return (car_state["charge_state"] == "Disconnected" and
car_state["is_at_charger"] and
car_state["shift_state"] == 'P')
else:
self.logger.warning("car_state is None")
return False
Mechanical CAD และ Custom PCB ก็เปิดให้ดู
ผู้สร้างเปิด Onshape CAD สำหรับดู Mechanical Assembly ของ Robot ซึ่งเหมาะกับคนที่ต้องการศึกษาว่า การวาง Wheel, Elevator, Camera และ Connector Mechanism ถูกจัดใน Chassis อย่างไร
Custom PCB
Current Repository ที่ตรวจสอบ ไม่มี GitHub Release Asset และยังไม่พบ Gerber ZIP, KiCad Project, BOM หรือ PCB Manufacturing Package ที่ระบุให้ดาวน์โหลดโดยตรง
ดู Robotic Car Charger ทำงานจริง
วิดีโอหลักของ Project: Tesla Robotic Car Charger
Reference Projects ที่ผู้สร้างลิงก์ไว้ใน README
วิดีโอด้านล่างเป็นโปรเจกต์ก่อนหน้า ที่ผู้สร้างรวบรวมไว้เป็น Reference ไม่ใช่วิดีโอของ Robot ตัวนี้โดยตรง
Source Code, CAD และ Downloads ที่เกี่ยวข้อง
Safety และ Security ที่ควรแยกจากความสนุกของ Project
Project มี Motor, Mecanum Drive, Elevator, Suction Mechanism และ Charging Connector ที่เคลื่อนที่ใกล้ตัวรถ จึงต้องคำนึงถึงการหนีบ, การชน, ความเสียหายต่อ Charge Port และการเคลื่อนที่โดยไม่ตั้งใจ
บทความนี้ไม่ได้เป็นคู่มือ EV High-voltage Wiring และไม่ได้ให้ Charging Connector Pinout, Charging-current Modification หรือวิธี Bypass Safety System ของรถ
ควรใช้ API, Token, VIN และ Vehicle Credential เฉพาะกับรถที่เป็นของผู้ใช้เอง หรือระบบที่ได้รับอนุญาตจากเจ้าของ
บทความนี้ไม่ขยายวิธี Replay Attack หรือวิธีเข้าถึงรถของผู้อื่นโดยไม่ได้รับอนุญาต
FAQ คำถามที่พบบ่อยเกี่ยวกับ Robotic Car Charger
1. Robot ตัวนี้สร้างมาสำหรับรถรุ่นไหน?
README ระบุ 2021 Tesla Model 3 เป็น Target Vehicle ของ Project
2. ใช้ Raspberry Pi รุ่นไหน?
ใช้ Raspberry Pi 5 RAM 8GB เป็น Main Computer ตาม GitHub README
3. มี ESP32 ด้วยหรือไม่?
มี ESP32-C3 ทำงานร่วมกับ Raspberry Pi ผ่าน Custom Pi HAT
4. Robot ใช้ SLAM หรือไม่?
ไม่ใช้ ผู้สร้างเลือกใช้ Pre-programmed Movement ร่วมกับ LiDAR และ Vision เพราะระยะ Traversal รวมประมาณ 2 เมตร
5. ทำไมต้องใช้ Mecanum Wheels?
README ระบุว่าใช้เพื่อ Strafing Alignment และเพิ่มความยืดหยุ่นในการจัดตำแหน่งภายในโรงรถ
6. กล้องมีความละเอียดเท่าไร?
ผู้สร้างระบุว่าใช้กล้อง 1080p สำหรับ Final Pose Alignment
7. ทำไมใช้ ChARuco แทน AprilTag เดี่ยว?
ผู้สร้างพบว่า AprilTag เดี่ยว ให้ Pose Uncertainty สูงเกินไปสำหรับ Alignment ของโปรเจกต์ และการเปลี่ยนไปใช้ ChARuco ทำให้ Tracking เสถียรกว่า
8. Suction Cups มีไว้ทำอะไร?
ใช้ยึด Robot กับบริเวณรอบ Charge Port เพื่อให้เกิดแรงต้านขณะ Gear Assembly ดันหัวชาร์จเข้าไป
9. รู้ได้อย่างไรว่า Suction Cup ดูดติดแล้ว?
ผู้สร้างใช้ Current Sensor ตรวจ Motor Current ของ Suction System และอาศัยการเปลี่ยนแปลงของ Current เป็นข้อมูลช่วยประเมินการเกิด Vacuum
10. ใช้ Tesla Fleet API โดยตรงหรือไม่?
ผู้สร้างเคยทดลอง แต่ Current GitHub Implementation ใช้ Tessie API
11. Robot เช็กอะไรก่อนเข้าไปชาร์จ?
Code Function ที่ตรวจสอบ ดูว่า Charge State เป็น Disconnected, รถอยู่ใน Charger Geofence และ Shift State เป็น P ขณะที่ README ยังอธิบาย Criteria ระดับ Workflow เพิ่มเติม
12. มี CAD ให้ดาวน์โหลดหรือไม่?
มี Onshape Link สำหรับดู Mechanical CAD ของ Robot แต่ Source ไม่ได้ระบุ Direct STEP/STL Download ใน README
13. มี Gerber หรือ KiCad PCB Files ไหม?
Current Repository มีภาพ PCB Layout แต่ยังไม่พบ Gerber ZIP, KiCad Project หรือ PCB Manufacturing Package ที่ระบุให้ดาวน์โหลด
14. มี BOM หรือ Build Cost ไหม?
Source ที่ตรวจสอบไม่ได้ระบุ BOM Cost หรือ Total Build Cost
15. Robot จัดตำแหน่งแม่นกี่มิลลิเมตร?
Source ไม่ได้ระบุ Accuracy เป็นค่าตัวเลข จึงไม่ควรสร้างตัวเลขความแม่นยำขึ้นเอง
16. Robot ใช้ Battery ได้นานแค่ไหน?
Source ไม่ได้ระบุ Battery Runtime
สรุป: จุดเด่นไม่ได้อยู่แค่ Vision แต่อยู่ที่การแก้ปัญหาแรง
Robotic Car Charger โปรเจกต์นี้ รวมหลายศาสตร์เข้าด้วยกัน ทั้ง Robotics, Computer Vision, Mechanical Design, Vehicle API และ Embedded Electronics
Mecanum Wheels กับ LiDAR ช่วยให้ Robot เข้าใกล้รถ จากนั้น 1080p Camera และ ChARuco รับช่วงต่อเพื่อจัด Pose ก่อนเสียบหัวชาร์จ
แต่ Engineering Detail ที่ทำให้ Project นี้น่าสนใจจริง ๆ คือ Suction Cups เพราะมันแก้ปัญหาพื้นฐานว่า Robot ที่ตั้งใจทำให้เล็กและเบา จะหา Reaction Force จากที่ไหน เมื่อต้องดัน Connector เข้า Charge Port
สำหรับ Maker จุดที่ศึกษาได้ต่อมีตั้งแต่ Vision Tracking, LiDAR, Mecanum Control, ESP32, Raspberry Pi, API Integration ไปจนถึง Mechanical CAD โดย Source Code และ CAD ถูกเปิดให้ศึกษาใน GitHub และ Onshape แล้ว
References / แหล่งข้อมูลต้นฉบับ
กำลังทำ Robotics หรือ Computer Vision Project?
ถ้ากำลังทำ Raspberry Pi, ESP32, Robot, Machine Vision หรือ Sensor Project สามารถสอบถามทีม GlobalByte เรื่อง Development Board, Sensor, Module หรืออุปกรณ์ที่เหมาะกับ Project ได้