use odom_combined in robot_localazation
[picture A]
Please Click https://photos.app.goo.gl/2CGtfb9PqSjeocp27
[picture B]
Please Click https://photos.app.goo.gl/takSsKQp5PBmP56F7
Hi guys, I am trying to migrate from robotposeekf to robotlocalazation. picture B is on robotposeekf on ros kinetic and picture A is robotlocalization in ros noetic. also I have attached my launch file from ros noetic is there any advice about how can i modify picture A to picture B?
I am using ubuntu 20.04 server
<launch>
<arg name="custom_param_file" default="$(find mini_turty3)/param/dummy.yaml"/>
<node pkg="tf" type="static_transform_publisher" name="map_to_odom_combined_broadcaster" args="-0.0 0.0 0.0 0.0 0.0 0.0 map odom_combined 100" />
<!-- JJ - add IMU -->
<node pkg="minimu9-ahrs" type="minimu9-ahrs-ros" name="minimu9" output="screen">
<param name="enable_odom_transform" value="0"/>
</node>
<node pkg="robot_localization" type="ekf_localization_node" name="robot_pose_ekf" output="screen">
<param name="output_frame" value="odom_combined"/>
<param name="freq" value="30.0"/>
<param name="sensor_timeout" value="1.0"/>
<param name="odom_used" value="true"/>
<param name="imu_used" value="true"/>
<param name="vo_used" value="false"/>
<param name="debug" value="false"/>
<param name="self_diagnose" value="false"/>
<!-- <remap from="imu_data" to="imu"/> -->
</node>
<!-- JJ - add EKF -->
<!-- JJ - add mini-turty robot model, state publishers -->
<arg name="model" />
<arg name="gui" default="False" />
<!-- <param name="robot_description" textfile="$(find mini_turty3)/launch/mini_turty.urdf" /> -->
<param name="robot_description" textfile="$(find mini_turty3)/launch/test.urdf" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" ></node>
<!-- JJ - add some scanner params initialization -->
<remap from="cmd_vel" to="/navigation_velocity_smoother/raw_cmd_vel"/>
<!-- JJ - add lidar -->
<node name="ydlidar_node" pkg="ydlidar_ros" type="ydlidar_node" output="screen">
<param name="port" type="string" value="/dev/ttyS0"/>
<!--<param name="baudrate" type="int" value="230400"/> -->
<param name="baudrate" type="int" value="230400"/>
<!-- JJ - changed to match what we've got in the urdf (base_laser)!
<param name="frame_id" type="string" value="laser_frame"/> -->
<param name="frame_id" type="string" value="base_laser"/>
<param name="angle_fixed" type="bool" value="true"/>
<param name="low_exposure" type="bool" value="false"/>
<param name="heartbeat" type="bool" value="false"/>
<param name="resolution_fixed" type="bool" value="true"/>
<param name="angle_min" type="double" value="-180" />
<param name="angle_max" type="double" value="180" />
<param name="range_min" type="double" value="0.08" />
<param name="range_max" type="double" value="16.0" />
<param name="ignore_array" type="string" value="" />
<param name="samp_rate" type="int" value="9"/>
<param name="frequency" type="double" value="7"/>
</node>
<!-- Map server -->
<arg name="map_file" default="$(env MINI_TURTY_MAP_FILE)"/>
<node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />
<arg name="initial_pose_x" default="0.0"/>-- Use 17.0 for willow's map in simulation -->
<arg name="initial_pose_y" default="0.0"/> <!-- Use 17.0 for willow's map in simulation -->
<arg name="initial_pose_a" default="0.0"/>
<include file="$(find mini_turty3)/launch/includes/amcl_rd.launch.xml">
<arg name="initial_pose_x" value="$(arg initial_pose_x)"/>
<arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
<arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
</include>
<include file="$(find mini_turty3)/launch/includes/move_base_rd.launch.xml">
<arg name="custom_param_file" value="$(arg custom_param_file)"/>
</include>
<!-- JJ - added base -->
<node pkg="mini_turty3" type="mini_turty3" name="mini_turty3" required="true">
<!-- JJ - add EKF
<param name="enable_odom_transform" value="1"/> -->
<param name="enable_odom_transform" value="0"/>
</node>
</launch>
Thank you
Asked by johnson_em on 2020-12-01 05:05:00 UTC
Answers
I'm a little confused. You are launching the EKF from robot_localization
, but giving it parameters that appear to be from robot_pose_ekf
.
<node pkg="robot_localization" type="ekf_localization_node" name="robot_pose_ekf" output="screen">
<param name="output_frame" value="odom_combined"/>
<param name="freq" value="30.0"/>
<param name="sensor_timeout" value="1.0"/>
<param name="odom_used" value="true"/>
<param name="imu_used" value="true"/>
<param name="vo_used" value="false"/>
<param name="debug" value="false"/>
<param name="self_diagnose" value="false"/>
</node>
Please show:
- Your robot_pose_ekf config
- Your robot_localization config (they should not be the same)
- A sample sensor message from every sensor input
Asked by Tom Moore on 2020-12-09 05:56:40 UTC
Comments
It is very difficult to read the transform trees in your pictures. Please, post larger versions and describe the differences. Your launch file is also difficult to read. Can you correct the formatting?
Asked by tryan on 2020-12-01 10:32:50 UTC
Hi, Thank for your reply. I have updated the post accordingly. Thank you
Asked by johnson_em on 2020-12-01 21:52:55 UTC
I assume you're only concerned with the missing
odom_combined
tobase_footprint
transform--not the caster. Are you getting any errors/warnings from theekf_localization_node
? Settingdebug = true
may yield more helpful information, too. Looking at therobot_localization
documentation,output_frame
andfreq
don't seem to be parameters. One thing to try is replacingwith
You may also need to change other frame names, and depending on your topic names, you may need to do some remapping, too. Use
rqt_graph
to see if nodes/topics are connected correctly. Make sure that the EKF node is getting data on topics it expects with correct frame names.Asked by tryan on 2020-12-02 10:18:42 UTC