๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

20. [ROS RC์นด] ROS ์—ฐ๋™ RC์นด ์ฃผํ–‰

๐ŸŽฎ

20. [ROS RC์นด] ROS ์—ฐ๋™ RC์นด ์ฃผํ–‰

ROS_MASTER_URI ์„ค์ •


์กฐ์ด์Šคํ‹ฑ์„ ์ด์šฉํ•ด ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ, ๋‹ค์‹œ ๋กœ๋ด‡์„ ๊ฐ€์ ธ์™€์„œ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๊ฝ‚๊ณ  ๋งˆ์šฐ์Šค ํ‚ค๋ณด๋“œ๋ฅผ ๋“ค๊ณ ์™€์„œ ๋””๋ฒ„๊น…์„ ํ•˜๊ณ  ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋ฒ ํ„ฐ๋ฆฌ๊ฐ€ ๊บผ์ ธ์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์ด ๋‚ ์•„๊ฐ€๊ณ ...

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์ €๋„ ๋งŽ์ด ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ์›๊ฒฉ์œผ๋กœ jetson nano์— ์ ‘์†ํ•˜๊ณ , ๊ฐ™์€ ROS Master๋ฅผ ๋ฐ”๋ผ๋ณด๋„๋ก ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  • Jetson Nano IP ํ™•์ธ
$ hostname -I
> 192.168.0.??

  • PC IP ํ™•์ธ
$ hostname -I
> 192.168.0.??

  • PC โ‡’ Jetson Nano SSH ์ ‘์†
$ ssh <user-name>@192.168.0.??
> swimming@192.168.0.12's password: c

<jetson-user-name>@<jetson-pc-name>~$ 

์ด๋ ‡๊ฒŒ ssh๋ฅผ ํ†ตํ•ด jetson์œผ๋กœ ์›๊ฒฉ์ ‘์†์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก
๋ฐ˜๋“œ์‹œ ๊ฐ™์€ wifi๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ROS Master๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•˜๊ธฐ


  • PC์—์„œ ~/.bashrc๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
$ eb

#iptime
export ROS_MASTER_URI=http://192.168.0.jetson:11311
export ROS_HOSTNAME=192.168.0.pc

$ sb

๊ทธ๋Ÿฐ ๋‹ค์Œ, Jetson์—์„œ roscore๋ฅผ ์‹คํ–‰ํ•œ ๋’ค, ๋‹ค์‹œ PC์—์„œ rosnode list ๋ฅผ ์ž…๋ ฅํ•ด ๋ณด์„ธ์š”

$ rosnode list
/rosout

โ‰๏ธโ‰๏ธ master๋ฅผ ์‹คํ–‰์‹œํ‚ค์ง€ ์•Š์•˜๋Š”๋ฐ, rocsout์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PC๊ฐ€ Jetson์˜ rosmaster๋ฅผ ๋ฐ”๋ผ๋ณด๋„๋ก ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜†๐Ÿ˜†

์ง€๊ธˆ ๋ถ€ํ„ฐ, PC์—์„œ ์กฐ์ด์Šคํ‹ฑ node๋ฅผ ์‚ฌ์šฉํ•ด, Jetson Nano์˜ ์ œ์–ด node์—๊ฒŒ publish ํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

F710 ์„ค์ •c


BOM ์‹œ๊ฐ„์— ์ด์•ผ๊ธฐํ–ˆ๋˜ ๋กœ์ง€ํ… ๋ฌด์„  ๊ฒŒ์ž„ํŒจ๋“œ๋ฅผ ์„ค์ •ํ•ด ๋ด…์‹œ๋‹ค.
๋กœ์ง€ํ… ๋ฌด์„  ๊ฒŒ์ž„ํŒจ๋“œ
COUPANG
https://www.coupang.com/vp/products/38160890?itemId=140692507&isAddedCart=
๐Ÿ’ก
๊ฒŒ์ž„ํŒจ๋“œ ๊ฑด์ „์ง€, ๋ฌด์„  ๋™๊ธ€์ด ๊ธฐ๊ธฐ์— ์ž˜ ๊ฝ‚ํ˜€์žˆ๋‚˜ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
$ sudo apt-get install joystick
$ cd /dev/input
# js0 ํ™•์ธ

$ sudo jstest /dev/input/js0c

์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌด์ˆ˜ํ•œ ๋ผ์ธ๋“ค์ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ, ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด์„œ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก
์ „๋ฉด์— ์žˆ๋Š” ์Šค์œ„์น˜๊ฐ€ D๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”!!

๊ฒŒ์ž„ํŒจ๋“œ๋กœ RC ์นด ์กฐ์ข…ํ•ด๋ณด๊ธฐ!!


๊ฐ ๋””๋ฐ”์ด์Šค์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ปค๋งจ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Jetson

$ sudo apt-get install ros-melodic-joy* -y

$ cd catkin_ws/src
$ cma
$ sds
$ rosrun donkey_control joy_control.py

  • PC

$ sudo apt-get install ros-melodic-ackermann-* -y
# donkey_ros repo clone

$ cd gcamp_ws
$ cma
$ sds

$ roslaunch donkey_joy joy_teleop_axes.launch
# or
$ roslaunch donkey_joy joy_teleop_btns.launch

์กฐ์ดํŒจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” axes ๋ฒ„์ „๊ณผ, ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋Š” btns ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ๊ฐœ์š”๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค.

  • rqt_graph

  • joy node : ros์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•ด์ฃผ๋Š” ์กฐ์ด์Šคํ‹ฑ์šฉ node์ž…๋‹ˆ๋‹ค.
  • joy teleop axes : ์กฐ์ด์Šคํ‹ฑ ์‹ ํ˜ธ ์ค‘, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ ์ทจํ•ฉํ•˜์—ฌ ์–ด๋Š ์ •๋„ ์†๋„, ๊ฐ๋„๋กœ ์›€์ง์—ฌ์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • donkey control : pwm์„ ํ†ตํ•ด RC์นด์—๊ฒŒ ์‹ค์ง์ ์œผ๋กœ ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด์„œ ์›€์ง์ด๊ฒŒ ํ•˜๋Š” node์ž…๋‹ˆ๋‹ค.

topic์„ ์œ„์ฃผ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
  • donkey_control :

    subscribe : ackermann_msgs/AckermannDriveStamped

๋งˆ์ง€๋ง‰ ๋‹จ์ธ donkey_control ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ๋‹ค์Œ ๊ฐ•์˜์—์„œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ’ป