วิธีแก้ The following signatures were invalid: BADSIG บน Ubuntu

เจอ error ตอนสั่งอัพเดท Ubuntu ตามนี้

W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.ros.org precise Release: The following signatures were invalid: BADSIG 5523BAEEB01FA116 ROS Builder <[email protected]>

W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://extras.ubuntu.com precise Release: The following signatures were invalid: BADSIG 16126D3A3E5C1192 Ubuntu Extras Archive Automatic Signing Key <[email protected]>

W: GPG error: http://ppa.launchpad.net precise Release: The following signatures were invalid: BADSIG 8CD60EC948894010 Launchpad PPA for Scopes Packagers
W: GPG error: http://deb.opera.com stable Release: The following signatures were invalid: BADSIG AAFF4A5B336064B5 Opera Software Archive Automatic Signing Key 2012 <[email protected]>
W: Failed to fetch http://packages.ros.org/ros/ubuntu/dists/precise/Release

W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/precise/Release

W: Some index files failed to download. They have been ignored, or old ones used instead.

 

วิธีแก้ (น่าจะใช้กับ Ubuntu เวอร์ชั่นไหนก็ได้)

$ sudo apt-get clean
$ cd /var/lib/apt
$ sudo mv lists lists.old
$ sudo mkdir -p lists/partial
$ sudo apt-get clean
$ sudo apt-get update

และแล้ว error ก็หายไป เย้~

ขอขอบคุณ บล็อกของ Luigi R. Viggiano ไว้ ณ ที่นี้ครับ 🙂

ปัญหา rospack หาไฟล์ librospack.so ไม่เจอ

ขอมาจดไว้สักหน่อย เผื่อมีคนที่เริ่มต้นลอง ROS แล้วติดปัญหาเดียวกัน

พอดีผมลองสั่งคำสั่งนี้เล่น

$ rospack

แต่ดันเจอ Error แบบนี้

rospack: error while loading shared libraries: librospack.so: cannot
open shared object file: No such file or directory

เป็นแค่คำสั่งเดียวด้วยนะ 🙂 เอาล่ะ.. ถ้าเราลง ROS ตาม Ubuntu install of Fuerte (เวอร์ชั่นอะไรก็ได้นะ ไม่จำเป็นต้องเป็น Fuerte) แล้วเกิดปัญหาเดียวกันนี้ ให้ลองดูที่ไฟล์ ~/.bashrc ก่อนครับ ของผมจะมีหน้าตาแบบนี้

source /opt/ros/fuerte/setup.bash
export ROS_PACKAGE_PATH=~/Projects/ros_workspace:/opt/ros/fuerte/share:/opt/ros/fuerte/stacks
export ROS_WORKSPACE=~/Projects/ros_workspace
export LD_LIBRARY_PATH=/usr/local/lib

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

export LD_LIBRARY_PATH=/usr/local/lib

ซึ่งมีผลทำให้บรรทัดแรก

source /opt/ros/fuerte/setup.bash

ไร้ค่าไปทันที เนื่องจากคำสั่งนี้จะเป็นการเซต LD_LIBRARY_PATH ของ ROS แต่ดันโดน overwrite โดย OpenCV ไปเรียบร้อย

วิธีแก้ก็ง่ายมากครับแค่ย้ายๆ สลับบรรทัดกันดังนี้ เอา LD_LIBRARY_PATH ขึ้นไปไว้บรรทัดแรกแทนจะได้ไม่ต้องมีปัญหากับคำสั่ง source อีก

export LD_LIBRARY_PATH=/usr/local/lib
source /opt/ros/fuerte/setup.bash
export ROS_PACKAGE_PATH=~/Projects/ros_workspace:/opt/ros/fuerte/share:/opt/ros/fuerte/stacks
export ROS_WORKSPACE=~/Projects/ros_workspace

เป็นอันเสร็จสิ้น สามารถใช้ rospack ได้ตามปกติ

แก้ปัญหา git push แล้วต้องใส่ username/password ทุกครั้ง

เนื่องจากคนที่ใช้ GitHub น่าจะใช้ SSH key passphrase กันอยู่แล้ว เพื่อความปลอดภัยมากขึ้นอีกขั้นหนึ่ง และอีกอย่างคือเวลาที่เรา push เราจะได้ไม่ต้องใส่ username กับ password ทุกครั้ง เราใส่ passphrase แทน

มีบางครั้งที่เราเผลอ clone ผิด URL ดังรูปข้างล่าง (คลิกที่รูปเพื่อดูรูปใหญ่) ทำให้เราต้องใส่ username กับ password ทุกครั้งเวลาที่เราสั่ง git push ซึ่งจริงๆ แล้วเราควรจะใส่ passphrase แทนเพื่อความปลอดภัย (ปลอดภัยมากกว่าใส่ username กับ password เฉยๆ)

ตัว URL ที่ว่านี้คือ https://github.com/zkan/miscmarks.git (ตามรูปข้างบนนะครับ) ซึ่งเวลาเรา push ทำให้เราต้องใส่ username กับ password ทุกครั้ง วิธีแก้ง่ายมากแค่จากที่เราเลือก HTTP (ตามวงกลมสีแดงในรูปข้างบน) ให้เราเลือก SSH แทน (ตามวงกลมสีแดงในรูปข้างล่าง)

จะเห็นว่า URL เปลี่ยนไปแล้ว เราจะ clone ใหม่อีกก็ได้โดยใช้ URL นี้ หรือสั่งคำสั่งที่สะดวกกว่านั้น ซึ่งเป็นคำสั่งเปลี่ยน URL ที่เรา remote ไปใหม่ตามนี้

git remote set-url origin [email protected]:zkan/miscmarks.git

เสร็จแล้วลอง push ใหม่ดู คราวนี้จะให้เราใส่ passphrase อย่างที่ควรจะเป็นแล้ว

เขียน PCA บน MATLAB

บล็อกนี้จะมานำเสนอการทำ Principal Components Analysis (PCA) บน MATLAB กันเองนะครับ ผมไม่อธิบายนะครับว่า PCA คืออะไร ใครอยากรู้มากขึ้นเกี่ยวกับ PCA แนะนำให้ไปอ่านที่วิกิ หรือที่บล็อกของ อ.ปืน นะครับ เราลองมาดูกันว่าเราสามารถเขียน PCA ได้เองอย่างไรบน MATLAB

Continue reading "เขียน PCA บน MATLAB"

ตัวอย่างการใช้ OpenCV เพื่อหา Homography

ผมไม่ขอกล่าวถึงว่า Homography คืออะไรนะครับ จะกล่าวถึงแค่ตัวอย่างการคำนวณหา Homography โดยใช้ OpenCV ในบล็อกนี้ ซึ่งค่อนข้างง่ายครับ เพราะ OpenCV นั้นมีฟังก์ชั่น cvFindHomography อยู่แล้ว งานของเราก็แค่ใส่ข้อมูลตามที่ฟังก์ชั่นนี้ต้องการ ซึ่งอย่างน้อยเราต้องให้ตัวแปรตามข้างล่างนี้กับฟังก์ชั่น

  1. จุดบนระนาบต้นฉบับ (srcPoints) อย่างน้อย 2 จุดขึ้นไป จำนวนจุดนี้ขึ้นอยู่กับแต่ละงานนะครับ
  2. จุดบนระนาบปลายทาง (destPoints) ซึ่งจำนวนจุดก็เท่ากับที่กำหนดไว้บนระนาบเริ่มต้น
  3. Homography เมทริกซ์ ขนาด 3x3 (เริ่มแรกก็คือเมทริกซ์ว่างๆ นั่นแหละ)

จริงๆ เราสามารถใส่ option เพิ่มได้ ไว้ไปลองกันเองนะครับ 🙂

Continue reading "ตัวอย่างการใช้ OpenCV เพื่อหา Homography"