ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Gyro and Odometry Calibration Not Effective?

asked 2011-10-25 16:59:54 -0600

machineherder gravatar image

updated 2011-10-26 10:04:16 -0600

I have a turtlebot, which was obtained assembled from Clearpath Robotics. I have been trying to run the Gyro and Odometry Calibration, and have been getting fairly large corrections for the gyro scale correction multiplier. To test these results, I have been setting the corrections with rosparams, and then re-running the calibration. I expect that on the next run, the corrections multiplier will be closer to 1.0, but it always remains in the range of 1.25-1.5 . The raw gyro value from the dashboard is about 509, and seems to vary appropriately when the robot is manually twisted. Any ideas?

Here is what typical run looks like for me:

turtlebot@turtlebot-0284:~$ rosparam set /turtlebot_node/gyro_scale_correction 1.43
turtlebot@turtlebot-0284:~$ rosparam set /turtlebot_node/odom_angular_scale_correction .943
turtlebot@turtlebot-0284:~$ roslaunch turtlebot_calibration calibrate.launch
... logging to /home/turtlebot/.ros/log/ce9563ee-ff80-11e0-947c-485d60755842/roslaunch-turtlebot-0284-2218.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://10.0.12.151:41995/

SUMMARY
========

PARAMETERS
 * /openni_camera/depth_time_offset
 * /openni_camera/image_mode
 * /kinect_laser/output_frame_id
 * /openni_camera/depth_rgb_translation
 * /pointcloud_throttle/max_rate
 * /openni_camera/depth_mode
 * /openni_camera/shift_offset
 * /scan_to_angle/min_angle
 * /kinect_laser/min_height
 * /openni_camera/depth_rgb_rotation
 * /kinect_laser_narrow/max_height
 * /scan_to_angle/max_angle
 * /kinect_laser/max_height
 * /rosdistro
 * /openni_camera/projector_depth_baseline
 * /kinect_laser_narrow/output_frame_id
 * /rosversion
 * /openni_camera/debayering
 * /openni_camera/depth_frame_id
 * /openni_camera/image_time_offset
 * /openni_camera/depth_registration
 * /kinect_laser_narrow/min_height
 * /openni_camera/rgb_frame_id

NODES
  /
    kinect_breaker_enabler (turtlebot_node/kinect_breaker_enabler.py)
    openni_manager (nodelet/nodelet)
    openni_camera (nodelet/nodelet)
    pointcloud_throttle (nodelet/nodelet)
    kinect_laser (nodelet/nodelet)
    kinect_laser_narrow (nodelet/nodelet)
    scan_to_angle (turtlebot_calibration/scan_to_angle.py)
    turtlebot_calibration (turtlebot_calibration/calibrate.py)

ROS_MASTER_URI=http://10.0.12.151:11311

core service [/rosout] found
process[kinect_breaker_enabler-1]: started with pid [2240]
process[openni_manager-2]: started with pid [2241]
process[openni_camera-3]: started with pid [2242]
process[pointcloud_throttle-4]: started with pid [2243]
process[kinect_laser-5]: started with pid [2245]
process[kinect_laser_narrow-6]: started with pid [2252]
process[scan_to_angle-7]: started with pid [2254]
process[turtlebot_calibration-8]: started with pid [2269]
[INFO] [WallTime: 1319602903.535752] has_gyro True
[INFO] [WallTime: 1319602903.646246] Estimating imu drift
[INFO] [WallTime: 1319602903.947774] Still waiting for imu
[INFO] [WallTime: 1319602904.249399] Still waiting for scan
[INFO] [WallTime: 1319602904.551117] Still waiting for scan
[kinect_breaker_enabler-1] process has finished cleanly.
log file: /home/turtlebot/.ros/log/ce9563ee-ff80-11e0-947c-485d60755842/kinect_breaker_enabler-1*.log
[INFO] [WallTime: 1319602904.853371] Still waiting for scan
[INFO] [WallTime: 1319602905.154970] Still waiting for scan
[ INFO] [1319602905.218424205]: [/openni_camera] Number devices connected: 1
[ INFO] [1319602905.219076453]: [/openni_camera] 1. device on bus 001:14 is a Xbox NUI Camera (2ae) from Microsoft (45e) with serial id 'A00362A03027048A'
[ WARN] [1319602905.222852677]: [/openni_camera] device_id is not set! Using first device.
[ INFO] [1319602905.275323325]: [/openni_camera] Opened 'Xbox NUI Camera' on bus 1:14 with serial number 'A00362A03027048A'
[ INFO] [1319602905.321096537]: rgb_frame_id = 'kinect_rgb_optical_frame' 
[ INFO] [1319602905.327575678]: depth_frame_id = 'kinect_depth_optical_frame' 
[INFO] [WallTime: 1319602905.456490] Still waiting for scan
[INFO] [WallTime: 1319602905.758331] Still waiting for scan
[INFO] [WallTime: 1319602906.061055] Still waiting for scan
[INFO] [WallTime: 1319602906.362886] Still waiting for scan
[INFO] [WallTime: 1319602906.664503] Still waiting for scan
[INFO] [WallTime: 1319602917.274803] Still waiting for imu
[INFO] [WallTime: 1319602917.577144] Still waiting for scan
[INFO] [WallTime: 1319602917 ...
(more)
edit retag flag offensive close merge delete

Comments

@machineherder so how did you actually solve the issue permanently? Using dynamic_reconfigure only applies while the Turtlebot is moving/calibrating doesn't it? I'm also having a trouble in calibration so your experience could be appreciated thx!
130s gravatar image 130s  ( 2011-11-21 14:18:08 -0600 )edit

hi, can you please share your launch file of calibration? thanks!

asimay_y gravatar image asimay_y  ( 2016-09-29 03:50:16 -0600 )edit

5 Answers

Sort by » oldest newest most voted
1

answered 2011-10-26 08:39:21 -0600

mmwise gravatar image

The turtlebot_node will not read from the parameter server when the parameters change unless you restart the node or use dynamic_reconfigure. If you would like to change the parameters while the turtlebot_node is running please use dynamic_reconfigure, which forces turtlebot_node to read from the parameter sever again.

rosrun dyanmic_reconfigure reconfigure_gui
edit flag offensive delete link more
2

answered 2011-10-25 20:05:16 -0600

tfoote gravatar image

I can think of two things which could be a problem.

First make sure that the roscore is still running between executing the rosparam calls and launching the calibration so that the parameters persist.

Secondly, I can't tell what are your parameters before you run the calibration? Make sure you're multiplying the result by the previous value not just overriding it.

edit flag offensive delete link more

Comments

1
@tfoote Let me share what I'm seeing on my Turtlebot. Calibration got worse when I multiplied the result by the current value...And at some point after it became so, changing parameters didn't seem to have taken effect. So eventually I rebooted OS and set back params to default (Contd.)
130s gravatar image 130s  ( 2011-11-22 06:44:28 -0600 )edit
(Contd.) (1.0 for both gyro and odom), then it started showing better result, I modified the params with the result, then got better. Maybe I should ask this as a different question but just wonder if there're any tips.
130s gravatar image 130s  ( 2011-11-22 06:46:39 -0600 )edit
1

answered 2012-12-05 17:16:40 -0600

WB gravatar image

This is what I have done with turtlebot's calibration, and finally got a good map building:

  1. Firstly run rosrun dynamic_reconfigure reconfigure_gui, check your part number of your Gyro then change. Keep other parameters same.
  2. put your turtlebot in front wall, run roslaunch turtlebot_calibration calibrate.launch, then you will get multiply values for Gyro_scale_correction and Odom_angular_scale_correction. Do multiplying.
  3. rerun rosrun dynamic_reconfigure reconfigure_gui, set a new Gyro_scale_correction and Odom_angular_scale_correction. Back to step 2 until you get both multiply values are close to 1.

This is my result after 8 times running calibration: My Gyro part number is ADXRS652 ( setting is 250 )

  • Gyro_scale_correction : 1.4472
  • Odom_angular_scale_correction: 1.04

Remember edit turtlebot.launch file with 2 new parameters.

edit flag offensive delete link more
0

answered 2011-11-23 19:13:31 -0600

AJ gravatar image

I tried to follow the tutorial and the dynamic reconfigure method. What both of them did was they changed the values of both ros parameters...

Seeing this had no result, I tried to echo rostopic "/turtlebot_node/parameter_descriptions", the values were not changed. But it was modified under "/turtlebot_node/parameter_updates", but there was no effect of the calibration. The method seems to be ineffective.

So I tried to find out, which file is setting the value when the node starts. The file was : /opt/ros/diamondback/stacks/turtlebot/turtlebot_node/src/turtlebot_node/cfg/TurtleBotConfig.py I modified the correction values there. This method helps in changing the correction values.

But my gyro calibration is still wrong. It got better from last time. But still, I cant get a good result.

Anybody has any clue on this ?

edit flag offensive delete link more

Comments

its like, if I rotate the robot 90 deg, it turns only like for 75+ deg in RViz..
AJ gravatar image AJ  ( 2011-11-23 19:19:05 -0600 )edit
0

answered 2013-04-26 07:16:39 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

Hi, have the same problem and now is solved . I have the turtlebot that I bougth from Irobotics.

I tried with different ros versions (electric, fuerte), and several different installations. The maps were a disaster, and each time I try a calibration, always told me to gyro_scale_correction of more than 1.2 multiplication, also while the bot was doing the calibration sometimes I see a message: Imu error: -30 percent, or similar.

I have a Willow Garage power board . this one http://store.iheartengineering.com/ihe-0200-0000-fa00.html

but neves i was able to identify any chip number there.

What it worked: 1- using the dinamically configuration for the gyro calibration : a) Set the Gyro measurement range on 250 b) Set Gyro_scale_correction on 2.4 c) run the calibration, and now all is good, with small percent changes

but every time I restart the turtlebot service or restart the laptop, I have to Dinamcally set the gyro rate from 150 to 250, I changet this paramater also in /opt/ros/fuerte/stacks/turtlebot/turtlebot_node/src/turtblebot_node/ gyro.py
the parameter from 150 to 250.
but doesnt read it. any suggestion to leave this parameter working on my bot?

cheers ezex

edit flag offensive delete link more

Comments

See the final instructions on the Tutorial for how to make the parameters persist: http://www.ros.org/wiki/turtlebot_calibration/Tutorials/Calibrate%20Odometry%20and%20Gyro

tfoote gravatar image tfoote  ( 2013-04-26 07:33:22 -0600 )edit

你在minimal.launch里面使用标签设定Gyro_scale_correction的值为2.4,Gyro measurement range的值为250就可以了

张京林 gravatar image 张京林  ( 2015-10-26 03:04:45 -0600 )edit

Question Tools

Stats

Asked: 2011-10-25 16:59:54 -0600

Seen: 4,240 times

Last updated: Sep 29 '16