The .urdf .xacro for cameras usually have a separate "optical" or similar link and joint to rotate the RDF optical axis to point the same as the physical FLP axis. Perhaps one can do a camera IMU link/joint to accomplish the same for the camera's IMU.
James H Phelan "Nihil est sine ratione cur potius sit quam non sit" Leibniz
Regarding REP-103 that defines ROS Axis orientation, X Forward, y Left, z uP referred to as FLP. So, I have a OAK-D-Lite Camera with included IMU. But guess what it publishes its data using the standard Camera Coordinate System, x Right, y Down, z Forward, i.e RDF, and the Axis Rotation in the Quaternion. So I figure to use this IMU on a Robot, there needs to be a running Node that subscribes to RDF and Publishes FLP Quaternion data. I made a stab at creating code, using Google AI, a ROS2 package that does the Axis only -untested! I ran out of time to create the other quaternion data, but presumable doable. As anybody encountered this requirement and/or dev the code? Ross (It can be said why not use a separate $10 IMU ? Certainly - I have a MPU9250 working great) --
You received this message because you are subscribed to the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hbrobotics+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/5e987021-1550-4fd0-b2b3-99ba5de3f6acn%40googlegroups.com.
static_transform_publisher
.
This tool publishes a fixed transform between two coordinate frames,
which corrects the IMU's native frame to align with standard ROS
conventions (Right-Handed, Z-up) and your robot's base frame. robot_localization
, which expect specific coordinate frame conventions for proper fusion with other sensor data. oak_imu_frame
) to a standard frame (imu_link
or base_link
) that follows REP-103.depthai_ros_driver
and echo the IMU topic: ros2 topic echo /oak/imu/data
.linear_acceleration
). It should be -9.8 m/s^2
along the axis that points towards the ground. Then, rotate the camera
around each axis and observe how the angular velocity changes.base_link
for your robot). For example, if the IMU's native X-axis is pointed up,
you'll need to apply a rotation to align it with the Z-axis. <launch>
<node pkg="tf2_ros" exec="static_transform_publisher" name="imu_transform_publisher" args="0 0 0 1.5708 0 1.5708 oak_imu_frame imu_link" />
</launch>
args
: The arguments define the transform. The standard format is x y z yaw pitch roll parent_frame child_frame
.1.5708
rad = 90 degrees) are illustrative. The correct values will depend on
your specific camera model and mounting orientation. You must substitute
the correct translation and rotation values based on your findings in
Step 1.oak_imu_frame
with the frame ID that the depthai_ros_driver
uses for its IMU data, and imu_link
with the REP-103 compliant frame you want to use. robot_localization
. robot_localization
setup:ekf_node
in robot_localization
can be configured via a YAML file.ekf_node
is configured to listen to the correct IMU topic, which might be a remapped topic if you also use an imu_transformer
node.# Example for `ekf_filter_node.yaml`
imu0: true
imu0_config: [false, false, false, # x, y, z position
true, true, true, # roll, pitch, yaw orientation
true, true, true, # x, y, z angular velocity
false, false, false] # x, y, z linear acceleration
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/189e7f48-3931-497e-8aec-f1f16568dee5n%40googlegroups.com.
On Sep 15, 2025, at 6:53 PM, 'Ross Lunan' via HomeBrew Robotics Club <hbrob...@googlegroups.com> wrote:
Thank u very much for your analysis, suggestions, and references. Your assumptions as to my problem statement are right on. Yes I have a newer version of the Lite that has a Velocity & Accelerometer sensor that correctly publishes the msg:Imu data but on the xyz coordinates not compliant with REP-103. I’ll give a your advice a try to write a Node to republish that data correctly so Nav 2 fusion package can use it. I’m surprised this issue has cropped before now. Ross
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/6db21e51-632f-40cd-86a2-ad2b78b2bf74n%40googlegroups.com.
On Sep 15, 2025, at 6:53 PM, 'Ross Lunan' via HomeBrew Robotics Club <hbrob...@googlegroups.com> wrote:
Thank u very much for your analysis, suggestions, and references. Your assumptions as to my problem statement are right on. Yes I have a newer version of the Lite that has a Velocity & Accelerometer sensor that correctly publishes the msg:Imu data but on the xyz coordinates not compliant with REP-103. I’ll give a your advice a try to write a Node to republish that data correctly so Nav 2 fusion package can use it. I’m surprised this issue has cropped before now. Ross
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/6db21e51-632f-40cd-86a2-ad2b78b2bf74n%40googlegroups.com.
On Sep 17, 2025, at 3:10 AM, Michael Wimble <mwi...@gmail.com> wrote:
Well, yes, but you might be thinking that the data produced by the sensor must be oriented to rep 103. That’s not true. Sensor data can be in any orientation it wants, as long as it is tagged with a frame id. And there needs to be someone generating a ’tf’ message that connects that frame id to some link in the tf tree. The easiest way to do all of this is to create a URDF entry that declares a link with the same name as the frame id in the sensor message. And then the URDF declares a joint that connects that link to some other link in the tree of frames. If you do it in the URDF, then the robot_state_publisher, when it reads the URDF (usually after being preprocessed by xacro), the robot_state_publisher turns all the static joints into a set of static transforms so you don’t have to create a static transform yourself. For all the non-static links (like wheels), robot_state_publisher creates a listener for joint_state messages and, with that data, creates a dynamic transform for the link.
--
You received this message because you are subscribed to a topic in the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/hbrobotics/0krhRs54tlA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to hbrobotics+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/2FCABFED-8472-4E0B-9D04-882C45D07156%40gmail.com.