磁偏角与磁倾角

在地球物理业内术语中,地理南极附近的磁极称为地磁南极,地理北极附近的磁极称为地磁北极(绝对权威),而地磁南极其实是磁北极,地磁北极是磁南极,磁力线从磁北极出发从磁南极进入,也即地磁场从地理南极出来从地理北极进去。

简单概括下上面这段话的名词:
地理南极/北极: 就是地理位置上的南北极

地磁北极:指南针(北极)所指向的方向 (指南针其实是指北针)
地磁南极:地磁北极的反方向

地球内部有一个地核形成的巨大磁场,其S极在地理北极附近,N极在地理南极附近
磁南极:就是地球内部磁场的S极
磁北极:就是地球内部磁场的N极
这里写图片描述
磁偏角magnetic declination:地磁北极(指南针指示的方向)与真北(地理北极)间的夹角
磁倾角Magnetic inclination:地球表面任一点的地磁场总强度的矢量方向与水平面的夹角。一般来说,北半球的磁倾角为正,南半球的磁倾角为负
这里写图片描述
这里写图片描述
要查磁偏角与磁倾角可通过这个网站(http://www.magnetic-declination.com/#
国内一些城市的磁偏角也可通过下表直接查出(在表内没有的城市按与之最近的城市算)
这里写图片描述
这里写图片描述

AUTOQUAD中关于磁偏角和磁倾角的设置:
由于AQ代码中公式代入时数学计算的需要,磁倾角需要与真正的磁倾角相反,即在真正的磁倾角前加个负号。AQ的地面站上需设置这两个角度,设置方法如下,以深圳为例:
1. 通过上面查询网站查出深圳的磁偏角和磁倾角为:
这里写图片描述
2. 打开AQ地面站上带的工具AQ IMU Calibration
3. 由于中国位于北半球,在磁倾角前加个负号,分别输入到工具中,点击Calc便可分别计算出所需要在地面站上设置的磁偏角-2.78和磁倾角-33.58。
这里写图片描述

另:个人觉得这两个角度的设置并不是很重要,AQ中只在初始化航向时使用到了这两个值,这两个值有偏差只会让初始的航向有稍许的偏差,但这个偏差在起飞时影响不是很大,且飞行时并未用到地磁计的数值。

### ROS `robot_localization` 使用指南 #### 一、简介 `robot_localization` 是一组用于机器人状态估计的节点集合,适用于在三维空间内运动的机器人。该包主要提供两种非线性状态估计算法——扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF),分别对应于 `ekf_localization_node` 和 `ukf_localization_node` 节点[^4]。 #### 二、安装方法 对于 Ubuntu 20.04 上使用 Noetic 版本的 ROS 用户来说,在终端执行如下命令可以完成 `robot_localization` 的安装: ```bash sudo apt-get update && sudo apt-get install ros-noetic-robot-localization ``` 如果遇到无法安装的情况,请确认系统的软件源配置正确,并尝试更新后再重试上述指令[^3]。 #### 三、基本配置文件结构 为了使 EKF 或 UKF 正常工作,通常需要创建一个 YAML 文件来定义传感器输入和其他参数设置。下面是一个简单的例子,展示了如何为激光雷达里程计(odom)、IMU 数据以及 GPS 提供融合方案: ```yaml frequency: 30 sensor_timeout: 0.1 two_d_mode: false transform_time_offset: 0.0 print_diagnostics: true debug: false publish_tf: true map_frame: map # Static frame parented to the odom frame. odom_frame: odom # The estimated pose is published as a TF transform between odom and base_link frames. base_link_frame: base_footprint # Robot's "body" frame. world_frame: odom # This will be used for publishing the transformation. imu0: /imu/data # IMU topic name imu0_config: [false, false, false, true, true, true, false, false, false, true, true, true, true, true, true] imu0_queue_size: 5 imu0_remove_gravitational_acceleration: true odom0: /odometry/filtered # Odometer topic name (from LIDAR SLAM or wheel encoders) odom0_config: [true, true, true, false, false, false, false, false, false, false, false, true, false, false, false] gps: gps/fix # GPS fix message topic gps_config: [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false] navsat_transform: magnetic_declination_radians: 0.08796 # Your area’s magnetic declination from http://www.magnetic-declination.com/ yaw_offset: 1.570796327 # IMU and compass convention difference zero_altitude: true # Set altitude offset to zero broadcast_utm_transform_as_parent_frame: true # Broadcast UTM->odom tf instead of navsat/UTM->odom delay: 3 # Delay in seconds before first GPS measurement is accepted ``` 此配置文件中的每一项都应根据具体应用场景调整优化。例如,当只关心二维平面内的定位精度时,则可开启 `two_d_mode` 参数;而涉及到室外导航任务时则需引入来自 GNSS 设备的位置信息并合理设定对应的转换关系等。 #### 四、启动实例 假设已经编写好了名为 `localization.yaml` 的配置文件,那么可以通过 roslaunch 来加载这个配置并启动相应的节点: ```xml <launch> <!-- Load parameters --> <param name="use_sim_time" value="$(arg use_sim_time)" /> <node pkg="robot_localization" type="ekf_localization_node" name="ekf_se_odom" clear_params="true"> <rosparam command="load" file="$(find my_robot)/config/localization.yaml"/> </node> </launch> ``` 以上 XML 片段展示了一个典型的 launch 文件片段,其中包含了对 `ekf_localization_node` 的调用及其关联的参数读取方式。实际应用中可能还需要额外加入其他必要的组件和服务客户端等内容[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值