Skip to content

Conversation

@rolker
Copy link

@rolker rolker commented Oct 20, 2025

The $PASHR sentense is used by many intergrated motion systems, especially in the marine domain, to report heading, pitch and roll data.

Copy link
Collaborator

@evenator evenator left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this contribution. I'm sorry that I'm only getting to review it now. I have a couple of comments that I'd like you to consider.

Comment on lines +204 to +207
("utc_time", convert_time, 1),
("heading", safe_float, 2),
("roll", safe_float, 4),
("pitch", safe_float, 5),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to this source, there are several other fields in the PASHR sentence. Why not include those here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I quickly updated the driver while working on a robot of opportunity. I didn't have the time to add the other fields and make sure they were being paresed properly. Unfortunately, I didn't record raw NMEA data so I could implement and test those extra fields now. I decided to create this PR since partial support for a new sentence is better than none in my opinion.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As it stands, I don't think I can accept this partial implementation. I understand if you don't have the time or resources to complete this work. Hopefully someone else will be able to.

if data['roll'] and data['pitch'] and data['heading']:
current_orientation = QuaternionStamped()
current_orientation.header.stamp = current_time
current_orientation.header.frame_id = frame_id
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you note above, this orientation is in a different frame than the heading. Having conflicting orientation conventions published with the same frame will be confusing to clients and could be problematic if both are fed into the same localization filter.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that it could cause confusion. Practically, if a device reports orientation using a $PASHR sentence, you shouldn't need to use a separate heading sentence. Maybe is should be documented that a user should use the heading or orientation output, but not both?
In my experience, devices that output a $PASHR sentence are high end integrated system that provide a navigation solution that does not need extre filtering so we don't use a localization filter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants