บทความ

กำลังแสดงโพสต์จาก พฤษภาคม, 2024

Remote SSH ROS Robot

รูปภาพ
ssh เข้าไปที่ user@ip-address บางทีถ้าเคย ssh user อื่นด้วย ip address เดียวกัน อาจมีการตรวจพบ old ssh key ลบ old ssh key ด้วยคำสั่ง ssh-keygen -f ''home/user/.ssh/known_hosts" -R "ip-address" จากนั้น ssh  user@ip-address แล้วตอบ yes เพื่อสร้าง new ssh key Ubuntu จะทำการเพิ่ม known host เข้าไปใน list และเราจะเข้าไปใน terminal ของ robot ได้ ตรวจสอบ ROS package ที่ติดตั้งไปแล้วได้จากคำสั่ง rospack list-names จากนั้นติดตั้ง package ที่ต้องใช้ด้วยคำสั่ง sudo apt install ros-<distro>-<package-name> เริ่มต้นใช้งาน ROS ด้วยคำสั่ง roscore จะปรากฏชื่อ distro ที่ติดตั้งไว้ New terminal จากนั้นตรวจสอบพอร์ต USB ที่มีการเชื่อมต่อด้วยคำสั่ง ls /dev/tty* เปิดโหมด R/W ที่พอร์ต USB0 ด้วยคำสั่ง sudo chmod 777 /dev/ttyUSB0 จากนั้นรัน RPLIDAR ที่พอร์ต USB0 ด้วยคำสั่ง rosrun rplidar_ros rplidarNode _port:=/dev/ttyUSB0 ตรวจสอบ topic จาก RPLIDAR ด้วยคำสั่ง rostopic list จะพบ topic /scan ลอง echo เพื่อดูค่าที่ได้จาก topic /scan ด้วยคำสั่ง rostopic echo /scan จะพบข้อมูลจำนว...

ปัญหาของการย้าย flows.json ข้าม Node-RED Instance

รูปภาพ
ในการการย้ายให้ Copy ไฟล์ flows.json ในโฟลเดอร์ .node-red แค่ไฟล์เดียวพอ หาก Copy ไฟล์ flows_cred.json ไปด้วย จะเกิด Error ทำให้ Run Node-RED ไม่ได้ แบบนี้ https://stackoverflow.com/questions/48270905/node-red-node-credentials เพราะไฟล์ flows_cred.json ถูกเข้ารหัส ( encrypted)  ไว้ ซึ่ง Node-RED จะ G enerate Random Key ขึ้นมา หากไม่ได้กำหนดไว้ใน credentialSecret ของไฟล์ settings.js ทำให้เวลาย้ายไฟล์  flows_cred.json ไปยัง Instance ใหม่ Node-RED จึงถอดรหัส (decrypted) ไม่ได้ วิธีแก้ไขคือลบไฟล์ flows_cred.json ออกให้เหลือแต่ flows.json จากนั้น Run Node-RED ขึ้นมาจะสามารถ Run ได้แต่จะพบ Warning ตามรูปด้านล่าง เนื่อง Node-RED ไม่พบไฟล์ flow_cred.json จากนั้นทำการแก้ไขไฟล์ settings.js โดย Uncomment  credentialSecret แล้วตั้งรหัสตามที่ต้องการ จากนั้น Restart Node-RED ขึ้นมาใหม่ จะเหลือแค่ Warning Encrypted credentials not found เนื่องจากยังไฟล์ flows_cred.json ยังไม่ถูก Generate ขึ้นมาใหม่ ให้กด Deploy ใน Node-RED อีกครั้ง Node-RED จะ Generate flows_cred.json ขึ้นมาใหม่ จากนั้น...

Python 3.12.3 รองรับ MediaPipe แล้ว

รูปภาพ
ก่อนหน้านี้ถ้าติดตั้ง mediapipe บน Python 3.12.2 จะพบปัญหาว่าไม่สามารถติดตั้งได้ พอไป Search Google ดู จะได้คำตอบว่า Python 3.12 ไม่รองรับการใช้งานร่วมกับ mediapipe ให้ไปใช้ Python 3.7 ถึง 3.10 แทน ทำให้ต้องติดตั้ง Python 3.10.10 เพิ่มเข้าไปเป็น Python สองเวอร์ชันอยู่ในเครื่อง และต้องมา Switch เลือกเวอร์ชันของ Python เพื่อใช้งานอีก https://stackoverflow.com/questions/77256410/no-matching-distribution-found-for-mediapipe แต่ปัจจุบันปัญหานี้ได้หมดไปแล้วด้วยการมาเยือนของ Python 3.12.3 ที่พึ่ง Release เมื่อวันที่ 9 เมษายน 2024 ที่ผ่านมา ทำให้เราสามารถติดตั้ง mediapipe บน Python 3.12 ได้

ทำไมขนาด Drive ใน Windows ถึงมีขนาดเล็กกว่า Drive จริง

รูปภาพ
จริงๆ แล้วมันไม่ได้ขนาดเล็กกว่า มันเป็นที่การแสดงผลของ Windows ต่างหาก เช่น Drive ขนาด 500 GB ถ้าดูใน Properties ค่า Capacity ในหน่วย byte มีค่า 499,427,872,768 bytes ซึ่งอันนี้ถูกต้อง จากนั้นเราก็คาดหวังมาว่ามันจะโชว์ 500 GB ใน This PC ของ Windows แต่มันกลับโชว์ 465 GB ซะงั้น!!! เพราะว่า Windows ไม่ได้เอาค่า byte มาหารด้วย 1,000,000,000 เพื่อคำนวณเป็นหน่วย GB แบบตรงไปตรงมา มันจะเอาค่า byte มาหารด้วย 1,024 จะได้ 500,000,000,000 bytes / 1,024 = 488,281,250 KB ค่า 1,024 นี้คือ 2 ยกกำลัง 10 เพราะคอมพิวเตอร์ทำงานด้วยระบบเลขฐานสอง จากนั้นจะเอา 488,281,250 KB / 1,024 = 476,837 MB แล้วก็เอา 476,837 MB / 1,024 = 465 GB ก็จะได้ค่า Capacity ที่ Windows แสดงผลออกมานั่นเอง

ทดสอบความเร็วในการอ่าน/เขียน SSD ด้วยซอฟต์แวร์ CrystalDiskMark 8 ภาค #2

รูปภาพ
หลังจากได้ WD Blue SN580 M.2 SSD มาใหม่ จึงทำการทดสอบเทียบกัน ผลการทดสอบมีดังต่อไปนี้ 1) WD SATA SSD 2 TB (NTFS) 2) Toshiba M.2 NVMe PCIe 3.0 SSD 512 GB (NTFS) 3) WD SN580 M.2  NVMe PCIe 4.0   SSD 500 GB (NTFS) จะเห็นได้ว่า WD Blue SN580 ซึ่งเป็น PCIe 4.0 มี Speed ทั้ง Read และ Write สูงกว่า Toshiba ซึ่งเป็น PCIe 3.0 อย่างเห็นได้ชัดทั้ง Sequential และ Random R/W อีกจุดสังเกตหนึ่งคือ WD SSD จะมี Speed R/W ที่สมดุลกันทั้ง SSD ที่เป็นแบบ SATA และแบบ NVMe ซึ่งต่างจาก Toshiba SSD ที่มี Writing Speed ต่ำกว่า Reading Speed อยู่หลายเท่า