ArduPilot / ArduPilot/ardupilot

AP_DDS: Inconsistent header frame_id values in published topics

Open
#33,993 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
15.9k
Forks
21.4k
Avg merge
3d 17h
Merged PRs (30d)
119

Description

## Bug Report

### Issue details

In `AP_DDS_Client.cpp`, multiple published ROS 2 topics set incorrect or inconsistent `header.frame_id` values, violating ROS frame conventions.

For `/ap/pose/filtered`, frame_id is set to `BASE_LINK_FRAME_ID`. However, the `frame_id` of a `PoseStamped` message represents the parent reference frame in which the vehicle's position is measured. Since this message represents the vehicle's position and orientation within ArduPilot's local NED frame, the header `frame_id` should be set to a world-fixed frame such as `odom` or `map`.

https://github.com/ArduPilot/ardupilot/blob/a4da362f613b9b9ad30533af11679ff6b9519043/libraries/AP_DDS/AP_DDS_Client.cpp#L338

Inconsistencies exist across several other topics as well. For example, `/ap/geopose/filtered` and `/ap/gps_global_origin/filtered` use `BASE_LINK_FRAME_ID` instead of standard geodetic reference `earth` frame. furthermore, for `/ap/twist/filtered`, data belonging to two different reference frames is combined into a single `TwistStamped` message. The linear velocity is defined in the world-fixed local NED frame, whereas the angular velocity is in the body frame.

**Version**

copter v4.6.3

**Platform**

[x] All

[ ] AntennaTracker

[ ] Copter

[ ] Plane

[ ] Rover

[ ] Submarine

Contributor guide

Open the contributing guide

Research direction

Start in AP_DDS_Client.cpp around the referenced line and inspect the publishers for the affected pose, geopose, GPS-origin, and twist topics. Compare each header and twist component with ROS frame conventions; done means the affected topics consistently identify their reference frames and no longer combine data from different frames without resolving that distinction.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
robotics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.