Atlas fake walking - modulabs/gazebo-tutorial GitHub Wiki

Overview

์ด๋ฒˆ ์žฅ์—์„œ๋Š” Atlas๊ฐ€ ๋งˆ์น˜ ๋ฐ”ํ€ด ๋‹ฌ๋ฆฐ ๋กœ๋ด‡ ์ฒ˜๋Ÿผ ์›€์ง์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช… ํ•œ๋‹ค.(๊ฑท๊ฑฐ๋‚˜ ๊ท ํ˜•์žก๋Š” ๊ฒƒ ์—†์ด)

Background

์ด๋ฒˆ ์žฅ์—์„œ๋Š” walking controller๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ์ˆœํžˆ Atlas๋Š” ๋‹ค์Œ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ์œ„์น˜ ์ œ์–ด๋กœ ์„œ์žˆ๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.

drcsim 4.x.x์—์„œ ๋กœ๋ด‡์€ ์„œ์žˆ๋Š” ์ž์„ธ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

๋‹ค๋ฆฌ๋ฅผ ํฌํ•จํ•œ ๋กœ๋ด‡์˜ ๋ชจ๋“  ์กฐ์ธํŠธ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๊ณ  ์ปจํŠธ๋กค ๋œ๋‹ค.

์ด๋ฒˆ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๋Š” ๋กœ๋ด‡์€ ๊ฑธ์„ ์ˆ˜ ์—†์ง€๋งŒ ์—ฌ์ „ํžˆ world๋‚ด์—์„œ ์›€์ง ์ด๊ธฐ๋ฅผ ์›ํ•œ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๋Š” ๋กœ๋ด‡์€ ์ง€๋ฉด์—์„œ ์ด๋™ ๋ฐ ํšŒ์ „ ํ•  ์ˆ˜ ์žˆ๋„๋ก ROS๋ฅผ ํ†ตํ•ด์„œ ์†๋„ ์ง€๋ น์„ ๋ฐ›๋Š”๋‹ค. ๋งˆ์น˜ ๋ฐ”ํ€ด ๋‹ฌ๋ฆฐ ๋กœ๋ด‡ ์ฒ˜๋Ÿผ ์›€์ง์ธ๋‹ค.

Moving Atlas

  1. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์ž‘ํ•˜๊ธฐ

    VRC_CHEATS_ENABLED=1 roslaunch drcsim_gazebo atlas.launch
    

    Note: ๋ณ€์ˆ˜ VRC_CHEATS_ENABLED=1๋ฅผ ์…‹ํŒ… ํ•˜๋Š” ๊ฒƒ์€ /atlas/cmd_vel์„ ํฌํ•จํ•ด์„œ ๋ช‡ ๊ฐ€์ง€ ๊ฐœ๋ฐœ ๋ชฉ์ ์˜ ํ† ํ”ฝ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๊ฒƒ์€ VRC ๋Œ€ํšŒ์—์„œ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

    ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๋Š” ๋กœ๋ด‡์€ ROS Twist์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. atlas/cmd_vel ํ† ํ”ฝ์€ 6์ž์œ ๋„์˜ ์†๋„์ด๋‹ค. rostopic์„ ์ฒดํฌ ํ•ด๋ณด์•„๋ผ.

    rostopic info atlas/cmd_vel
    

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ† ํ”ฝ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    %%% Type: geometry_msgs/Twist Publishers: None Subscribers:

    ์–ด๋””์—์„œ๋“  ROS Twist ๋ฉ”์„ธ์ง€๋ฅผ ํผํ”Œ๋ฆฌ์‹œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  rosmsg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Twist ๋ฉ”์„ธ์ง€ ์—์„œ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•˜์ž.

    rosmsg show Twist
    

    ๋‹ค์Œ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    %%% [geometry_msgs/Twist]: geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z %%%

    ์ด๊ฒƒ์€ 6์ž์œ ๋„ ์†๋„์ด๋‹ค. 3๊ฐœ์˜ ์†๋„(X,Y,Z)์™€ 3๊ฐœ์˜ ๊ฐ์†๋„(Rx,Ry,Rz)์ด๋‹ค. ๋กœ๋ด‡์€ ํ‰๋ฉด์—์„œ ์›€์ง์ž„์ด ๊ตฌ์†๋˜๊ณ  ์˜ค์ง X,Y,Rz๋กœ๋งŒ ์›€์ง์ธ๋‹ค.

  2. ์„œ์žˆ๋Š” ์ž์„ธ๋กœ ๋กœ๋ด‡์„ ์œ„์น˜์‹œํ‚จ๋‹ค.

    rostopic pub --once /atlas/mode std_msgs/String "pid_stand"
    
  3. ๋ฐœ์ด ๋•…์— ๋‹ฟ์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๋ด‡์„ ๊ณ ์ •ํ•œ๋‹ค.

    rostopic pub --once /atlas/mode std_msgs/String "pinned"
    
  4. ๋กœ๋ด‡์„ ์›์—์„œ ์‹œ๊ณ„๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ฒŒ ๋งŒ๋“ ๋‹ค.

    rostopic pub -r 10 atlas/cmd_vel geometry_msgs/Twist '{ linear: { x: 0.5, y: 0.0, z: 0.0 }, angular: { x: 0.0, y: 0.0, z: 0.5 } }'
    

๋ณด๋‚ด์ง€๋Š” ๋งค cmd_vel์€ ์—ฐ๊ด€๋œ ์ˆ˜๋ช…์ด ์žˆ๋‹ค. ์†๋„ ์ง€๋ น์€ 0.1์ดˆ ๋™์•ˆ Atlas์— ์ ์šฉ๋œ๋‹ค. ๊ทธ ์ดํ›„ ๋กœ๋ด‡์€ ๋ฉˆ์ถœ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ๋ณด๋‚ธ ์ด์ „ 'rostopic' ๋ช…๋ น์–ด๋ฅผ ๋ณด๋ฉด -r 10 ์˜ต์…˜ ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋ฅผ 10hz๋กœ ํผ๋ธ”๋ฆฌ์‹œ ํ•˜๊ฒŒ ํ•œ๋‹ค. ์ด๋Š” ๋กœ๋ด‡์ด ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

์†๋„ ๋ช…๋ น์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ’์„ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. atlas.launch ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ROS ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ•ด๋ผ.

    <param name="/atlas/cmd_vel_timeout" type="double" value="0.2"/>
    
  2. drcsim์„ ๋Ÿฐ์น˜ ํ•˜๊ธฐ ์ „์— rosparam์„ ์‹คํ–‰ ํ•˜์—ฌ๋ผ.

    rosparam set /atlas/cmd_vel_timeout 0.2
    

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก๋œ ๋ช…๋ น์–ด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

rostopic echo atlas/cmd_vel

๋กœ๋ด‡์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ CTRL-C๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.