turtlebot3 + GPS localizaion
Hi I am new in ROS. I am using nvidia tx2 under ubuntu 16.04 LTS os . ROS version:kinetic
I find this package to fuse odom and imu data . and this is my test launch file
<launch>
<node pkg = "robot_localization" type="ekf_localization_node" name="ekf_localization">
<rosparam command="load" file="$(find test)/config/ekf_localization.yaml"/>
</node>
</launch>
ekf_localization.yaml:
frequency: 50
two_d_mode : true
publish_tf : false
odom0: /odom #odom source for respective robot
odom0_config: [false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]
odom0_differential: false
imu0: /imu #imu source for respective bot
imu0_config: [false, false, false,
false, false, false,
false, false, false,
false, false, true,
true, false, false]
imu0_differential: false
odom_frame: odom # fixed frame for robot (this can be same for both)
base_link_frame: base_link #fixed frame for robot (this should be diffenret for both)
world_frame: odom #again same is fine
I think I had made some mistakes , please help me to figure it out. Thanks.
Hi @Ray_student,
Could you explain a little bit what are you trying to do and what are your problems, because after reading the post I noticed you did not mention any problem or asked any question.
Hi thanks for your comment. I met most problem is I don't know what is correct result. now I just get a topic /odom_filter but no any information.
When you use the
efk
orufk
nodes you should provide first a config file to stablish all necessary parameters. In this file you provide, apart from the frames, the set of odometry topics to extract the odom info in order to perform the fusion. Once you provide the proper topics the node will output a topic in wich you will find the odom fusion from all of your sources. The default topic name isodometry/filtered
and you can remap it in the launch file.Hence, the correct result depends on your sep up. As I see in your config file you are performing a fusion with odom and imu data, taking with odom only
vx
,vy
,vz
, andvyaw
and with imuvyaw
andax
. This means that, with your set up, you are only using velocity and acceleration to perform localization.You will find more information about
robot_localization
package here.I know more about this knowledge . Very thank you. but I notice that if I launch this
the topic :
odometry/filtered
will get information .I don't understand the connection between this situation. Seems to be related to robot_state_publisher?
Mmm, the
robot_state_publisher
is a node that only generates thetf_tree
with therobot_description
(turtlebot in this case), the node itselft does not publish in any topic, only reads from/joint_states
. You can executerostopic info odometry/filtered
to check what connections are using that topic. However, the topic is getting some information because the localization node is using thetf_tree
generated to properly set up theodom
andmap
frames. The parampublish_tf
is a flag to activate the publish transformations andmap_frame
,odom_frame
,base_link_frame
andworld_frame
specifies four principal coordinate frames for the robot. Generally, if you are using Gazebo, you already have the tf transformbase_link-->base_footprint-->odom
, thats is why I think you have information in that topic. However, ideally you may want to, not only base the localization in tf but input all your odometry topic to let the kalman filter do its job in the way ...(more)Sorry for the late reply I am following this video now
about 22:18 he is finishing his launch file,I have some problems he is work on simulated environment and robot model not turtlebot3 , so I don’t know what he did first. I think this is necessary
And after referring to your statement ,robot_state_publisher is not necessary here?
I think your explanation is very clear, but I am still a little confused.
Hi @Ray_student,
So basically what he is doing is setting up the localization stack for the robot. He launches three instances of the
robot_localization
.efk_node
used to filter encoders odometry with IMU data to obtain a more precisse odometry from the robot in theodom
frame.efk_node
used to filter encoders odometry, IMU and GPS data to obtain the localization of the robot in themap
frame. The frame is important because the robot will be navigating in themap
frame NOT in theodom
frame.navstat_transform
node, that he uses to convert fix GPS coordiantes (latitude/longitude/altitude) into UTM coordinates that can be used in theefk_filter
in the map coordinate frame with the proper axis conventions stablished is ROS.Hence, with this set up, you have first a good odometry from encoders ...(more)