# RTK串口转ros **Repository Path**: hf26023/RTKserial2ros ## Basic Information - **Project Name**: RTK串口转ros - **Description**: wit的rtk转ros - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-18 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wit_rtk 这是一个基于 ROS(catkin)的 GNSS/NMEA 数据处理工作区。 ## 项目结构 - `src/nmea_to_navsatfix_pkg`:将 NMEA 串口数据解析并发布为 `NavSatFix`/`TimeReference`。 - `build`:catkin 构建产物。 - `devel`:catkin 开发环境产物。 ## 快速开始 1. 创建并进入 catkin 工作区(示例): ```bash mkdir -p ~/wit_rtk/src cd ~/wit_rtk/src ``` 2. 克隆项目: ```bash git clone git@gitee.com:hf26023/RTKserial2ros.git ``` 3. 回到工作区根目录并编译: ```bash cd ~/wit_rtk catkin_make ``` 4. 加载环境: ```bash source devel/setup.bash ``` 5. 运行节点(示例): ```bash rosrun nmea_to_navsatfix_pkg nmea_to_navsatfix.py ``` ## 参数说明 节点支持以下 ROS 私有参数(`~`): - `~port` - 作用:串口设备路径。 - 脚本默认值:`/dev/ttyACM0` - launch 示例值:`/dev/ttyTHS1` - 常见取值:`/dev/ttyUSB0`、`/dev/ttyACM0`、`/dev/ttyTHS1` - `~baudrate` - 作用:串口波特率。 - 默认值:`115200` - 常见取值:`9600`、`38400`、`57600`、`115200` - `~time_ref_use_gps` - 作用:控制 `/rtk/gps_time` 发布的是 GPS 时间还是 NMEA UTC 时间。 - 默认值:`true` - `true`:按 $GPS = UTC + gps\_leap\_seconds$ 进行换算后发布。 - `false`:直接发布 NMEA 提供的 UTC 时间。 - `~gps_leap_seconds` - 作用:GPS 与 UTC 的秒差(闰秒累计差值),仅在 `~time_ref_use_gps=true` 时生效。 - 默认值:`18` - 单位:秒 - 说明:该值可能随闰秒政策变化而调整,建议按接收机/系统时间配置保持一致。 可在 launch 中直接配置参数,参考: - [src/nmea_to_navsatfix_pkg/launch/nmea_to_navsatfix.launch](src/nmea_to_navsatfix_pkg/launch/nmea_to_navsatfix.launch) ## 发布消息与内容说明 ### 1) `/rtk/global_position/global` - 消息类型:`sensor_msgs/NavSatFix` - 主要字段与来源: - `header.stamp`:当前 ROS 时间(`rospy.Time.now()`)。 - `header.frame_id`:固定为 `world`。 - `latitude`:来自 NMEA GGA 的纬度。 - `longitude`:来自 NMEA GGA 的经度。 - `altitude`:由 `GGA.altitude + GGA.geo_sep` 计算得到(米)。 - `status.status`:来自 `GGA.gps_qual`(例如 4 通常表示 RTK 固定解)。 - `position_covariance`:基于 GGA 的 `HDOP` 估算得到,`VDOP` 取 `HDOP * 1.5`。 - `position_covariance_type`:当前设置为 `COVARIANCE_TYPE_UNKNOWN`。 ### 2) `/rtk/gps_time` - 消息类型:`sensor_msgs/TimeReference` - 主要字段与含义: - `header.stamp`:当前 ROS 时间(消息发布时间)。 - `header.frame_id`:固定为 `world`。 - `time_ref`:GNSS 时间参考。 - 当 `~time_ref_use_gps=true`:发布 GPS 时间,按 $GPS = UTC + gps\_leap\_seconds$ 换算。 - 当 `~time_ref_use_gps=false`:直接发布 NMEA UTC 时间。 - `source`: - `GNSS_GPS`(发布 GPS 时间时) - `GNSS_NMEA_UTC`(发布 UTC 时间时) ### 时间来源说明 - GGA 语句只有时分秒,没有日期; - 节点会先从 RMC 语句获取日期,再与 GGA 时间组合后生成完整时间戳; - 若当前尚未收到有效 RMC 日期,`/rtk/gps_time` 可能暂时不发布有效时间参考。