navsat_transform_node gives zero output and warning in robot_localisation_node gives a warning - could not obtain transform
Hello I am new to ROS and using Robot_localisation package. As given in the tutorial I ran two instances of ekf_localisation. My navsat transform node gives zero output and I keep getting a warning : Could not obtain transform from gps_link to base_link. Error was "gps_link" passed to lookupTransform argument source_frame does not exist.
My launch file is :-
<!-- Test launch file for two EKF instances and one navsat_transform instance -->
<launch>
<node pkg="tf2_ros" type="static_transform_publisher" name="bl_imu" args="0 0 0 0 0 0 1 base_link imu_link" />
<!-- Local (odom) instance -->
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization_local" clear_params="true">
<param name="frequency" value="30"/>
<param name="sensor_timeout" value="0.1"/>
<param name="two_d_mode" value="true"/>
<param name="map_frame" value="map"/>
<param name="odom_frame" value="odom"/>
<param name="base_link_frame" value="base_link"/>
<param name="world_frame" value="odom"/>
<param name="transform_time_offset" value="0.0"/>
<param name="odom0" value="/RosAria/pose"/>
<param name="imu0" value="/imu_data"/>
<rosparam param="odom0_config">[false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]</rosparam>
<rosparam param="imu0_config">[false, false, false,
true, true, true,
false, false, false,
true, true, true,
true, true, true]</rosparam>
<param name="odom0_differential" value="false"/>
<param name="imu0_differential" value="false"/>
<param name="odom0_relative" value="false"/>
<param name="imu0_relative" value="false"/>
<param name="imu0_remove_gravitational_acceleration" value="true"/>
<param name="print_diagnostics" value="true"/>
<param name="odom0_queue_size" value="10"/>
<param name="imu0_queue_size" value="10"/>
<param name="debug" value="false"/>
<param name="debug_out_file" value="debug_ekf_localization.txt"/>
<remap from="/odometry/filtered" to="/odometry/filtered/local"/>
</node>
<!-- Global (map) instance -->
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization_global" clear_params="true">
<param name="frequency" value="30"/>
<param name="sensor_timeout" value="0.1"/>
<param name="two_d_mode" value="true"/>
<param name="map_frame" value="map"/>
<param name="odom_frame" value="odom"/>
<param name="base_link_frame" value="base_link"/>
<param name="world_frame" value="map"/>
<param name="transform_time_offset" value="0.0"/>
<param name="odom0" value="/RosAria/pose"/>
<param name="odom1" value="/odometry/gps"/>
<param name="imu0" value="/imu_data"/>
<rosparam param="odom0_config">[false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]</rosparam>
<rosparam param="odom1_config">[true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false]</rosparam>
<rosparam param="imu0_config">[false, false, false,
true, true, true,
false, false, false,
true, true, true,
true, true, true]</rosparam>
<param name="odom0_differential" value="false"/>
<param name="odom1_differential" value="false"/>
<param name="imu0_differential" value="false"/>
<param name="odom0_relative" value="false"/>
<param name="odom1_relative" value="false"/>
<param name="imu0_relative" value="false"/>
<param name="imu0_remove_gravitational_acceleration" value="true"/>
<param name="print_diagnostics" value="true"/>
<param name="odom0_queue_size" value="10"/>
<param name="odom1_queue_size" value="10"/>
<param name="imu0_queue_size" value="10"/>
<param name="debug" value="false"/>
<param name="debug_out_file" value="debug_ekf_localization.txt"/>
<remap from="/odometry/filtered" to="/odometry/filtered/global"/>
</node>
<!-- navsat_transform -->
<node pkg="robot_localization" type="navsat_transform_node" name="navsat_transform" respawn="true" output="screen">
<param name="frequency" value="30"/>
<param name="delay" value="3"/>
<param name="magnetic_declination_radians" value="0.05"/>
<param name="yaw_offset" value="0"/>
<param name="zero_altitude" value="true"/>
<param name="broadcast_utm_transform" value="true"/>
<param name="publish_filtered_gps" value="true ...
Thanks for this. There's an issue on the GH page for
r_l
regarding this very thing, so I'll look into it today or tomorrow.Hello Tom, thanks for replying so quick. I included a static transform of base_link ->gps_link in the launch file and the warning message stopped also navsat_transform node gave the output in robot's local frame .
this was the line I added in the launch file <node pkg="tf2_ros" type="static_transform_publisher" name="bl_gps" args="0 0 0 0 0 0 1 base_link gps_link"/> but I am getting terrible output from the odometry/filtered/global
hi, @Anirvan0102, can you check your
/odometry/gps
topic ? is it NAN when you set use_odometry_yaw= false in navsat_transform_node? I met the same problem with you. but I just got one warning info of it, because I set the static tf transform.Hey asimay_y, it is not NAN but the pose was exact zero and it was not changing as I was changing my robot's position. Later I set the static tf and I was getting the ouput of odometry/gps but my odometry/filtered/global was giving poor estimate.
can you share your rosbag files and node graph? I also get poor estimate, and digging the cause..
Where is the attached bag file?
Sure asimay_y ... here is my bag file https://drive.google.com/open?id=0B3o... . My launch file is https://drive.google.com/open?id=0B3o... . I will be thankful to you if you could find out some solution, I have been stuck here for quite a time