Showing posts with label Ubuntu. Show all posts
Showing posts with label Ubuntu. Show all posts

Nov 10, 2018

Ubuntu 16.04 และ ROS Kinetic บน MECOOL VS-RK3399



MECOOL VS-RK3399 เป็นบอร์ด rockchip ราคาประหยัดที่หาซื้อได้จาก AliExpress ในราคาต่ำกว่า $100 หรือ 3,000 บาท (ณ ตอนที่ผมซื้อ) ในชุดมีอุปกรณ์ครบตามภาพด้านล่าง ประกอบด้วย เคสอคริลิก อะแดปเตอร์ 12V เสาอากาศ รีโมท ได้ทุกอย่างครบชุดในราคานี้ถือว่าคุ้มมาก


สเปคของบอร์ด MECOOL VS-RK3399 ถือว่าไม่น้อยหน้าแบรนด์อื่นในรุ่นเดียวกัน รายละเอียดตามภาพ ซึ่งเหมาะที่จะมาใช้กับ ROS และงานด้าน machine vision กับ AI


ในส่วนของซอฟต์แวร์สำหรับบอร์ดนี้ก็ถือว่าไม่ลำบากนัก บอร์ดมาพร้อมกับ Android สำหรับ Smart TV สามารถรีวิวได้จาก CNX-Software (Part 1 และ Part 2)

แต่เป้าหมายสำหรับผม คือ การติดตั้ง ROS บนบอร์ดนี้ และพบว่ามันสามารถทำงานได้ดี ผมขอสรุปขั้นตอนดังนี้

การแฟลช Ubuntu 16.04 

1. เราสามารถเข้าไปโหลด Ubuntu 16.04 image จากได้ MEGA ของ Videostrong ตามภาพ


2. จากนั้นผมก็ทำตามขั้นการแฟลช Debian image จาก CNX-Software แต่แค่เปลี่ยนมาเป็น Ubuntu เท่านั้น ก่อนอื่นเราต้องโหลด upgrade_tool ก่อน จากนั้นก็แตกไฟล์ทั้ง upgrade_tool และ Ubuntu image ไปไว้ในโฟล์เดอร์เดียวกัน

3. เปิดใช้งานบอร์ดโดยการเสียบกับอแดปเตอร์ 12V ที่ได้มาในชุด ต่อจอ HDMI รวมทั้งเมาส์และคีย์บอร์ด จากนั้นต่อสาย USB type C to USB 3.0 ที่มากับชุดอยู่แล้วเข้ากับบอร์ด และ PC ของเรา จากนั้นกดปุ่ม recovery ค้างไว้ แล้วตามด้วยปุ่ม reset นับในใจ 1 2 3 แล้วปล่อยทุกปุ่ม บอร์ดก็จะเข้าสู่โหมดการแฟลช

4. ตรวจสอบว่า PC ของเราพบบอร์ดหรือยัง ด้วยคำสั่ง sudo ./upgrade_tool ซึ่งเราจะพบข้อความว่าพบบอร์ดแล้ว จากนั้นแฟลช Ubuntu ด้วยคำสั่ง upgrade_tool uf VS-RK3399-UbuntuOS20180306.img

การใช้งาน Ubuntu 16.04 และแก้ปัญหาเบื้องต้น

หลังจากแฟลชเรียบร้อยบอร์ดก็จะบูทเข้า Ubuntu 16.04 ดังภาพ เมื่อบูทมาเข้ามาก็อย่าตกใจว่าทำไมมีแต่หน้าจอโล่งๆ มันเป็นธีมของเขา น่าจะเป็น Xfce4 desktop ส่วนกล่องข้อความก็แค่แจ้งข้อผิดพลาดเกี่ยวกับ Bluetooth ซึ่งเรายังไม่ได้เปิดใช้งาน


วิธีการกำจัดกล่องข้อความตามภาพดา้นบน คือ 2 คำสั่งนี้
$ sudo chmod 4754 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
$ sudo chown root:messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper

เมนูการใช้งานจะซ่อนอยู่ในปุ่มเมาส์ขวา ลองคลิ๊กดูก็จะพบภาพนี้


ผมเชื่อมต่อ WiFi โดยการเข้าไปที่ Application->Settings->Network Connections ซึ่งมันไม่มี AP list เหมือนอย่างใน Ubuntu ปกติ เราต้อง Add แล้วเลือก WiFi และใส่ข้อมูลเอง ในแทบ WiFi ใส่ SSID เป็นชื่อ AP ของเรา ส่วน Device เลือกเป็น wlan0 ต่อมาแทบ WiFi Security เลือก WPA & WPA2 Personal และใส่ password สุดท้ายกดปุ่ม Save บอร์ดก็จะเข้า WiFi ทันที เมื่อเข้า WiFi ก็อย่าลืม sudo apt update และ sudo apt upgrade เพื่ออัพเดท Ubuntu ล่าสุดด้วย

ตรวจสอบทรัพยากรของเครื่องด้วย htop
$ sudo apt install htop
$ htop

เราจะพบว่าบอร์ดมี CPU จำนวน 6 คอร์ และมี RAM 4 GB ตรงตามสเปค ในรูปด้านล่างนี้ ว้าว!!


default user ของบอร์ดนี้ คือ videostrong โดยที่บอร์ดนี้ได้ตั้งค่า auto login ไว้ ซึ่งไม่ปลอดภัย อันดับแรกสุดเราต้องสร้าง root password ก่อน แล้วตามด้วยสร้าง sudo user ใหม่ขึ้นมาอีกอัน ด้วยคำสั่ง
$ su passwd
$ sudo adduser <username>
$ sudo usermod -aG sudo <username>

โดยที่ <username> คือชื่อที่เรากำหนด ในกรณีของผมคือ ubuntu จากนั้นแก้ไข auto login ดังนี้
$ sudo geany /etc/lightdm/lightdm.conf.d/12-autologin.conf

แล้วใส่เนื้อหาดังนี้
[SeatDefaults]
autologin-user=
#user-session=xfce4-session
allow-guest=false

เราควรแก้ไข /etc/sudoers โดยให้ลบ  NOPASSWD: ออกไปด้วย ถ้าพบข้อความนี้ sudo: /etc/sudoers.d is world writable ให้พิมพ์คำสั่ง
$ pkexec chmod 555 /etc/sudoers.d
$ pkexec chmod 555 /etc/sudoers.d/README

ควรแก้ไขชื่อเครื่องในไฟล์ /etc/hostname และ /etc/hosts ด้วย text editor อย่าง Geany ($sudo apt install geany) จาก videostrong เป็นชื่อที่เราจำได้ง่าย ของผมคือ turtlebot นั่นเอง

ผมพบความผิดปกติอย่างหนึ่งคืออยู่ๆก็ disk full จากการตรวจสอบด้วยคำสั่ง sudo du -sh * เริ่มจาก / พบว่าตัวปัญหา คือ ไฟล์ /var/log/cups/error_log ที่เพิ่มขนาดอย่างไม่ทราบสาเหตุ วิธีแก้คือ
$ sudo systemctl stop cups
$ sudo systemctl stop cups-browsed
$ sudo systemctl disable cups
$ sudo systemctl disable cups-browsed
$ sudo systemctl disable cups.socket cups.path cups.service
$ sudo systemctl stop cups.service
$ sudo rm /var/log/cups/error_log

การแก้ปัญหา panel ไม่ปรากฏ ก่อนอื่นเราต้องเลือกจอภาพให้ถูกก่อนจาก Settings->Display ในกรณีของผมคือจอที่ 2


จากนั้นก็ไปที่ Settings->Panel ตรงแทบ Dispaly ให้เลือก Output ให้ตรงกับจอภาพของเรา ของผมคือ Monitor 2


ในที่สุด Panel ก็จะแสดงขึ้นมาที่ด้านบนของ Desktop ทำให้ใช้งานสะดวกขึ้น ตามภาพ


การติดตั้ง ROS

การติดตั้ง ROS Kinetic บนบอร์ดนี้ก็ไม่ต่างกับติดตั้ง ROS บน Ubuntu ทั่วไป ผมขอสรุปคำสั่งดังนี้

$ sudo c_rehash /etc/ssl/certs
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

สุดท้ายก็รันคำสั่ง roscore จะพบภาพด้านล่างนี้ มันแสดงให้เห็นว่าบอร์ดนี้ก็สามารถติดตั้ง ROS ได้ ส่วนการทดสอบขั้นต่อไปก็ คือ การนำไปงานใช้กับหุ่นยนต์จริง อย่างเช่น TurtleBot เป็นต้น


Sep 18, 2017

Ubuntu 16.04 LTS บน Orange Pi Win Plus

แม้ว่า Raspberry Pi จะเป็นที่นิยม แต่อย่างไรก็ตามมันมี RAM แค่ 1 GB เท่านั้น ผมได้พบกับ Orange Pi Win Plus ที่มาพร้อมกับ RAM ขนาด 2 GB ที่คิดว่าจะใช้ ROS ได้อย่างลื่นสบาย

ผมได้ทำตามการติดตั้งโดยเลือกใช้ image แบบ Ubuntu Desktop Xenial ซึ่ง flash ลงบน SD card ด้วยโปรแกรม Win32 Disk Imager แบบปกติ

เมื่อใส่ SD card ที่ flash แล้วลงในบอร์ด แล้วต่อเมาส์ คีย์บอร์ด และ จอ ผ่าน HDMI-to-VGA จากนั้นก็ boot พบว่า จอไม่รองรับเนื่องจาก resolution ที่ตั้งไว้สูงเกินไป

ผมได้พบวิธีแก้จากบอร์ดนี้ คือให้ดาวน์โหลด DTB ที่ตั้งค่า resoltion 720p จากนั้นถอด SD card ไปใส่ที่เครื่อง PC ที่ใช้งานปกติก่อน นั้นแตกไฟล์ DTB ที่โหลดมาไปแทนที่ BOOT/orangepi/OrangePi-A64.dtb ใน SD card ซึ่งก็สามารถแก้ปัญหาได้

สุดท้ายขยาย SD card ให้ใช้พื้นที่เต็มที่ด้วยคำสั่ง resize_rootfs.sh

Jul 25, 2017

เปิดการใช้งาน I2C บน Raspberry Pi 3 ที่ติดตั้ง Ubuntu MATE 16.04

จากข้อมูล raspberrypi.stackexchange.com, github.com/RPi-Distro/RTIMULib และ kingtidesailing.blogspot.com การเปิดงานใช้งาน I2C เพื่อเชื่อมต่อ Raspberry Pi 3 กับโมดูลต่างๆ มีขั้นตอนดังนี้

1. เปิดการใช้งาน I2C โดยใช้คำสั่ง

sudo raspi-config

จากนั้นเลือก Advance Interface แล้วเลือก I2C จากนั้นทำตามคำสั่งที่โปรแกรมกำหนด

2. เปิดไฟล์ /etc/modules จะพบ

i2c-dev

ถ้าไม่พบให้เพิ่มเข้าไป

3. เปิดไฟล์ /etc/modprobe.d/raspi-blacklist.conf จะไม่พบข้อความเกี่ยวกับ i2c ในนั้น ถ้าพบให้ใส่คอมเมนต์ เช่น

# blacklist i2c-bcm2708

4. สังเกตุว่า /dev/i2c-1 จะเป็นโหมด 666 เพื่อใช้ user ธรรมดาไม่ใช่ root ใช้งานได้ (ไม่ต้องพิมพ์คำสั่ง sudo) แต่ถ้าไม่ใช่ให้เพิ่มไฟล์ /etc/udev/rules.d/90-i2c.rules โดยเพิ่ม

KERNEL=="i2c-[0-7]",MODE="0666"

5. แก้ไข  /boot/config.txt เพื่อให้ i2c ทำงานที่ความถี่สูงสุด 400 kHz โดยเพิ่มข้อความนี้

dtparam=i2c1_baudrate=400000

6. รีบู๊ต

7. ติดตั้ง I2C tool

sudo apt-get install i2c-tools

8. เชื่อมต่อ Raspberry Pi 3 กับโมดูล I2C โดยใช้ Pin 3 (SDA) และ Pin 5 (SCL) แล้วใช้คำสั่งเพื่อดู adress ของอุปกรณ์นั้น

i2cdetect -y 1

หากพบ address ของอุปกรณ์ ก็แสดงว่า I2C ก็พร้อมใช้งานแล้ว

Jul 21, 2017

การติดตั้ง VNC ใน Ubuntu MATE 16.04 บน Raspberry Pi 3

บทความนี้เราจะติดตั้ง TightVNC  เพื่อทำระบบ remote control แบบไร้สายผ่าน WiFi สำหรับ Raspberry Pi 3 ที่ติดตั้ง Ubuntu Mate 16.04 โดยมีขั้นตอนดังนี้


1. ติดตั้ง TightVNC

sudo apt-get update
sudo apt-get install tightvncserver

2. ตั้งค่า lightdm

sudo pluma /etc/lightdm/lightdm.conf


จากนั้นใส่เนื้อหาดังนี้ แล้ว save

[VNCServer]
enabled=true
port=5900
width=800
height=600
depth=16
3. จากนั้นรีสตาร์ท lightdm

sudo /etc/init.d/lightdm restart


4. ตั้งค่า WiFi เพื่อให้เชื่อมต่ออินเทอร์เนตก่อนจะ login โดยการเข้าไปที่ Edit connection เลือก Edit ชื่อ WiFi hot spot ที่เชื่อมต่อ ในแทบ General เลือก All users may allow to connect 

ที่มา
http://panjitalk.com/connecting-ubuntu-mate-in-raspberry-pi-using-tightvnc/