์ธ๋ฐ์ด๋. RC ์ฌ์ ์ ๋ถ๋ถ์์ ์ฝ๊ฐ์ ๋์์ด ํ์ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ด ์๋๋ผ 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์ ์ทจ์ํฉ๋๋ค.
์ฉ๋ฒ:
roslaunch mavros px4.launch
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 ๋น์ ์ ํด๊ฒฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐ ์ด ?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@vooon์ด ์ง๊ธ ํ ์คํธ ์ค์ ๋๋ค. ๋ด ์ถ ๋งต์ด ๋ฌ๋ผ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ง๋ง ์ผ๋ถ ์ฑ๋์ด ๋ฐ์ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ ์ด ๋ชจ๋๋ก ์ด๋ํ์ง ์๊ณ
z=-yaw
์ ๊ฐ์ ์์ ์ ์ํํ์ง ์๊ณ ๋ ์ญ๋ฐฉํฅ ์ฑ๋์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.์ฐธ๊ณ : ์ ๊ฒฝ์ฐ์๋ ์ถ ๋งต์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ vel ์ ์ด ๋ชจ๋์์: