| name | localization |
| description | 轮式车辆定位系统 - GNSS/RTK、SLAM、IMU融合、里程计 |
| argument-hint | 车辆定位 OR GPS定位 OR 车辆SLAM OR RTK |
| user-invocable | true |
轮式车辆定位技能
用于开发轮式车辆的定位和地图系统
何时使用
当需要以下帮助时使用此技能:
- GNSS/RTK 定位
- 激光雷达 SLAM
- 多传感器融合
- 车辆里程计
快速参考
定位配置
wheeled_vehicle_localization:
gnss:
type: ublox / septentrio
rtk_base: local
slam:
type: lio_sam / FAST_LIO / cartographer
fusion:
method: ekf / ukf
sensors: [gnss, lidar, imu, wheel_odom]
GNSS/RTK 定位
RTK 配置
class RTKLocalization:
def __init__(self):
self.gnss = GNSSReceiver('/dev/ttyGNSS')
self.rtk_base = NTRIPClient('rtk.base.com', 2101)
def get_pose(self):
"""获取 RTK 定位"""
gnss_data = self.gnss.read()
if gnss_data.rtk_status == 'FIXED':
return self.enu_to_xy(gnss_data.position)
else:
return self.enu_to_xy(gnss_data.position, accuracy=3.0)
传感器融合
EKF 融合
class VehicleEKF:
def __init__(self):
self.state_dim = 6
self.ekf = ExtendedKalmanFilter(self.state_dim)
self.F = np.eye(6)
def predict(self, dt, v, omega):
"""预测步骤"""
self.F[0, 2] = -v * sin(self.state[5]) * dt
self.F[1, 2] = v * cos(self.state[5]) * dt
self.ekf.predict(self.F)
def update_gnss(self, gnss_pose):
"""GPS 更新"""
H = np.eye(2, 6)
R = np.diag([0.1, 0.1])
self.ekf.update(gnss_pose, H, R)
相关文档
./wheeled_vehicle/perception/SKILL.md - 感知系统
./wheeled_vehicle/navigation/SKILL.md - 导航系统
./wheeled_vehicle/action/SKILL.md - 运动控制