0
$\begingroup$

Rosanswers logo

Hi,

I'm somewhat new to ROS, and robotics in general. Recently I've been trying to set up a Videre Erratic robot equipped with a Hokuyo URG-04LX laser rangefinder for navigation and object recognition. While using slam_gmapping, I noticed there seemed to be some major odometry issues (most evident while turning) that were interfering heavily with building a coherent map, and searching about the problem told me that I should run a test by rotating the robot while the fixed frame in rviz is set to /odom. Apparently the laser scans are supposed to form a crude but legible map, but these were the results:

Still:

image

Moving:

image

So yeah, for some reason the laser scan map seems to be rotating as well (when it's not supposed to be, right?) This also mirrors what happens when I turn in place while slam_gmapping is running. This is done using the bare minimum necessary to get a working odometry test: launching erratic_player, running rviz, and then turning the robot (using erratic_teleop, my own basic code, and just manually turning it all led to the same results.) Everything is being done through SSH, but the same problem persists if running directly as well. Here's my erratic_base.launch file:

<launch>

<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 0 0 0 0 base_footprint base_link 100" />

<node pkg="tf" type="static_transform_publisher" name="link2_broadcaster" args="0 0 0 0 0 0 base_link laser 100" />

<node name="erratic_base_driver" pkg="erratic_player" type="erratic_player" output="screen" >
    <remap from="odom" to="odom"/>
    <remap from="battery_state" to="battery_state"/>
    <param name="port_name" type="str" value="/dev/ttyUSB0"/>
    <param name="enable_ir" type="bool" value="False"/>
    <param name="odometry_frame_id" type="str" value="odom"/>
</node>

<group ns="hokuyo">
    <param name="calibrate_time" type="bool" value="false" />
    <param name="hokuyoLaserModel04LX" type="bool" value="true" />
    <param name="min_ang" type="double" value="-2.08621" />
    <param name="max_ang" type="double" value="2.09234" />
</group>

<node name="hokuyo" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">

</node>

</launch>

Is there any way I can fix this?

Thanks,
Sri


Originally posted by SriK on ROS Answers with karma: 3 on 2011-12-01

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I am running into the same problem, though I am using a skid steer bot. For skid steering, odometry is not very reliable by itself when turning, especially since the wheels slip differently on different surfaces.

I think (hope) using robot_pose_ekf to get a better odom estimate will help. Or, since you already have a laser, try the laser_scan_matcher


Originally posted by phil0stine with karma: 682 on 2011-12-02

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by SriK on 2011-12-04:
laser_scan_matcher seemed to help a lot; it's working pretty great now. Thanks!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.