Contents
Errors when running imu_node
Error: Unable to open serial port
[ERROR] 1263326790.987557000: Unable to open serial port [/dev/ttyUSB0]. No such file or directory. The requested port does not exist. Is the IMU connected? Was the port name misspelled? (in microstrain_3dmgx2_imu::IMU:openPort) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting
Solution:
- Is the IMU connected?
- Was the port name misspelled?
Error: Permission denied
[ERROR] 1263327271.083389000: Unable to open serial port [/u/blaise/bar]. Permission denied. You probably don't have premission to open the port for reading and writing. (in microstrain_3dmgx2_imu::IMU:openPort) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting
Solution:
Use chmod to change the permissions on the port
You can use chmod as illustrated in the tutorial. You will also need execute access on the directories containing the device.
Use udev
For more permanent use, you should use udev to automatically set the correct permissions on the device.
Error: IMU keeps restarting with an incoherent sequence of errors
[ WARN] 1263339155.975117000: Exception thrown while trying to get the IMU reading. This sometimes happens if another process is trying to access the IMU port. You may try 'lsof|grep /dev/ttyUSB1' to find processes that have the port open. invalid checksum. Make sure the IMU sensor is connected to this computer. (in microstrain_3dmgx2_imu::IMU:receive) [ INFO] 1263339158.037993000: Connected to IMU [ Inertia-Link] model [ 4200] s/n [ 3046] options [ 5g 300d/s] [ INFO] 1263339158.038080000: Not calibrating the IMU sensor. Use the calibrate service to calibrate it before use. [ INFO] 1263339158.038120000: Initializing IMU time with offset 0.000000. [ INFO] 1263339158.049985000: IMU sensor initialized. [ WARN] 1263339161.050045000: Exception thrown while trying to get the IMU reading. This sometimes happens if another process is trying to access the IMU port. You may try 'lsof|grep /dev/ttyUSB1' to find processes that have the port open. timeout reached (in microstrain_3dmgx2_imu::IMU:read_with_timeout) [ INFO] 1263339163.107080000: Connected to IMU [ 5g 300d/s] model [ Inertia-Link] s/n [ 3046] options [ 5g 300d/s] [ INFO] 1263339163.107172000: Not calibrating the IMU sensor. Use the calibrate service to calibrate it before use. [ INFO] 1263339163.107219000: Initializing IMU time with offset 0.000000. [ INFO] 1263339163.122005000: IMU sensor initialized. [ERROR] 1263339163.251135000: Exception thrown while starting IMU. invalid checksum. Make sure the IMU sensor is connected to this computer. (in microstrain_3dmgx2_imu::IMU:receive) You may find further details at http://www.ros.org/wiki/microstrain_3dmgx2_imu/Troubleshooting
Solution:
- More than one process is trying to access the IMU.
Try running
lsof|grep /dev/ttyUSB0
to find all the processes that might be accessing the IMU. Kill the ones that shouldn't be running.
- That serial port is not connected to an IMU.
Try unplugging and replugging devices to figure out which port corresponds to the IMU. For a permanent setup use udev to assign consistent names to the ports.
Error: Invalid checksum
user@prX:rosrun imu_node imu_node [ INFO] 1236966577.039701000: Starting node [/imu] [ INFO] 1236966577.039923000: Started XML-RPC server on port [59905] [ INFO] 1236966577.039987000: Started TCPROS server on port [43106] [ INFO] 1236966578.049387000: Initializing IMU sensor. [ INFO] 1236966580.016606000: Exception thrown while starting IMU. MS_3DMGX2::IMU::receive: invalid checksum. Make sure the IMU sensor is connected to this computer.
Solution:
- Is the IMU connected?
- A device is connected but not the IMU.
Errors when bringing up the PR2
Error: Gyro Not Calibrated
The Calibration Status in the diagnostics indicates
Gyro not calibrated
The mechanism calibration scripts in mechanism_bringup output
Mechanism calibration complete, but IMU calibration failed.
Solution:
- Short term solution:
Use rosservice to manually trigger calibration and get on with your work:
rosservice call imu_node/calibrate
- Permanent solution:
In most cases, you will want to set the IMU's autocalibrate option to true so that the IMU calibrates at startup. Beware, the IMU should not move during calibration, or the calibration will be incorrect. The only case in which you do not want to do this is if you know that the IMU calibration is being triggered later in the bringup process.