ROS รู้คำสั่งเบื้องต้นแล้วดียังไง ??

James Kirati
iCreativeSystems
Published in
2 min readJul 8, 2018
Ref: http://www.ros.org/

สวัสดีครับทุกคน บทความนี้จะเป็นในส่วนของการใช้งานคำสั่ง ROS แบบพื้นฐานมากๆ ถ้าเราเข้าใจคำสั่งพวกนี้เเล้วจะทำให้ชีวิตของเรานั้นง่ายขึ้นเป็นกองเลย (จริงเหรอ 5555) เนื่องจากเวลาเรารันโปรแกรมแล้วบางครั้งเราคิดว่า ข้อมูลมันน่าจะถูกส่งไปแล้วเเต่ทำไมยังไม่มา เราก็สามารถใช้คำสั่งพื้นฐานพวกนี้ในการเช็คได้ว่า มีการส่งข้อมูลหรือการติดต่อข้อมูลกันจริงหรือไม่ แต่ถ้าใครยังไม่ได้ติดตั้ง ROS แนะนำให้ไปอ่านวิธีการติดตั้งก่อนนะครับ แปะลิงก์ไว้ด้านล่างแล้วครับ ^^ เอ้าลุยกันเลยยย

คำสั่งพื้นฐานที่ได้จากบทความนี้ !!!

  • roscore
  • rosnode list
  • rosnode info /nodename
  • rostopic list
  • rostopic info /topic

roscore

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

วิธีการรันก็ง่ายๆครับ ctrl+alt+t เปิด Terminal ขึ้นมาใหม่ ถ้าไม่มีอะไรผิดพลาดจะได้ตามนี้เลยครับ ผ่ามมม!!

node

ในแต่ละ node จะมีหลายๆ topic ทำงานอยู่ ซึ่งเวลา node มันติดต่อกันเนี่ยมันก็ใช้ topic นี่แหละในการติดต่อกับ node อีกตัวนึง ถ้ายังนึกภาพไม่ออก ลองจินตนาการนึกภาพว่า node ก็คือหนึ่งโปรแกรม ซึ่งมีการเรียกใช้ topic ก็คือ ฟังก์ชั่นที่รับค่าหรือส่งค่าไปให้กับอีก โปรแกรมนึง หรือถ้ายังนึกไม่ออกอีก

เอามาเป็นภาพเลยละกัน(ด้านล่างครับ) วงลีที่เราเห็นก็คือ node นั้นเอง จะเห็นได้ว่ามีลูกศรชี้ออกมาเเล้วเข้าไปอีกวงลีนึง ซึ่งก็คือ topic ยังไงล่ะ ที่ทำการส่งค่าอะไรบางอย่างจากนั้นเมื่อได้รับเเล้ว ก็อาจจะส่งค่าอะไรบางอย่างกลับมา ที่ node ผ่าน topic
(ในตรงนี้อยู่ที่เราเลยนะครับว่าจะเขียนให้มันส่งอะไรกลับมาหรือไม่ส่งมาก็ได้ครับ 55555)

Ref : https://nootrix.com/diy-tutos/ros-namespaces/

“ เเล้วถ้าเกิดไม่มีรูปภาพอย่างนี้เราสามารถพิมพ์คำสั่งเพื่อดูการติดต่อของ node ได้ยังไงบ้าง ???? “

“ คำตอบก็คือ rosnode list!!!!!! “

rosnode list

ใช้เพื่อดูว่าตอนนี้ มี node อะไรทำงานอยู่บ้าง วิธีเรียกใช้เหมือนเดิมเลยครับ ctrl+alt+t เปิดหน้า Terminal ขึ้นมาใหม่ จะได้ตามนี้เลยครับ

“แต่ถ้าใครทำแล้วไม่เห็นมีเหมือนในรูป นั่นก็เพราะว่ายังไม่ได้รันอะไรเลยยังไงล่ะ 555555555 “

“ อ้าวทำไมเอ็งไม่บอกตั้งแต่แรกฟระ !!!! “

เอาเป็นว่าเรามาลองกับ turtlesim เลยละกัน ทำตามนี้เลยนะครับ

$ rosmake turtlesim
$ rosrun turtlesim turtlesim_node

ทำเสร็จเเล้วกลับไปใช้ rosnode list ใหม่อีกทีนะครับ 5555
*แต่อย่าพึ่งปิดเต่าน้อยของเรานะครับ จะใช้ยันจบบทความนี้เลยครับ

rosnode info /node_name

ใช้เพื่อ ดูรายละเอียดของแต่ละ node ว่ามี topic อะไรติดต่อกันอยู่บ้าง topic ไหนส่งค่า(Publications) topic ไหนรับค่า(Subscriptions) แล้วก็เหมือนเดิมครับพิมพ์ในหน้า Terminal นี่แหละ

$ rosnode info /turtlesim (หลัง/ ใส่ชื่อ node ที่เราต้องการดูเลยนะครับ)

จะได้ตามนี้เลยครับ

rostopic list

ใช้เพื่อดูว่ามีtopic อะไรทำงานอยู่บ้าง เหมือนเดิมครับพิมพ์ในหน้า Terminal เลย จะได้ตามนี้

rostopic info /topic

ใช้เพื่อดูว่าในเเต่ละ topic มีรายละเอียดเป็นยังไงบ้าง มันจะแสดงว่า topic นี้ ส่งข้อมูลเป็นประเภทอะไร หรือรับข้อมูลเป็นประเภทอะไร สามารถดูได้ว่า ส่งค่าหรือรับค่า ถ้าส่งค่า จะบอกว่าส่งค่า(Publishers)ไปไหนที่ node ไหน หรือรับค่า(Subscribers)มาจาก node ไหน (None คือไม่ได้ส่งหรือไม่ได้รับนะครับ)เหมือนเดิมอีกเเล้ว 5555 พิมพ์ในหน้า Terminal

$ rostopic info /turtle1/cmd_vel (หลัง/ ใส่ topic ที่เราต้องการดูเลยนะครับ)

ขอขอบคุณทุกคนที่เข้ามาอ่านจนจบนะครับ ฮือน้ำตาจะไหล 555 เท่านี้ก็น่าจะเพียงพอแล้วสำหรับการใช้งานคำสั่งเบื้องต้นนะครับ

สุดท้ายยยย!!!!!!

อย่าลืมรัน roscore ก่อนนะครับ เตือนเเล้วนะคร้าบ~

บทความที่เกี่ยวข้อง

--

--