DRC vehicle tele operation - modulabs/gazebo-tutorial GitHub Wiki

๊ฐœ์š”

๋ณธ ์ง€์นจ์„œ๋Š” DRC Vehicle์„ VRC Plugin์—์„œ ์ œ๊ณต๋ฐ›์€ ROS topics์„ ์ด์šฉํ•ด์„œ ์–ด๋–ป๊ฒŒ ์ œ์–ด๋ฅผ ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ์ง€์นจ์„œ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ณด์กฐ๊ฐœ๋ฐœํˆด๋กœ์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค, ๊ฒฝ์Ÿํ•˜๋Š”๋™์•ˆ์— ์‚ฌ์šฉ๋ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ง€์นจ์„œ์˜ ์ฝ”์Šค์•ˆ์—์„œ, ์šฐ๋ฆฌ๋Š” DRC Vehicle์„ ์šด์ „ํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กฐํ–ฅ์žฅ์น˜,ํ•ธ๋“œ๋ธŒ๋ ˆ์ดํฌ, ๊ฐ€์ŠคํŒจ๋‹ฌ,๋ธ”๋ ˆ์ดํฌ ํŒจ๋‹ฌ์˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น๋“ค์€ Atlas์—†์ด vehicle navigation์„ ํ…Œ์ŠคํŠธ ํ• ๋•Œ๋„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ DRC Simulator

DRC simulator๋ฅผ ์„ค์น˜ํ•˜๊ณ , ๊ทธ์™€ ๊ด€๋ จ๋œ ํˆด์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ณธ ๊ณผ์ •์„ ๋ณด์„ธ์š” ์ด ์ง€์นจ์„œ๋Š” drcsim-3.1์ด์ƒ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

Launch the DRC Simulator

atlas_drc_vehicle_fire_hose.launch๋ฅผ ์ƒ์š”ํ•˜์—ฌ ์‹œ๋ฌผ๋ ˆ์ดํ„ฐ๋ฅผ ๋Ÿฐ์นญํ•˜๊ณ , ๋ณด์กฐ๊ฐœ๋ฐœํˆด์„ ์ด์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VRC_CHEATS_ENABLED=1 roslaunch drcsim_gazebo atlas_drc_vehicle_fire_hose.launch

DRC Vehicle interface states ๋ฅผ ์ฝ์œผ์„ธ์š”

VRC plugin๋Š” DRC Vehicle interface์š”์†Œ๋ฅผ ์œ„ํ•œ ROS topics์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ the steering wheel, hand brake, and pedals, the DRC Vehicle์— ์Šค์œ„์น˜ ํ‚ค๋ฅผ ๊ฐ–๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ธ๋ฐฉํ–ฅ์˜ ๋ฐฉํ–ฅ ์Šค์œ„์น˜๋Š” (์ „์ง„/์ค‘๋ฆฝ/ํ›„์ง„)์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ์˜ ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ์˜ ํ˜„์žฌ์ƒํƒœ๋Š” ROS topic ์ƒ์—์„œ ์ฝํ˜€์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, 1hz ๋กœ ์ค‘๊ฐœํ•ฉ๋‹ˆ๋‹ค.

    /drc_vehicle_xp900/brake_pedal/state
    /drc_vehicle_xp900/direction/state
    /drc_vehicle_xp900/gas_pedal/state
    /drc_vehicle_xp900/hand_brake/state
    /drc_vehicle_xp900/hand_wheel/state
    /drc_vehicle_xp900/key/state

์ด ํ† ํ”ฝ์€ ๋ช…๋ น๋ผ์ธ์œผ๋กœ ๋ถ€ํ„ฐ ๋ณด์—ฌ์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด

rostopic echo /drc_vehicle_xp900/brake_pedal/state

์ด brake_pedal, gas_pedal, and hand_brake topics ์€ Float64 ๊ฐ’์„ 0(๋น„ํ™œ์„œํ™”)~1(ํ™œ์„ฑํ™”)์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ๋ณด๋‚ธ๋‹ค DRC Vehicle defaults๋Š” ๋น„ํ™œ์„ฑ์™€ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. hand_wheel topic์€ ์กฐํ–ฅํœ ์˜ ๊ฐ๋„๋ฅผ ๋ ˆํฌํŒ… ํ•ด ์ค๋‹ˆ๋‹ค. ๋ผ๋””์•ˆ ๊ฐ’์œผ๋กœ. ์กฐํ–ฅํœ ์€ -7๋ผ๋””์•ˆ์—์„œ 7๋ผ๋””์•ˆ๋ณด๋‹ค ๋” ํฐ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š”๊ฒƒ์„ ์•Œ์•„๋‘์‹ญ์‹œ์˜ค.

๋ฐฉํ–ฅ๋ฐ ํ‚ค์ƒํƒœ ํ† ํ”ฝ์€ Int8 value๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์ƒํƒœ๋Š” ์•ž์œผ๋กœ๋Š” "1" , ์ค‘๋ฆฝ์€ "0" , ํ›„์ง„์€ "-1" ๊ฐ’์„ ๋ ˆํฌํŒ…ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ–ฅ์Šค์œ„์น˜๊ฐ€ ์ค‘๋ฆฝ์— ์žˆ์ง€์•Š์„๋•Œ, ํ‚ค๋ฅผ ๋Œ๋ฆฌ๋Š”๊ฒƒ์— ์˜ํ•ด ์•ผ๊ธฐ๋œ ์—๋Ÿฌ๋ฅผ ์œ„ํ•ด ํ‚ค ์ƒํƒœ 1์€ "On", 0์€ off ๋ผ๊ณ  ๋ฆฌํฌํŒ…์„ ํ•ด์ค๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์Šค์œ„๋ฅผ ์ค‘๋ฆฝ์œผ๋กœ ๋†“๋Š”๊ฒƒ์€ ํ‚ค ์ƒํƒœ๋ฅผ 1๋กœ ์ €์žฅํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‚ค ์Šค์œ„์น˜์˜ ์ดˆ๊ธฐ์น˜๋Š” on , ์ „๋ฐฉํ–ฅ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋ฏธ๋ž˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋˜๋Š” ๊ฒฝ์Ÿ์˜ ๋ฏธ๋ž˜๋ฒ„์ „์— ๋Œ€ํ•œ ์˜ˆ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

DRC Vehicle๋ฅผ open-loop commands ๋กœ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

The DRC Vehicle model์€ ํ˜„์žฌ ๋น„์ฃผ์–ผ ์š”์†Œ๋ฅผ ๊ฐ–๊ณ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์กฐํ–ฅ์„ ๋ณด๊ธฐ์œ„ํ•ด์„œ DRC Vehicle model transparent๋ฅผ ๋งŒ๋“œ์„ธ์š” ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ชจ๋ธ์„ ์œ„ํ•ด ๋˜์–ด์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.View->Transparent and View->Collisions,๋ฉ”๋‰ด์˜ต์…˜์„ ์„ ํƒํ•˜๋Š”๊ฒƒ์œผ๋กœ ๋ชจ๋“  ๋ชจ๋ธ์— ์ ์šฉ๋˜์–ด์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

rostopic pub --once /drc_vehicle_xp900/hand_wheel/cmd std_msgs/Float64 '{ data : 3.14 }'

์•ž๋ฐ”ํ€ด์ด ๋ณ€ํ™”๋ฅผ ๋ณด์„ธ์š”

์˜ค๋ฅธ๋ฐฉํ–ฅ ์กฐํ–ฅ(์•ž๋ฐ”ํ€ด)

rostopic pub --once /drc_vehicle_xp900/hand_wheel/cmd std_msgs/Float64 '{ data : -3.14 }'

gas pedal ๋ˆ„๋ฅด๊ธฐ:

rostopic pub --once /drc_vehicle_xp900/gas_pedal/cmd std_msgs/Float64 '{ data : 1 }'

๊ทธ๋Ÿฌ๋‚˜ the vehicle_xp900's์€ ์›€์ง์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ•ธ๋“œ๋ธŒ๋ ˆ์ดํฌ๋Š” ๋””ํดํŠธ๊ฐ€ ํ™œ์„ฑํ™” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

rostopic pub --once /drc_vehicle_xp900/hand_brake/cmd std_msgs/Float64 '{ data : 0 }'

The vehicle_xp900์€ ์›์œผ๋กœ ๋“œ๋ผ์ด๋น™์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์—”์ง„ ์˜คํ”„ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ณด๋‚ด์„ธ์š”

rostopic pub --once /drc_vehicle_xp900/key/cmd std_msgs/Int8 '{ data : 0 }'