Bleeding edge

ROS2 DDS ํ™˜๊ฒฝ ์„ค์ • ํ™•์ธํ•˜๊ธฐ: `ps` ๋ช…๋ น์–ด ํ™œ์šฉ ๊ฐ€์ด๋“œ ๋ณธ๋ฌธ

CS

ROS2 DDS ํ™˜๊ฒฝ ์„ค์ • ํ™•์ธํ•˜๊ธฐ: `ps` ๋ช…๋ น์–ด ํ™œ์šฉ ๊ฐ€์ด๋“œ

codevil 2025. 8. 19. 20:02

๐Ÿ”Ž ROS2 DDS ํ™˜๊ฒฝ ์„ค์ • ํ™•์ธํ•˜๊ธฐ: ps ๋ช…๋ น์–ด ํ™œ์šฉ ๊ฐ€์ด๋“œ

ROS2๋ฅผ ์‹คํ–‰ํ•˜๋‹ค ๋ณด๋ฉด

  • DDS ์„ค์ • ํŒŒ์ผ (CYCLONEDDS_URI, FASTRTPS_DEFAULT_PROFILES_FILE)
  • ROS Domain ID (ROS_DOMAIN_ID)
  • RMW ์„ ํƒ (RMW_IMPLEMENTATION)

์ด๋Ÿฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค์ด ์‹ค์ œ ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿด ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ps ์ž…๋‹ˆ๋‹ค.


1. ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ฐพ๊ธฐ

๋จผ์ € ํŠน์ • ๋…ธ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

ps -ef | grep <ํ”„๋กœ์„ธ์Šค๋ช…>

์˜ˆ์‹œ (talker ๋…ธ๋“œ ์‹คํ–‰ ์ค‘):

ps -ef | grep talker

2. ps --pid ๋กœ ํŠน์ • ํ”„๋กœ์„ธ์Šค ๋ณด๊ธฐ

--pid ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • PID์˜ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ps --pid <PID> -ef
  • <PID>: ํ”„๋กœ์„ธ์Šค ID
  • -ef: ํ’€ ํฌ๋งท ์ถœ๋ ฅ

3. ์‹คํ–‰ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธํ•˜๊ธฐ

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” /proc/<PID>/environ ์— ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ํ™•์ธํ•˜๋ฉด ์‹ค์ œ ๋…ธ๋“œ๊ฐ€ ์–ด๋–ค DDS ์„ค์ •๊ณผ Domain ID๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cat /proc/<PID>/environ | tr '\0' '\n'

์˜ˆ์‹œ ์ถœ๋ ฅ:

CYCLONEDDS_URI=file:///root/ros_ws/cyclonedds.xml
RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ROS_DOMAIN_ID=10

๐Ÿ‘‰ ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์‹ค์ œ ๋…ธ๋“œ ์‹คํ–‰ ์‹œ ์ ์šฉ๋œ DDS ์„ค์ •, RMW ์ข…๋ฅ˜, Domain ID ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4. ps --ppid ๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ถ”์ ํ•˜๊ธฐ

ROS2์—์„œ launch ๋ช…๋ น์„ ์“ฐ๋ฉด ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค(launch) ์•„๋ž˜์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ด๋•Œ --ppid ์˜ต์…˜์„ ์“ฐ๋ฉด ํŠน์ • Launch ํ”„๋กœ์„ธ์Šค์˜ ์ž์‹๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ps --ppid <Launch_PID> -ef

์˜ˆ์‹œ (Launch PID = 91):

ps --ppid 91 -ef

→ ์–ด๋–ค ๋…ธ๋“œ๋“ค์ด launch์— ์˜ํ•ด ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


5. ์‹ค์ œ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

  1. DDS ์„ค์ • ๊ฒ€์ฆCYCLONEDDS_URI, RMW_IMPLEMENTATION ํ™•์ธ
  2. ps -ef | grep talker cat /proc/<PID>/environ | tr '\0' '\n'
  3. ROS Domain ํ™•์ธ→ ๋…ธ๋“œ๋“ค์ด ๊ฐ™์€ Domain ID๋ฅผ ์“ฐ๋Š”์ง€ ๋น„๊ต
  4. cat /proc/<PID>/environ | tr '\0' '\n' | grep ROS_DOMAIN_ID
  5. Launch ํŠธ๋ฆฌ ํ™•์ธ→ launch์— ์˜ํ•ด ์‹คํ–‰๋œ ๋…ธ๋“œ ์ „์ฒด ํ™•์ธ
  6. ps --ppid <Launch_PID> -ef

โœ… ์ •๋ฆฌ

  • ps --pid: ํŠน์ • ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ํ™•์ธ
  • ps --ppid: ๋ถ€๋ชจ PID ๊ธฐ์ค€์œผ๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ถ”์ 
  • /proc/<PID>/environ: ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ

์ด ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•˜๋ฉด ROS2 ๋…ธ๋“œ๊ฐ€ ์‹ค์ œ ์–ด๋–ค DDS ์„ค์ •๊ณผ Domain ID์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€ ์†์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.