UWB based navigation
Greetings. I've few doubts regarding the use of UWB sensors only to perform robot localization and navigation.
We have only UWB, wheel encoders and IMU integrated into the custom built robot owing to few constrains with the availability of sensors right now.
UWB tag provides an absolute position with respect to an anchor.
I have the following nodes:
- Publishing xyz position from UWB tag
on topic of type
geometry_msgs/Pose
. - Calculating the
odometry from wheel encoders and IMU
and publishing /odom of type
nav_msgs/Odometry
as well as a tf from odom to base_link.
My prime point of doubt is about the transformations for UWB sensors. Do I have to publish a transform from each anchors and tag? If so, to which child, ie, odom or base_link?
Also as a secondary question, is there a possibility of using ROS' navigation stack to perform navigation with the setup as described above assuming if get the tfs correct? (without LiDaR/ camera)
When all the ROS nodes do not need to know the position of your tags you do not need the tf for them, but for navigation stack you will need a tf for the odometry message.
You should be able to use the navigation stack with this setup when you set both global and local costmap frame to /odom. But be aware that the odometry position should be continuous, without jumps as described in REP 105.
Are you suggesting to use the nav stack with /odom provided by wheel encoders & IMU, by modifying both global and local costmap frame to /odom thereby removing need for LiDAR/Camera?
In my case, I'm using the UWB system as global reference. In order to use the navigation stack, the needed tf from
map -> odom
is usually provided by localization packages such as AMCL based on/scan
data. In my case, does the absolute position of tag can be directly used, provided I'm publishing a tf frommap -> odom
? Thank you.Sorry, I missed that you got wheel encoders. So yes, in this case you can just use the position correction from UWB for map->odom transformation instead of amcl.