Mavros: ์กฐ์ด์Šคํ‹ฑ ์›๊ฒฉ ์กฐ์ž‘

์— ๋งŒ๋“  2014๋…„ 08์›” 25์ผ  ยท  72์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mavlink/mavros

์ธ๋ฐ”์šด๋“œ. RC ์žฌ์ •์˜ ๋ถ€๋ถ„์—์„œ ์•ฝ๊ฐ„์˜ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

extras feature request

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@vooon์ด ์ง€๊ธˆ ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚ด ์ถ• ๋งต์ด ๋‹ฌ๋ผ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์ฑ„๋„์ด ๋ฐ˜์ „๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์–ด ๋ชจ๋“œ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  z=-yaw ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์—ญ๋ฐฉํ–ฅ ์ฑ„๋„์—๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ œ ๊ฒฝ์šฐ์—๋Š” ์ถ• ๋งต์ด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

axes_map = {
    'roll': 3,
    'pitch': 2,
    'yaw': 0,
    'throttle': 1
}

๊ทธ๋ฆฌ๊ณ  vel ์ œ์–ด ๋ชจ๋“œ์—์„œ:

twist.twist.linear = Vector3(x=-roll, y=pitch, z=throttle)
twist.twist.angular = Vector3(z=-yaw)

๋ชจ๋“  72 ๋Œ“๊ธ€

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„๋‹ˆ๋ผ rc_io ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋…ธ๋“œ๊ฐ€ ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹น์‹ ์ด ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํฌ๋ฆฝํŠธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ •๋ง๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š” ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์ด ๋…ธ๋“œ๋Š” ์กฐ์ด์Šคํ‹ฑ ์ฃผ์ œ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  rc ์žฌ์ •์˜ ๋ฉ”์‹œ์ง€(๋˜๋Š” ์„ค์ •์ )๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ rc/setpoint๋กœ ๋ณด๋‚ด๊ณ  ์Šคํฌ๋ฆฝํŠธ(์ฑ„๋„ ๋งต ๋“ฑ)๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์•Œ์•˜์–ด ๋ฐ”๋กœ ํ•ด์ค„๊ฒŒ

@vooon์ด ์ง€๊ธˆ ์ด๋ฉ”์ผ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค ;)

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์ผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค :+1: ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด์™€ ์œ ์‚ฌํ•œ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @TSC21

@tonybaltovski ์ €์—๊ฒŒ ๋ณด๋‚ด์ฃผ์„ธ์š”. ์œ ์šฉํ•œ ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ์—‘์ŠคํŠธ๋ผ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@tonybaltovski ์ด๋ฏธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ @vooon ์—๊ฒŒ ๋ณด๋‚ด ๊ทธ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •๊ฐ’ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๊ฑฐ์˜ ์™„๋ฃŒ๋˜์—ˆ์ง€๋งŒ RC ์˜ค๋ฒ„๋ผ์ด๋“œ ๋ถ€๋ถ„์€ @vooon์— ๋งก๊ฒผ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ƒํƒœ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์„ค์ • ํฌ์ธํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์— ์†์„ ๋Œ€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :)

์•„๋งˆ๋„ ๋‚ด์ผ...

@TSC21 ๊ฐœ๋… ์ฆ๋ช…์ผ ๋ฟ์ด์ง€๋งŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! :) ํ•˜์ง€๋งŒ ๋‚ด ์šฐ์„  ์ˆœ์œ„๋Š” ์กฐ์ด์Šคํ‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๊ฐ’์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ„์น˜ ๋ฐ ์†๋„ ์ œ์–ด์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์†๋„๋ฅผ ์œ„ํ•ด cmd_vel ๋ฅผ TwistStamped ๋ณด๋‚ด setpoint_velocity ;

์œ„์น˜ ์ œ์–ด๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. cmd_vel ๋Œ€์‹  position ๋ฅผ PoseStamped ๋กœ ๋ณด๋‚ด์ง€๋งŒ ์ด๊ฒƒ์€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์น˜๋ฅผ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ x , y , z ์˜ ๊ฐ’์€ -1..1๋กœ ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๊ฐ’; ๋”ฐ๋ผ์„œ ์กฐ์ด์Šคํ‹ฑ์ด ํ•ญ์ƒ +1 ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ๊ฐ ๋ฐ˜๋ณต์—์„œ ํ•ฉ๊ณ„๋Š” +1 -> ์—ฌ๊ธฐ์—์„œ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์œ ์ผํ•œ ์˜์‹ฌ์€ ์ด ๊ฒฝ์šฐ ์†๋„๋ฅผ ์ œํ•œํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์€ ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์˜ฌ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
์ด๊ฒƒ์€ setpoint_position ์˜ํ•ด ๊ตฌ๋…๋ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: /joy ๊ด€๋ จ ์ฃผ์ œ: mavteleop ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ด์Šคํ‹ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ universal_teleop ๋ฐœ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํฌ๋ฆฝํŠธ์— ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ joy_node๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๊นŒ?

rosrun joy joy_node

2014-08-27 18:17 GMT+04:00 TSC21 [email protected] :

์—…๋ฐ์ดํŠธ: /joy ์ฃผ์ œ ๊ด€๋ จ: ๋‹ค์Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
mavteleop ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด ์กฐ์ด์Šคํ‹ฑ. ํ•˜์ง€๋งŒ universal_teleop์„ ์‚ฌ์šฉํ•˜๋ฉด
์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํฌ๋ฆฝํŠธ์— ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/vooon/mavros/issues/133#issuecomment -53578566.

์•„๋‹ˆ์š”! ์˜ˆ, ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. joy_node ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•  ์Šคํฌ๋ฆฝํŠธ์— ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

์ด์ œ ์žฌ์ •์˜ ์ž์ฒด์— ๋Œ€ํ•ด: /mavros/rc/override ์—์ฝ”ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ / ์ ‘๋‘์‚ฌ๋ฅผ ์žŠ์–ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

override_pub = rospy.Publisher(args.mavros_ns + "/rc/override", OverrideRCIn, queue_size=10)

์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด PR์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ชจํ„ฐ๊ฐ€ ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ FCU์— RC ์žฌ์ •์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๊ณ„์† ํ™•์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@vooon RC ์žฌ์ •์˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ /rc/override ๊ฒŒ์‹œ ์ค‘์ด๋ฉฐ rc_io.cpp ๊ฐ€ ๊ตฌ๋… ์ค‘์ž…๋‹ˆ๋‹ค. /mavros/rc/override ์—์ฝ”ํ•˜๋ฉด ์ฑ„๋„ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€๋งŒ FCU ์ธก์—์„œ๋Š” ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ชจํ„ฐ ํšŒ์ „ ๋ณ€๊ฒฝ ์—†์Œ).

์„ค์ •ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์šฐ์„  ์ˆœ์œ„๋Š” RC ์žฌ์ •์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ์„ค์ •๊ฐ’ ์†๋„์™€ ์œ„์น˜ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (์œ„์˜ ์˜๊ฒฌ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ œ์–ด ์‚ฌ์–‘์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค)
๊ฐ์‚ฌ ํ•ด์š”!

RC ์žฌ์ •์˜์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. FCU๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@tonybaltovski ์ด์œ ๋ฅผ ๋””๋ฒ„๊น…ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” POSCTL์— ๊ด€ํ•œ ๋‹ค๋ฅธ ์ผ๋“ค๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ APM์œผ๋กœ ์žฌ์ •์˜๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์žฌ์ •์˜ ๋ฉ”์‹œ์ง€๊ฐ€ system_id != SYSID_MYGCS(๊ธฐ๋ณธ๊ฐ’: 255)์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 1(mavros ๊ธฐ๋ณธ๊ฐ’)๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” mavros system_id๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฌด์—‡์ด ์ž˜๋ชป ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? system_id ๋˜๋Š” comp_id ? PX4์˜ ๊ฒฝ์šฐ ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์•„๋งˆ๋„ PX4๋Š” RC ์žฌ์ •์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ PX4๋Š” RC ์žฌ์ •์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ์ œ ์ƒ๊ฐ์—๋Š” ๊ตฌํ˜„์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ค์ •๊ฐ’์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. @vooon์„ ๋„์™€์ฃผ ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@vooon ๋‚ด์ผ APM์—์„œ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณด๊ณ  ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด์ผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@vooon๋‹˜ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@TSC21 ๊ฑฐ์˜ ๋‹ค ๋„ค์š” . ์ผ์ • ์‹œ๊ฐ„ ํ†ตํ•ฉ์„ ์œ„ํ•ด ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@vooon๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! :D ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ €์—๊ฒŒ ๊ฒฝ๊ณ ํ•ด์ฃผ์„ธ์š”! ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

-pos (์•„๋งˆ๋„ -vel )๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ชจ๋“œ๋ฅผ ์ด๋ฏธ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@vooon์ด ์ง€๊ธˆ ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚ด ์ถ• ๋งต์ด ๋‹ฌ๋ผ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์ฑ„๋„์ด ๋ฐ˜์ „๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์–ด ๋ชจ๋“œ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  z=-yaw ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์—ญ๋ฐฉํ–ฅ ์ฑ„๋„์—๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ œ ๊ฒฝ์šฐ์—๋Š” ์ถ• ๋งต์ด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

axes_map = {
    'roll': 3,
    'pitch': 2,
    'yaw': 0,
    'throttle': 1
}

๊ทธ๋ฆฌ๊ณ  vel ์ œ์–ด ๋ชจ๋“œ์—์„œ:

twist.twist.linear = Vector3(x=-roll, y=pitch, z=throttle)
twist.twist.angular = Vector3(z=-yaw)

~axes_scale/<name> ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์ „ํ•ฉ๋‹ˆ๋‹ค(-1.0์œผ๋กœ ์„ค์ •).

์•„, ํ™•์ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

launch ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ rosrun joy joy_node ๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@vooon ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์‚ฌํ•ญ: ๋…ธ๋“œ๋Š” 0.0์ผ์ง€๋ผ๋„ ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, cmd_vel ๋Š” ์Šค์œ„์น˜๋ฅผ ์ด๋™ํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ•ญ์ƒ ๊ฒŒ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ด์Šคํ‹ฑ, OFFBOARD ๋ชจ๋“œ๋Š” 0.5์ดˆ์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ํ•ด๋‹น ๋ชจ๋“œ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์ด์ „ ๋ชจ๋“œ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์ฑ„๋„์„ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•  ๋•Œ cmd_vel ๊ฐ€ ํ•ด๋‹น ๊ฐ’์„ ํ•œ ๋ฒˆ๋งŒ ์ „์†กํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PX4 ๊ตฌํ˜„์€ ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ cmd_vel ๊ฐ€ ์ƒˆ ๊ฐ’์„ ์ˆ˜์‹ ํ•  ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ํ•ญ์ƒ ์ด์ „ ์ฑ„๋„ ๊ฐ’์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ €์žฅ๋˜๊ณ  ์ฑ„๋„์˜ ์ƒˆ๋กœ์šด ๊ฐ’์ด ์„ค์ •๋  ๋•Œ๊นŒ์ง€ ์ง€์†์ ์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค(์•„๋‚ ๋กœ๊ทธ ์Šคํ‹ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ).

์ด๊ฒƒ์„ ์กฐ์ด ๋…ธ๋“œ <param name="~autorepeat_rate" value="5" /> ์˜ ์‹œ์ž‘ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

@tonybaltovski ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์‹œ์ž‘ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์‹คํ–‰ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<launch>
    <!-- vim: ft=roslaunch -->
    <!-- example launch script for PX4 teleop -->

    <arg name="fcu_url" default="serial:///dev/ttyACM0:57600" />
    <arg name="gcs_url" default="" />
    <arg name="tgt_system" default="1" />
    <arg name="tgt_component" default="50" />

    <node pkg="mavros" type="mavros_node" name="mavros" required="true" clear_params="true" output="screen">
        <param name="fcu_url" value="$(arg fcu_url)" />
        <param name="gcs_url" value="$(arg gcs_url)" />
        <param name="target_system_id" value="$(arg tgt_system)" />
        <param name="target_component_id" value="$(arg tgt_component)" />

        <!-- px4 blacklist -->
        <rosparam command="load" file="$(find mavros)/launch/px4_blacklist.yaml" />

        <!-- enable heartbeat send and reduce timeout -->
        <param name="conn_heartbeat" value="5.0" />
        <param name="conn_timeout" value="10.0" />
        <!-- enable mavlink autostart on USB port -->
        <param name="startup_px4_usb_quirk" value="true" />

        <!-- joystick axis parameters -->

        <!-- joystick axis map -->
        <param name="~axes_map/roll" value="3" />
        <param name="~axes_map/pitch" value="2" />
        <param name="~axes_map/yaw" value="0" />
        <param name="~axes_map/throttle" value="1" />

        <!-- joystick axis scale -->
        <param name="~axes_scale/roll" value="-1.0" />
        <param name="~axes_scale/pitch" value="" />
        <param name="~axes_scale/yaw" value="-1.0" />
        <param name="~axes_scale/throttle" value="" />

    </node>

    <node pkg="joy" type="joy_node" name="joy" required="true">
        <param name="~/autorepeat_rate" value="50" />
    </node> 
</launch>

์•„๋งˆ๋„ ์ด๊ฒƒ์ด mavros_extras ์Šคํฌ๋ฆฝํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ rosparam list / ๋ฐœํ–‰:

/joy/autorepeat_rate
/mavros/axes_map/pitch
/mavros/axes_map/roll
/mavros/axes_map/throttle
/mavros/axes_map/yaw
/mavros/axes_scale/pitch
/mavros/axes_scale/roll
/mavros/axes_scale/throttle
/mavros/axes_scale/yaw

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  @vooon , ๊ทธ๊ฒƒ์€ axis ์ด์–ด์•ผ ํ•˜๊ณ  axes ์•„๋‹™๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์„ธ์ƒ์—, ๋‚˜์˜ ๋ฌด์ง€. ์ถ•์€ ์ถ•์˜ ๋ณต์ˆ˜ํ˜•์ž…๋‹ˆ๋‹ค (๊ทธ๋ž˜์„œ ๊ทธ๋Œ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค)

์—…๋ฐ์ดํŠธ: rosparam get /mavros/axes_map/pitch ํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ 2 ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ mavteleop ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋Œ€์‹ ํ•˜๋Š” ๊ฒฝ์šฐ :

load_map(axes_map, '/mavros/axes_map/')
load_map(axes_scale, '/mavros/axes_scale/')
load_map(button_map, '/mavros/button_map/')

rosrun mavteleop :

[ERROR] [WallTime: 1409327711.720875] bad callback: <function joy_cb at 0xa5ce9cc>
Traceback (most recent call last):
  File "/opt/ros/hydro/lib/python2.7/dist-packages/rospy/topics.py", line 682, in _invoke_callback
    cb(msg)
  File "/home/vision/vision_ros_ws/src/mavros/mavros_extras/scripts/mavteleop", line 187, in joy_cb
    pitch = get_axis(joy, 'pitch')
  File "/home/vision/vision_ros_ws/src/mavros/mavros_extras/scripts/mavteleop", line 92, in get_axis
    return j.axes[axes_map[n]] * axes_scale[n]
TypeError: can't multiply sequence by non-int of type 'float'

์ข‹์•„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๊ฐ€์ง„ ์‹œ์ž‘ ํŒŒ์ผ์—์„œ :

<!-- joystick axis scale -->
        <param name="~axes_scale/roll" value="-1.0" />
        <param name="~axes_scale/pitch" value="" />
        <param name="~axes_scale/yaw" value="-1.0" />
        <param name="~axes_scale/throttle" value="" />

์‹œํ€€์Šค ๊ณฑ์…ˆ์˜ ์ด์ „ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ ๋ณ€๊ฒฝ:

<!-- joystick axis scale -->
        <param name="~axes_scale/roll" value="-1.0" />
        <param name="~axes_scale/pitch" value="1.0" />
        <param name="~axes_scale/yaw" value="-1.0" />
        <param name="~axes_scale/throttle" value="1.0" />

mavteleop ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์—ฌ ๊ตฌ๋…์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

load_map(axes_map, '/mavros/axes_map/')
load_map(axes_scale, '/mavros/axes_scale/')
load_map(button_map, '/mavros/button_map/')

๊ณง PR์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PR์€ #143์—์„œ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ•์˜ ๋ณต์ˆ˜ํ˜•์„ ํ˜ผ๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋…ธ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/vooon/mavros/commit/289fa6c18113f6c0c1e1764cf4e5c37fd5abf9e2

(PR ์ด์ „์— ์‹œ์ž‘๋จ).

์ž˜๋ชป๋œ ๋…ธ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค ์ด์ œ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌ ํ•ด์š”! ๊ทธ๋Ÿฌ๋ฉด PR์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

์šฉ๋ฒ•:

  1. FCU ์—ฐ๊ฒฐ ์‹œ์ž‘: roslaunch mavros px4.launch
  2. ์›๊ฒฉ ์กฐ์ž‘ ์‹œ์ž‘: roslaunch mavros_extras teleop.launch

๋˜๋Š” ๋‘ ํŒŒ์ผ ๋ชจ๋‘์— ๋Œ€ํ•ด <include file="..."> ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ์‹œ์ž‘์„ ์ƒ์„ฑํ•˜์‹ญ์‹œ์˜ค.

์šฉ๋ฒ•:
FCU ์—ฐ๊ฒฐ ์‹œ์ž‘: roslaunch mavros px4.launch
์›๊ฒฉ ์กฐ์ž‘ ์‹œ์ž‘: roslaunch mavros_extras teleop.launch

๊ฐ์‚ฌ ํ•ด์š”! ๊ทธ๋Ÿผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค!

์ด์ œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :) yaml์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค(289fa6c ํ™•์ธ - roll bot poll ์ด์–ด์•ผ ํ•จ). ์ด์ œ GCS HIL์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. position ๋ถ€๋ถ„ @vooon์—์„œ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ฃผ๋ง๋น„ํ–‰์ค€๋น„์ค‘์ด๋ผ ํ• ์ผ์—..

์ฃผ๋ง๋น„ํ–‰์ค€๋น„์ค‘์ด๋ผ ํ• ์ผ์—..

๋‹น์‹ ์ด myabe๋ฅผ ์ง€์ ํ•œ๋‹ค๋ฉด ๋‚˜๋Š” ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์˜คํƒ€ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ FCU ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ๋กœ๋“œ RC ์ œํ•œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋ฐฉ๊ธˆ PX4Firmware์— 500๊ฐœ์˜ ํฌํฌ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋ฐฉ๊ธˆ PX4Firmware์— 500๊ฐœ์˜ ํฌํฌ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

:D Pixhawk ๋ฐ PX4 ํŒŒ์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋งํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ๋ฌธ์ œ๋ฅผ ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ญ”๊ฐ€๋ฅผ ์“ฐ๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋‚ด ๋งˆ์Œ์„ ์ฝ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ :D. ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธ, ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@pmukherj ํด๋ฆฐ ์‹œ์Šคํ…œ์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๋‹จ๊ณ„๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ
๊ฐ์‚ฌ ํ•ด์š”.

@mhkabir ๋‚˜๋Š” ์œ„ํ‚ค์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค - ํŠœํ† ๋ฆฌ์–ผ ํŽ˜์ด์ง€ (ํ˜„์žฌ mavros ๊ณต๊ฐ„์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

@vooon PX4 wiki๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค :) README์— ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํ•œ ๊ฒƒ! ์ค‘๋ณต ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(ํŽŒ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ์ž ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ํ•„์š”๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Œ ๋“ฑ). ์˜ค๋Š˜์€ ์•„๋ฌด๊ฑฐ๋‚˜ ์จ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@mhkabir ์˜ค๋Š˜ ์บ๋‚˜๋‹ค์˜ ์•…์ฒœํ›„๋กœ ์ธํ•ด ๋น„ํ–‰์„ ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ, ๋ฒค์น˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๋™์•ˆ 0์ด ์•„๋‹Œ r,p,y ๋ช…๋ น์ด ์ „์†ก๋  ๋•Œ(์กฐ์ด์Šคํ‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ) ๋ชจํ„ฐ ์ถœ๋ ฅ์— ๊ฐ€์ฒญ ๋ณ€ํ™”๊ฐ€ ์—†์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๋ ฅ์„ ์ œ์–ดํ•  ๋•Œ(f710 ์กฐ์ด์Šคํ‹ฑ์„ ํ†ตํ•ด) ๋ชจํ„ฐ๊ฐ€ ์œ„์•„๋ž˜๋กœ ์œ™์œ™๊ฑฐ๋ฆฌ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋“œ๋กœํ„ฐ์˜ ๋ชธ์ฒด๋ฅผ ์ด๋ฆฌ์ €๋ฆฌ ํ”๋“ค๋ฉด ๋ชจํ„ฐ๊ฐ€ ์œ™์œ™๊ฑฐ๋ฆฌ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋“ฃ๊ณ  ๋ณด์ƒ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค์ •์ /์ž์„ธ ๋ช…๋ น์„ ํ†ตํ•ด ๋Œ€์ƒ์— ํฐ ar,p,y ๋ช…๋ น์„ ์ฃผ๋ฉด ๊ทธ๋Ÿฐ ๋ณด์ƒ์ด ๋“ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. mavros์˜ ์ผ๋ถ€๋กœ ๊ตฌํ˜„๋œ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ตฌํ˜„ ์ค‘์ธ ๋ช…๋ น์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ(๊ฐœ๋ณ„ ๋ชจํ„ฐ ์ „์› ๋˜๋Š” ๊ธฐํƒ€)์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฌธ์„œํ™”ํ•˜๊ธฐ ์ „์— ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ํ†ตํ•ด ๋ฒค์น˜์—์„œ ์ฆ๋ช…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. P.

@pmukherj Gitter๋‚˜ ํ–‰์•„์›ƒ([email protected])์—์„œ ์ €๋ฅผ ๋ฉ”์‹ ์ €๋กœ ๋ณด๋‚ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์œผ๋กœ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์ •์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
mavros์— ์—†๋Š” LOCAL_POSITION_TARGET_NED ๋ฉ”์‹œ์ง€์™€ ATTITUDE_TARGET ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •์  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์˜ ์ผ๋ถ€๋กœ ์ด๋ฅผ ํŒจ์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๋Œ€์ƒ ์ŠคํŠธ๋ฆผ์˜ ๊ฒฝ์šฐ PX4 ์ธก์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜คํ”„๋ณด๋“œ ์ œ์–ด๋Š” ์‹คํ—˜์ ์ด๋ฉฐ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์•„์ง ์–ด๋””์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. ์ €๋Š” DAQ ๋น„ํ–‰์„ ํ•˜๋Š๋ผ ๋ฐ”๋นด์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ATTITUDE_TARGET์€ ๋‚ด๊ฐ€ ๋ณด๋‚ด๋Š” ์กฐ์ด์Šคํ‹ฑ ๋ช…๋ น์„ ํ”ฝ์Šคํ˜ธํฌ๊ฐ€ ๋‹ฌ์„ฑํ•˜๋ ค๊ณ  ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋” ํฐ ์ปดํ“จํ„ฐ๊ฐ€ ํƒ‘์žฌ๋œ 3DR, pixhawk๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(px4 ์Šคํƒ์€ btw์—์„œ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ์ผ๋ถ€ ๋น„ํ–‰ ๋ชจ๋“œ๊ฐ€ ๋ˆ„๋ฝ๋จ).

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๊ตฌํ˜„๋œ ํฌํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@pmukherj ๋‚ด ๋น„์ฃผ์–ผ
์–ด๋–ค ์˜จ๋ณด๋“œ ์ปดํŒจ๋‹ˆ์–ธ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
๋Œ€์ƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹ค์ œ๋กœ ์•„๋ฌด ๊ฒƒ๋„ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. mavros์— ์žˆ๋Š” UDP ๋ธŒ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ๋ฐœ ์ปดํ“จํ„ฐ์˜ QGC์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ํŒจ์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋ณด๊ณ  ํ”Œ๋กฏํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค! ์ƒˆํ•ด์— ์‚ฌ๋ฌด์‹ค์„ ์˜ฎ๊ธฐ์‹ญ์‹œ์˜ค.
๋‚˜๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ปดํ“จํ„ฐ(odroids, TK1 ๋“ฑ)๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. UDP ๋ธŒ๋ฆฌ์ง€ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
ํ”ฝ์Šคํ˜ธํฌ์— ์›๊ฒฉ ์ธก์ • ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ปดํŒจ๋‹ˆ์–ธ ์ปดํ“จํ„ฐ ์™ธ์—๋„ ์›๊ฒฉ ์ธก์ • ํฌํŠธ ์ค‘ ํ•˜๋‚˜์— ๋ฌด์„  ์—ฐ๊ฒฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค(3DR pixhawk์˜ ํ‘œ์ค€).

์˜ˆ. ์„ค์ •๊ฐ’์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‚ด๋ถ€ ์„ค์ •๊ฐ’์ด ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ ์ถœ๋ ฅ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋น„ํ–‰ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด :). ํ–‰์šด์„ ๋นŒ์–ด์š”.

@pmukherj ์ปดํŒจ๋‹ˆ์–ธ์„ TELEM2 ํฌํŠธ์— ์—ฐ๊ฒฐํ•˜๊ณ  microSD ์นด๋“œ์˜ extras.txt๋ฅผ ํ†ตํ•ด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค์ •๊ฐ’์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋น„ํ–‰์— ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.
ํ™•์ธํ•˜์‹ญ์‹œ์˜ค: http://www.pixhawk.org/dev/ros/mavros_offboard
๋งจ ์•„๋ž˜์—๋Š” ์˜คํ”„๋ณด๋“œ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ mavros ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๋นˆ ์ฝ”๋“œ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค(์›ํ•˜๋Š” ๊ฒฝ์šฐ ์˜ต์…˜์œผ๋กœ).

๋˜ํ•œ ์—ฌ๊ธฐ์— ๋น„ํ–‰ ํ…Œ์ŠคํŠธ ์ฃผ๋ฌธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? http://www.pixhawk.org/dev/offboard_control/testing

ํฌ์ธํŠธ๋งŒ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@vooon ์กฐ์ด์Šคํ‹ฑ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์ถ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๋“ฑ์˜ ๊ฒฝ์šฐ ๋„ˆ๋ฌด ์‹ฌํ•˜๊ฒŒ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œ/์ตœ๋Œ€ ์ œํ•œ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ง„์‹ค ;)
์Šคํฌ๋ฆฝํŠธ/ํŒŒ์ด์ฌ์ด ๋‹ค์†Œ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ C++๋กœ์˜ ์ตœ๋Œ€ ์žฌ์ž‘์„ฑ.
๊ทธ๋Ÿฌ๋‚˜ mavteleop์ด desctop์—์„œ ์‹คํ–‰๋˜๊ณ  OBC์˜ mavros๋ฅผ ์ œ์–ดํ•  ๋•Œ๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@vooon ๋‹น์‹ ์€ ํ•ด๊ฒฐ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ๊ฐ ์ด ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰