Ask Your Question
2

3DM-GX3-25 throws std::runtime_error() "Time is Out of Dual 32-bit range" on Ros Fuerte/Ubuntu Precise

asked 2012-08-24 11:40:53 -0600

jdavis gravatar image

I was trying to get the 3DM-GX3-25 Inertial sensor up and running on Ros Fuerte/Ubuntu Precise using the Microstrain 3dM-GX2 IMU node in the Microstrain 3dM-gX2 package.

When I run the node, I get the following error:


jdavis@MyUbuntu:~/fuerte_workspace/sandbox/microstrain_3dmgx2_imu$ rosrun microstrain_3dmgx2_imu imu_node

[ INFO] [1345843227.742138299]: Connected to IMU [ 3DM-GX3-25] model [ 6223-4220] s/n [
6223.06644] options [ 5g 300d/s] [ INFO] [1345843227.742460665]:

Calibrating IMU gyros. terminate called after throwing an instance of 'std::runtime_error' what(): Time is out of dual 32-bit range Aborted (core dumped)


I looked it up on answers.ros.org and saw that a similar error was thrown in rosbag file playing (this one) and (this one).

The IMU timestamps are measured in Uint64_ts and converted to Doubles for calculations, before converting them back to Uint64_t. Is this what I should be looking at?

Any ideas on how I can get around this would be great!

edit retag flag offensive close merge delete

Comments

1

I got it to work by replacing data.header.stamp = ros::Time::now().FromNSec(time) to data.header.stamp = ros::Time::now() in the function getData() inside the imu_node.cc source file for the node. Conversion to ros::time threw the error?

jdavis gravatar imagejdavis ( 2012-08-27 09:34:41 -0600 )edit

Thanks, this solution worked for me too. I wish they have a look at it and integrate the solution or a better solution to the driver.

martimorta gravatar imagemartimorta ( 2013-04-15 05:44:20 -0600 )edit

@jdavis I suggest you file a ticket here: https://github.com/ros-drivers/microstrain_3dmgx2_imu/issues so that the maintainers know there is an issue. Before doing so, try to see if Groovy includes a fix for this issue.

Eric Perko gravatar imageEric Perko ( 2013-04-15 15:17:03 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2013-04-15 15:29:19 -0600

Chad Rockey gravatar image

Is this the same issue?

https://code.ros.org/trac/ros-pkg/ticket/5601

If so, just apply that patch, or do apply like it was fixed for Groovy:

https://github.com/ros-drivers/microstrain_3dmgx2_imu/commit/efcf5ef011a97f8bda415616075ed85a5bfcb962

edit flag offensive delete link more
0

answered 2014-11-18 17:19:19 -0600

Ryan gravatar image

I'm adding a note here because this was the top Google result when I searched for the term. In my case, I ended up stripping out all calls to the Time library I could directly find, including the basic now() calls, without effect. I hypothesize it may have had to do with VM clock jitter, as moving to physical hardware fixed it immediately.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2012-08-24 11:40:53 -0600

Seen: 2,711 times

Last updated: Nov 18 '14