ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
I think your problem is that you should have two different nodes publishing two different transform :
odom -> base_link
transformmap -> odom
transformKnow what's really important is that the map -> odom
transform doesn't represent anything on its own. It exist purely because the tf2 system cannot have two parent to a frame. In fact, the map -> base_link
transform (that go through odom) and the odom -> base_link
transform are the one representing something.
The map -> base_link
transform represent the best localization estimation but can jump, while the odom -> base_link
transform is the best continuous estimation that you have.
Knowing all this, your problem mighth be that you have nothing publishing the map -> odom
transform.
To solve your issue without adding a node, you could go with this parameter for your ekf :
map_frame: map
odom_frame: base_link
base_link_frame: base_link
world_frame: map
Tell me if this did the trick !
Can't make my navsat_transform node publishing utm_transform. And odometry/filtered from EKF always has Pose-Position X Y and Z = 0 (although Orientation on Z isn't 0) - is it right at all?
Your pose.position represent your position, not orientation, so Z = 0 means your at a zero level altitude, but I think it just means navsat_transform does not calculate the altitude.
I also believe that the documentation of navsat transform node is not updated according to all the changes made and that the parameter you need to set to true might not be broadcast_utm_transform: true
but broadcast_cartesian_transform_: true
(along with broadcast_cartesian_transform_as_parent_frame_: true
)
What strange is that you should have gotten a RCLCPP WARN saying :
Parameter 'broadcast_utm_transform' has been deprecated. Please use 'broadcast_cartesian_transform' instead.
2 | No.2 Revision |
I think your problem is that you should have two different nodes publishing two different transform :
odom -> base_link
transformmap -> odom
transformKnow Now what's really important is that the map -> odom
transform doesn't represent anything on its own. It exist purely because the tf2 system cannot have two parent to a frame. In fact, the map -> base_link
transform (that go through odom) and the odom -> base_link
transform are the one representing something.
The map -> base_link
transform represent the best localization estimation but can jump, while the odom -> base_link
transform is the best continuous estimation that you have.
Knowing all this, your problem mighth be that you have nothing publishing the map -> odom
transform.
To solve your issue without adding a node, you could go with this parameter for your ekf :
map_frame: map
odom_frame: base_link
base_link_frame: base_link
world_frame: map
Tell me if this did the trick !
Can't make my navsat_transform node publishing utm_transform. And odometry/filtered from EKF always has Pose-Position X Y and Z = 0 (although Orientation on Z isn't 0) - is it right at all?
Your pose.position represent your position, not orientation, so Z = 0 means your at a zero level altitude, but I think it just means navsat_transform does not calculate the altitude.because you don't have anything giving your ekf an altitude. If you want to get it from the gps, your imu0 config should be three true on the first line.
I also believe that the documentation of navsat transform node is not updated according to all the changes made and that the parameter you need to set to true might not be broadcast_utm_transform: true
but broadcast_cartesian_transform_: true
(along with broadcast_cartesian_transform_as_parent_frame_: true
)
What strange is that you should have gotten a RCLCPP WARN saying :
Parameter 'broadcast_utm_transform' has been deprecated. Please use 'broadcast_cartesian_transform' instead.