หลังจากได้ HIKSEMI รุ่น MD202 ซึ่งเป็น Enclosure ของ M.2 NVMe SSD มา จึงทำการทดสอบโดยใส่ Toshiba M.2 NVMe PCIe 3.0 SSD 512 GB ไว้ข้างใน ทำให้การ Interface ระหว่าง SSD กับคอมพิวเตอร์เป็น USB (NVM Express)
วันพุธที่ 3 กรกฎาคม พ.ศ. 2567
วันศุกร์ที่ 21 มิถุนายน พ.ศ. 2567
Flash Nvidia Jetson Nano Module ด้วย SDK Manager
ติดตั้ง VMWare ก่อนแล้วติดตั้ง OS Ubuntu 18.04 LTS ลงบน VMWare จากนั้น Run Ubuntu แล้วเปิด Web Browser พิมพ์ค้นหา SDK Manager แล้วคลิก Link ของ Nvidia Developer
เลื่อนลงมาด้านล่างไปที่ Visit SDK Manager Downloads Archive for older versions
เลือก Download SDK Manager เวอร์ชัน 1.9.3
เลือก Save File แล้วคลิก OK
จะได้ไฟล์ sdkmanager_1.9.3-amd64.deb มา
ดับเบิ้ลคลิกที่ไฟล์เพื่อติดตั้ง SDK Manager
หลังจากติดตั้งสำเร็จ เปิด Terminal แล้วพิมพ์คำสั่ง sdkmanager เพื่อเปิดซอฟต์แวร์ขึ้นมา
ทำการ Login ด้วย Nvidia Developer Account (จะต้องทำสมัคร Account ก่อน)
หากมีหน้าต่าง New version is available ขึ้นมา ให้เลือก Later
เสียบสาย USB ระหว่าง Nvidia Jetson Nano ในโหมด Factory Recovery กับคอมพิวเตอร์ SDK Manager จะสามารถ Detect Jetson Nano modules ได้
คลิกเครื่องหมากถูกที่ Host Machine ออก เพราะเราต้องการ Download เฉพาะซอฟต์แวร์ที่จะใช้กับ Nvidia Jetson Nano โดยเลือก Target Operating System เป็น Linux JetPack 4.6.4
คลิกเครื่องหมายถูกที่ Jetson SDK Components ออก เพื่อติดตั้งเฉพาะ OS เท่านั้น
คลิก Accept license agreement จากนั้นคลิก Continue เพื่อเริ่ม Download และติดตั้ง โดยให้กรอก Password ของ OS Ubuntu ที่ใช้อยู่
SDK Manager จะทำการ Download และ Create OS image รอจนครบ 100%
จากนั้นจะเข้าสู่กระบวนการ Flash OS หากเชื่อมต่อ Nvidia Jetson Nano ที่อยู่ในโหมด Factory Recovery ให้เลือกข้อ 1 เป็น Manual Setup แต่ถ้าเชื่อมต่อแบบปกติให้เลือกเป็น Automatic Setup จากนั้นกรอก Username และ Password ของ Nvidia Jetson Nano ที่ต้องการใช้งาน แล้วคลิก Flash
วันพุธที่ 5 มิถุนายน พ.ศ. 2567
- เริ่มต้นสร้าง Workspace ด้วยคำสั่ง
mkdir catkin_ws
- เข้าไปใน catkin_ws จากนั้นสร้างโฟลเดอร์ src ด้วยคำสั่ง
mkdir src
- สร้าง Environment สำหรับ Complie ด้วยคำสั่ง
catkin_make
- ใช้คำสั่ง ls จะพบโฟล์เดอร์ build, devel และ src ทำให้ Ubuntu รู้จัก setup.bash ใน devel ด้วยคำสั่ง
- Run ไฟล์ .bashrc ด้วยคำสั่ง
- เข้าไปใน catkin_ws/src แล้ว clone repository ที่ชื่อว่า bogie มาด้วยคำสั่ง
git clone https://github.com/midnightpen/bogie.git
- ออกไปยัง catkin_ws แล้ว Complie ด้วยคำสั่ง
catkin_make
- หากพบ error ให้ติดตั้ง Library ที่ขาดเข้าไปด้วยคำสั่ง
sudo apt-get install ros-melodic-dwa-local-planner
sudo apt-get install ros-move-base
sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-bfl
sudo apt-get install ros-melodic-serial
sudo apt-get install libavcodec-dev
sudo apt-get install libswscale-dev
sudo apt-get install libv4l-dev
- หากพบ error เกี่ยวกับ opencv ให้ไปแก้ไขไฟล์โดยเปลี่ยน opencv เป็น opencv4 ด้วยคำสั่ง
- หากพบ error อีกให้ติดตั้ง Library ที่ขาดเข้าไปด้วยคำสั่ง
- ออกไปยัง catkin_ws แล้ว Complie อีกครั้งด้วยคำสั่ง
catkin_make
- เข้าไปใน catkin_ws/src แล้ว clone repository ที่ชื่อว่า teleop_twist_joy มาด้วยคำสั่ง
- ออกไปยัง catkin_ws แล้ว Complie อีกครั้งด้วยคำสั่ง
catkin_make
- ssh เข้าไปใน bogie และ run rplidar ด้วยคำสั่ง
roscore
roslaunch rplidar rplidarNode
rostopic list
rostopic echo /scan
- exit ออกจาก bogie จากนั้นเข้าไปแก้ไขไฟล์ .bashrc ด้วยคำสั่ง
- ทำให้ ROS MASTER กับ ROS SLAVE เชื่อมต่อถึงกันโดยพิมพ์คำสั่งต่อท้ายในไฟล์ .bashrc ทั้งฝั่ง MASTER และ SALVE ดังนี้
export ROS_MASTER_URI=http://bogie-ip-address:11311
export ROS_IP=device-ip-address
- Run ไฟล์ .bashrc ด้วยคำสั่ง
- ssh เข้าไปใน bogie และ run bogie_bringup ด้วยคำสั่ง
roslaunch bogie_bringup bringup.launch
- exit ออกจาก bogie และ run rviz ด้วยคำสั่ง
rosrun rviz rviz
- ไปที่ปุ่ม Add > By Topic > LaserScan
- เปลี่ยน Fixed Frame เป็น base_link
- เปิด Terminal ใหม่และโชว์ rqt ด้วยคำสั่ง
rqt
- ไปที่เมนู Plugins > Topics > Topic Monitor
- คลิก /scan เพื่อดูแต่ละ item ใน /scan ได้
- ไปที่เมนู Plugins > Introspection > Node Graph
- ควบคุม bogie ผ่าน keyboard ด้วยคำสั่ง
rostopic echo /cmd_vel
- เปิด Terminal ใหม่และ run teleop-twist-keyboard ด้วยคำสั่ง
sudo apt-get install ros-melodic-teleop-twist-keyboard
rosrun teleop-twist-keyboard teleop-twist-keyboard.py
- ทดสอบกด Keyboard ปุม u i o j k l m , .
- ควบคุม bogie ผ่าน Joy Stick ด้วยคำสั่ง
sudo apt-get install ros-melodic-teleop-twist-joy
roslaunch teleop-twist-joy teleop.launch
- ssh เข้าไปใน bogie และทำแผนที่ด้วยคำสั่ง
ssh bogie@ip-address
roslaunch bogie_bringup bringup.launch
roslaunch bogie_navigation mapping.launch
roslaunch bogie_navigation navigation.launch
- exit ออกจาก bogie และ run rviz ด้วยคำสั่ง
rosrun rviz rviz
- ไปที่เมนู File > Open Config > opt > ros > melodic > share > hector_slam > rviz_config
- ไปที่ปุ่ม Add > By Topic > /map
- บันทึกแผนที่
- ssh เข้าไปใน jetson และทำแผนที่ map-sr ด้วยคำสั่ง
ssh jetson@ip-address
roscore
rosrun rplidar_ros rplidarNode
rosrun mytf tf_tx
rosrun odometry odom
rosrun hector_mapping hector_mapping
rosrun rviz rviz
วันพฤหัสบดีที่ 23 พฤษภาคม พ.ศ. 2567
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 จะพบข้อมูลจำนวนมาก
New terminal จากนั้น ssh แบบแสดงผล UI ด้วยคำสั่ง ssh -X user@ip-address
รัน rviz ด้วยคำสั่ง rosrun rviz rviz
เพิ่ม topic LaserScan เข้ามาใน rviz
เปลี่ยน Fixed Frame เป็น laser_frame จะปรากฏภาพสแกนจาก RPLIDAR
เปลี่ยนขนาดของจุดแสดงผลจากการสแกนให้ใหญ่ขึ้น เพื่อให้ภาพแสกนชัดเจนยิ่งขึ้น
เปิดโหมด R/W ที่พอร์ต USB1 ด้วยคำสั่ง sudo chmod 777 /dev/ttyUSB1
จากนั้นรัน rosserial_arduino ที่พอร์ต USB1 ด้วยคำสั่ง
rosrun rosserial_arduino serial_node.py _port:=/dev/ttyUSB1
รัน teleop ด้วยคำสั่ง rosrun teleop_twist_keyboard teleop_twist_keyboard.py
ควบคุมหุ่นยนต์ด้วยปุ่มต่างๆ บนคีบอร์ดได้เลย
คลิปตัวอย่างการใช้ teleop + RPLIDAR + rviz
วันพุธที่ 8 พฤษภาคม พ.ศ. 2567
ปัญหาของการย้าย flows.json ข้าม Node-RED Instance
ในการการย้ายให้ Copy ไฟล์ flows.json ในโฟลเดอร์ .node-red แค่ไฟล์เดียวพอ หาก Copy ไฟล์ flows_cred.json ไปด้วย จะเกิด Error ทำให้ Run Node-RED ไม่ได้ แบบนี้
เพราะไฟล์ flows_cred.json ถูกเข้ารหัส (encrypted) ไว้ ซึ่ง Node-RED จะ Generate 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 ขึ้นมาใหม่ จากนั้นลอง Restart Node-RED ขึ้นมาอีกครั้ง Warning Encrypted credentials not found ก็จะหายไป ใช้งานได้ปกติแล้ว
ต่อไปหากต้องการย้าย flows.json และ flows_cred.json อีก ก็แค่แก้ไข credentialSecret ในไฟล์ settings.js ให้มีค่าเดียวกัน เท่านี้ก็สามารถย้าย Flow ข้าม Instance ได้อย่างรวดเร็วและง่ายดายแล้ว
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 เพื่อใช้งานอีก
สมัครสมาชิก:
บทความ (Atom)