MAVROS 偏航角获取与转换:以东为原点,逆时针为正
以下是一个简单的 Python 代码示例,可以使用 MAVROS 获取飞机的偏航角并将其转换为以东为原点,逆时针为正。
import rospy
from mavros_msgs.msg import State, ExtendedState, PositionTarget
from mavros_msgs.srv import CommandBool, SetMode, CommandTOL
from sensor_msgs.msg import NavSatFix, Imu, MagneticField
from math import degrees, atan2
yaw = 0.0
def imu_callback(data):
global yaw
quaternion = (
data.orientation.x,
data.orientation.y,
data.orientation.z,
data.orientation.w)
euler = tf.transformations.euler_from_quaternion(quaternion)
yaw = degrees(euler[2]) % 360.0
def main():
rospy.init_node('yaw_node', anonymous=True)
rospy.Subscriber('/mavros/imu/data', Imu, imu_callback)
while not rospy.is_shutdown():
# Convert yaw to east as reference, counter-clockwise as positive.
heading = 90.0 - yaw
if heading < 0.0:
heading += 360.0
rospy.loginfo('Heading: %.2f', heading)
rospy.sleep(0.1)
if __name__ == '__main__':
try:
main()
except rospy.ROSInterruptException:
pass
代码中使用了mavros/imu/data话题来获取IMU数据,然后将四元数转换为欧拉角,最后将偏航角转换为以东为原点,逆时针为正的角度值。可以使用roslaunch启动此节点,并使用rostopic echo命令来查看输出的偏航角。
原文地址: https://www.cveoy.top/t/topic/oDTq 著作权归作者所有。请勿转载和采集!