-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Rep 145 (P II) #372
base: master
Are you sure you want to change the base?
Changes from all commits
a1ecf80
4610c29
63e385d
7f1e099
c9b95db
28e2d8d
01fbe11
9430752
5a8a322
d042ae6
7678158
d96957e
69e4a1c
5edfa14
36a48d3
ab0fb05
a7e5e6a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -53,7 +53,7 @@ Data Reporting | |||||
|
||||||
* All data from a sensor should be published with respect to a single consistent sensor frame. If any data is reported in an inconsistent frame of reference relative to the other data, the driver must transform it into the sensor frame before publishing. | ||||||
|
||||||
* Otherwise, all data should be published by the driver as it is reported by the device. Any subsequent modifications to the data (e.g. filtering, transformations) should be delegated to a downstream consumer of the data [3]_. | ||||||
* Otherwise, all data should be published by the driver as it is reported by the device. Any subsequent modifications apart from vendor-specific SDK functionality to the data (e.g. filtering, transformations) should be delegated to a downstream consumer of the data [3]_. | ||||||
|
||||||
* A prominent note should be made in the driver documentation regarding any internal data manipulation that does not comply with the requirements in this document. | ||||||
|
||||||
|
@@ -93,26 +93,50 @@ Topics | |||||
|
||||||
The following topics are expected to be common to many devices - an IMU device driver is expected to publish at least one. Note that some of these topics may be also published by support libraries, rather than the base driver implementation. All message types below are supplemented with a std_msgs/Header, containing time and coordinate frame information. | ||||||
|
||||||
* `imu/data` (sensor_msgs/Imu) | ||||||
|
||||||
* `imu/data_raw` (sensor_msgs/Imu) | ||||||
- General consolidated sensor data containing `AngularVelocity`, `Attitude`, and `LinearAcceleration` published at the natural frequency of attitude estimation. | ||||||
|
||||||
- Sensor output grouping accelerometer (`linear_acceleration`) and gyroscope (`angular_velocity`) data. | ||||||
* `imu/angular_velocity` (sensor_msgs/AngularVelocity) | ||||||
|
||||||
* `imu/data` (sensor_msgs/Imu) | ||||||
- Sensor output containing gyroscope data. | ||||||
|
||||||
* `imu/attitude` (sensor_msgs/Attitude) | ||||||
|
||||||
- Sensor output containing information about the attitude estimation. | ||||||
|
||||||
- Same as `imu/data_raw`, with an included quaternion orientation estimate (`orientation`). | ||||||
* `imu/linear_acceleration` (sensor_msgs/LinearAcceleration) | ||||||
|
||||||
- The sensor output of the measured linear acceleration. | ||||||
|
||||||
* `imu/mag` (sensor_msgs/MagneticField) | ||||||
|
||||||
- Sensor output containing magnetometer data. | ||||||
|
||||||
|
||||||
All message types provide a covariance matrix (see REP 103 [1]_) alongside the data field (`*_covariance`). If the data's covariance is unknown, all elements of the covariance matrix should be set to 0, unless overridden by a parameter. If a data field is unreported, the first element (`0`) of the covariance matrix should be set to `-1`. | ||||||
All message types provide a covariance matrix (see REP 103 [1]_) alongside the data field (`*_covariance`). If the data's covariance is unknown, all elements of the covariance matrix should be set to 0, unless overridden by a parameter. If a data field is unreported, the first element (`0`) of the covariance matrix should be set to `NaN`. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't quite get this. Should I imagine for example a sensor that can measure only in x-y, but not in z? The last sentence says I should set There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was language from the original one - I completely agree on closer examination I don't think this makes sense either. I think we should change this to be:
Thoughts? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
What about this wording? Does it sound clearer? |
||||||
The timestamp for these messages should reflect the best estimate of when the observation was made. | ||||||
It is expected that downstream users may want to use data from multiple of these topics. | ||||||
|
||||||
Namespacing | ||||||
''''''''''' | ||||||
|
||||||
By convention, IMU output topics are pushed down to a local namespace. The primary source of IMU data for a system is published in the `imu` namespace. Additional sources, such as secondary IMUs or unprocessed raw data should be published in alternative `imu_...` local namespaces. IMU driver implementations should take care to allow convenient remapping of the local namespace through a single remap argument (e.g. imu:=imu_raw), rather than separate remap calls for each topic. | ||||||
By convention, IMU output topics are pushed down to a local namespace. The primary source of IMU data for a system is published in the `imu` namespace. Additional sources, such as secondary IMUs or unprocessed raw data should be published in alternative `imu_...` local namespaces. IMU driver implementations should take care to allow convenient remapping of the local namespace through a single remap argument (e.g. imu:=imu_raw), rather than separate remap calls for each topic. The following are some standard namespaces to represent certain types of data: | ||||||
|
||||||
* `imu_raw` | ||||||
|
||||||
- Containing topics of raw data | ||||||
|
||||||
* `imu_unbiased` | ||||||
|
||||||
- Containing topics of unbiased data | ||||||
|
||||||
* `imu_biased` | ||||||
|
||||||
- Containing topics of biased data | ||||||
|
||||||
* `imu_compensated` | ||||||
|
||||||
- Containing topics of gravity compensated data | ||||||
|
||||||
Common Parameters | ||||||
----------------- | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#186 (comment) still applies here and hasn't been resolved:
I still don't think transforming the world frame is correct here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see that sentence in this document or in the previous discussion. I'm not sure what change or issue you have is 😦
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is a few lines above, chapter Transformation: https://github.com/ros-infrastructure/rep/blob/a7e5e6a337a859f8ca789e5aa65067b508ef466d/rep-0145.rst#transformation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous discussion:
@peci1
@mintar