Log filtering - modulabs/gazebo-tutorial GitHub Wiki

์†Œ๊ฐœ

State logs๋Š” ๊ฐ€์ œ๋ณด๋กœ๋ถ€ํ„ฐ์˜ world state ์ •๋ณด์˜ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. state๋Š” ์œ„์น˜,์†๋„,๊ฐ€์†๋„,๊ทธ๋ฆฌ๊ณ  ํž˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.์ด์š”์†Œ๋“ค์€ ๋ชจ๋“  ๋ชจ๋ธ์˜ ๋งํฌ์— ์ ์šฉ์ด ๋˜์–ด์žˆ๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ œ๋ณด๋Š” ๋‹จ์ง€ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋ก๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด state logํ™”์ผ์€์€ ํ—ค๋”,์ดˆ๊ธฐworld์„ค๋ช…,๊ทธ๋ฆฌ๊ณ  state์˜ ์—ฐ์†๋œ ์‹œ๊ฐ„์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ปค๋งจํŠธ ๋ผ์ธ ํˆด

๋กœ๊ทธ ํˆด์€ gz log ๋ช…๋ น๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ๋„์›€๋ง์„ ๋ณด๊ธฐ๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

$ gz help log

or

$ gz log -h

์‚ฌ์šฉ๋ฒ• ์ƒ˜ํ”Œ

Tip: ๋กœ๊ทธ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์„ค๋ช…์„ ์œ„ํ•œ ๋กœ๊น… ๊ณผ ํ”Œ๋ ˆ์ด๋ฐฑ ๋ถ€๋ถ„ ์˜ ์ง€์นจ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”

Step 1: state z z ๋กœ๊ทธํ™”์ผ ์ƒ์„ฑํ•˜๊ธฐ

์šฐ์„  ๊ธฐ์กด์˜ ๋กœ๊ทธํ™”์ผ์„ ์‚ญ์ œํ•˜์„ธ์š”

$ rm -rf ~/.gazebo/log/*

์šฐ๋ฆฌ๋Š” stste ๋กœ๊ทธํ™”์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด pr2 world๋ฅผ ์ด์šฉํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ์„  ์ปค๋ฉ˜๋“œ ๋ช…๋ น -r ์˜ต์…˜์œผ๋กœ ๊ฐ€์ œ๋ณด ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ค์„ธ์š”

$ gzserver -r worlds/pr2.world

๋ช‡์ดˆํ›„์— ctrl-c key๋กœ ์„œ๋ฒ„๋™์ž‘์„ ์ค‘์ง€์‹œํ‚ค์„ธ์š”

์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์น˜๋Š” ~/.gazebo/log ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””๋ ‰ํ† ๋กœ์— ์•ˆ์—๋Š” state.logzํ™”์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ƒ˜ํ”Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

~/.gazebo/log/2013-07-25T07\:29\:05.122275/gzserver/state.log

๋‹น์‹ ์€ ์ด ๋กœ๊ทธํ™”์ผ์„ ๊ฐ€์ œ๋ณด๋กœ ์‹คํ–‰์‹œ์ผœ์„œ ํ™•์ธ์„ ํ• ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

$ gazebo -p ~/.gazebo/log/*/gzserver/state.log

Step 2: Filter a state log file

gz๋กœ๊ทธ ์ปค๋งจ๋“œ๋ผ์ธ ํˆด์€ ๊ธฐ๊ณ„๋ฉ”์นด๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค ์ฆ‰ ๋กœ๊ทธํ™”์ผ์„ ํ†ตํ•ด ๋‹จ๊ณ„์ ์ธ ๋ฉ”์นด๋‹ˆ์ฆ˜(์Šคํ…ํ•‘) ์ด๊ฒƒ์€ ์Šคํฌ๋ฆฐ์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ํŠน์ •ํ•œ ์ •๋ณด ์ฆ‰ ๋งํฌ,๋ชจ๋ธ์˜ ์œ„์น˜๋“ฑ ํŠน์ •ํ•œ ์ •๋ณด๋ฅผ ํ•„ํ„ฐ๋ง ํ•ด์„œ ์Šคํฌ๋ฆฐ์— ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ์— ์•„๋ž˜ ๊ธฐ๋ก๋œ ๋กœ๊ทธํ™”์ผ์„ ๋‚˜ํƒ€๋‚ด ๋ณด์„ธ์š”

$ gz log -e -f ~/.gazebo/log/*/gzserver/state.log

๋‹น์‹ ์€ ์Šคํฌ๋กค๋ง ํ•จ์œผ๋กœ์จ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋ณผ์ˆ˜์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋“  ์†๋„,๊ฐ€์†๋„,ํž˜๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ง€์šฐ์„ธ์š” ์ด๊ฒƒ์€ ๋‹จ์ง€ ์œ„์น˜์ •๋ณด๋งŒ ๋‚จ๊ธธ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ gz log -e -f ~/.gazebo/log/*/gzserver/state.log --filter *.pose/*.pose

์ด -- ํ•„ํ„ฐ์˜ต์…˜์€ ์œ ์—ฐํ•œ ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธํ™”์ผ์—์„œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

ํ•„ํ„ฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ ๋ผ์ธ . ๊ณ„์ธต์„ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด /๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š” , ์˜ˆ๋ฅผ ๋“ค๋ฉด <model_name>/<link_name>

. ๊ฐœ๋ณ„ํ•ญ๋ชฉ์˜ ํŠน์„ฑ์น˜๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” .๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”, ์˜ˆ๋ฅผ๋“ค๋ฉด <model_name>.pose.y or <model_name>/<link_name>.velocity

๋ช‡๋ช‡ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํŠน์„ฑ๋“ค ์ž…๋‹ˆ๋‹ค

Model: pose

Link: pose, velocity, acceleration, wrench

Pose, velocity, acceleration or wrench: x, y, z, r (roll), p (pitch), a (yaw)

. Use * as a wildcard, for example .pose or <model_name>/right_

. Use [] to match any of the lower level properties, for example <model_name>/pose.[x,y,a]

hz ํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•œ ์‹œ๋ฌผ๋ ˆ์ด์…˜ ํƒ€์ž„๊ธฐ๋ฐ˜๋œ ํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด, 30ํ—ค๋ฅด์ธ ์—์„œ state์ •๋ณด ์ถœ๋ ฅ์„ ํ• ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

$ gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30

์ด ํ•„ํ„ฐ๋Š” ํ™”์ผ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ํ•ฉ์น ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ state.logํ™”์ผ์˜ ์‚ฌ์ด์ฆˆ์—๋”ฐ๋ผ์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30 --filter *.pose/*.pose > /tmp/filtered_state.log

์ด ๋กœ๊ทธํ™”์ผ์€ ๊ฐ€์ œ๋ณด์—์„œ ์žฌ์ƒ๋ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ gazebo -p /tmp/filtered_state.log
โš ๏ธ **GitHub.com Fallback** โš ๏ธ