พี่มาย https://1drv.ms/p/c/708e3b87a18febac/EbBq132XZ-BAnQbk6cXqW-MB3LtIgoeKMG_hZdJDQbLT3A
พี่เฟิร์ส เอกสารการอบรม - Google ไดรฟ์
บันทึกอบรมเช้า https://drive.google.com/file/d/1FBPmqnyX2uSNJiiTC0BQdaLZYQTKUQvi/view?usp=drive_link
บันทึกอบรมบ่าย อบรม Online RMRC 2025 วันที่ 31 ม.ค. - 1 ก.พ. - 2025/01/31 08:12 GMT+07:00 - Recording 2 - Google ไดรฟ์
สไลด์พี่เฟิร์ส file:///C:/Users/chaya/OneDrive/Documents/RMRC_BasicRobotSystem.pdf
High Level การประมวลที่ต้องใช้ประสิทธิภาพและการคำนวณสูง ซึ่งถ้าทำในอุปกรณ์ Low Level ซึ่งถ้าทำงานในอุปกรณ์ Low level จะทำงานได้ค่อนข้างยาก
Low Level ควบคุมฮาร์ดแวร์
nano ใช้กันบ่อย ใช้ในการเข้าไปแก้ไขไฟล์ nano config.txt
vim ใช้ได้ แต่ในหลายๆครั้งใช้ยากกว่า vim config.txt
cat เอาข้อมูลในไฟล์มาโชว์ cat config.txt
rm ลบไฟล์ ล้างไฟล์ rm config.txt
clear ลบข้อมูลที่อยู่ในหน้าต่างนั้นๆ หรือจะกด Ctrl + L ก็ได้
ctrl * Alt * T เปืด Terminal
ifconfig ค้นหา IP
cd .. change directory ไป directory ก่อนหน้า
ros install 20.04
นั่งอ่านดีๆว่าลงอะไรก่อนหลัง บางอันเขาให้ลงแค่อันเดียว
Create the root workspace directory
cd~/ เป็นการมูฟ change directory
mkdir -p rmrc2025_ws/src
cd rmrc2025_ws
Build the workspace
catkin_make catkin เป็นเฟรมเวิร์ค เป็นซอฟแวร์ตัวนึง ส่วน make เป็นการ make ไฟล์ให้เป็นภาษาคอมพิวเตอร์ เหมือนเวลาที่จะอัปโหลดโค้ดลง Arduino ระหว่างที่อัปโหลดก็จะมีการ make ไฟล์เกิดขึ้น
Make the workspace visible to ROS
ตอนนี้ ROS จะยังไม่เห็นโฟลเดอร์ ซึ่งเราต้องทำการบอกมันก่อน เราต้องทำไฟล์ config เพื่อบอกมันว่า"ฉันสร้าง workspace อันนี้มาใหม่นะ อิอิ เวลาฉันจะเรียกใช้ ROS นายช่วยมาเช็คโฟลเดอร์นี้ให้หน่อยว่ามีแพ็คเกจอเะไรที่ฉัน Run ได้บ้าง"
โดยไฟล์ที่ใช้ในการ setup ตัวนั้นอยู่ในโฟลเดอร์ที่ชื่อว่า devel
cd devel/
ls
source setup.bash source คือการบอกให้คุณน่ะช่วย setup workspace ให้หน่อย
cd ..
Ros ข้อดีที่สุดคือความสามารถในการสื่อสารด้วยระบบวง LAN
Edit .bashrc file
nano .bashrc ไฟลฺ bashrc คือไฟล์ที่ทุกครั้งที่เราเปิด Terminal ขึ้นมา ไฟล์แรกที่จะทำงานเลยคือไฟล์นี้ จึงมักจะถูกนำไปใช้ในการ Setup ระบบทุกๆอย่าง
มีค่าคล้ายกับ start up ใน windows
Add source setup.bashrc
source~/catkin_ws/devel/setup.bash
Add ROS_MASTER_URI and ROS_HOSTNAME
Export ROS_MASTER_URI=http://{station computer IP}:11311
Export ROS_HOSTNAME={embedded computer IP}
For localhost (recommend when development)
Export ROS_MASTER_URI=http://localhost:11311
Export ROS_HOSTNAME=localhost
Understanding ROS Nodes
Nodes คือโค้ดอันนึงที่ Run อยู่ ยกตัวอย่างได้ว่า เรากำลังทำ Node A ทำเรื่อง detection และมีเพื่อนทำ Node B ทำเรื่องมอเตอร์
เราจะทำให้ทั้งสอง Nodes ทำงานไปด้วยกันบนคอมพิวเตอร์คนละเครื่อง
roscore is the first thing you should run when using ROS
**จะไม่สามารถ roscore ได้เลยถ้าไม่คั้งค่า Host เอาไว้ หรือค่า Host ไม่ถูกต้อง
nano .bashrc เข้ามาแก้ไข Host ให้ถูกต้อง
source .bashrc source อีกครั้งเพื่ออัปเดตสิ่งที่เราได้เขียนเพิ่มเข้าไป
roscore
Using rosnode displays information about the ROS nodes that are currently running.
rosnode list ลิสต์ว่ามี Node อะไรบ้างที่ทำงานอยู่ในระบบของเรา **มี Node อะไร Run อยู๋บ้าง , ชื่อมันคืออะไร
rosnode -h ดูว่า rosnode มีคำสั่งอะไรบ้าง และแต่ละอันทำหน้าที่อย่างไร
rosnode info /rosout ดูว่ารับข้อมูลอะไรบ้าง ส่งข้อมูลอะไรออกมาบ้าง
rosnode ping /rosout ดูว่าอยู่ที่ IP อะไร ใช้เวลาในการ Ping นานแค่ไหน
Using rosrun use the package name to directly run a node within a package Format:
rosrun [package_name] [node_name]
Run turtlesim_node in new terminal:
rosrun turtlesim turtlesim_node
Using rosnode ping [node_name], testing that it’s up
rosnode ping /turtlesim
rqt_graph visualize currently ROS structure
rqt_graph
Run turtle_teleop_key, then refresh rqt_graph
rosrun turtlesim turtle_telelop_key
topic คือข้อความที่ทั้ง 2 Nodes ใช้คุยกัน
Understanding ROS Topic ros msg
*IMU คือเซนเซอร์ที่เกี่ยวกับความเร่ง ความเร็วเชิงมุม
** https://github.com/ros/common_msgs
rostopic echo
Format:
rostopic ehco [topic]
Show velocity command, this data published from /teleop_turtle to /turtlesim
rostopic ehco /turtle1/cmd_vel
rostopic list, get names of all topic in ROS
rostopic list
rostopic type, get message type of topic
rostopic type /turtle/cmd_vel
rosmsg show, get message structure
rosmsg show geometry_msgs/Twist ใช้เมื่ออยากรู้ว่าข้อมูลด้านในมีอะไรบ้าง
Create ROS package
cd ~/
cd catkin_ws/src หรือในกรณีนี้ cd rmrc2025_ws/src/
ls
cd ..
cd src/
ls
catkin_create_pkg **catkin คือ เฟรมเวิร์คจัดการไฟล์ของ ROS
Format:
catkin_create_pkg [package_name] [depend1] [depend2] [depend3] **depend คือ การ Include library อื่น pkg type อื่นๆ
Create rmrc_package
catkin_create_pkg rmrc_pkg rospy roscpp std_msgs geometry_msgs *do not forget to catkin_make for compling new package
ls
cd ..
ls
catkin_make
source .bashrc
rospack find, get directory path of paackage
Format:
rospack find [package_name]
Find rmrc_pkg
rospack find rmrc_pkg เช็คว่า ROS อยู๋ใน pkg ของเราหรือยัง **ต้องรู็ก่อนว่าเรายังไม่ได้อยู่ใน devel นี่คือ terminal ที่ถูกเปิดขึ้นมาใหม่ เราจึงต้อง source devel ใหม่ ซึ่งถ้าเราต้องทำแบบนี้ตลอดเวลามันจะทำให้การทำงานแต่ละครั้งใช้เวลามาก เราเลยจะฝาก source devel ไปให้ .bashrc run ให้
vim .bashrc
source /home/first/rmrc2025_ws/devel/setup.bash
rospack find rmrc_pkg พอเรากด enter มันก็เจอที่อยู่ของไฟล์
Create ROS Node
Run turtlebot3_gazebo
Installation:
sudo apt install ros-noetic-turtlebot3 sudo apt คือไปโหลดมาจาก apt
sudo apt install ros-noetic-turtlebot3-gazebo
nano .bashrc
export TURTLEBOT3_MODEL=burger TurtleBot เวลาเราจะรันเราต้องรู้ว่าจะรันตัวไหน ซึ่งจะมีประมาณ 3 โมเดล ครั้งนี้เราใช้ burger
Add TURTLEBOTMODEL in .bashrc file
TURTLEBOTMODEL=burger model มันคือ configuration ขนาดหุ่นขนาดล้อจะไม่เท่ากัน
Run Simulation:
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch **rosluanch คล้ายกับ rosrun โดย rosrun จะ run ได้แค่ครั้งละหนึ่งไฟล์เท่านั้น แต่ roslaunch จะสามารถ run ไฟล์ได้ครั้งละหลาย ๆ Node ในเวลาพร้อมๆกัน เวลาใกล้ๆกัน rosluanch ครั้งเดียวจบ