--Mods to rover_server_log() appear to work as intended.  Still have a few extra messages from the 3rd sensor to start appearing in rapid succession (< requested interval, according to Gumstix timestamp) after connection (seems like a serial buffer clearing out).  Implemented small 'null' loop on rover in run-imu and run-encoders that reads data without sending for ~200 ms before starting to send.
--In long (>70 minute) run to test rollover logic in IMU code, noticed several garbled messages (excess newlines, cutoff lines, and lines that don't start with the timestamp as they should).  Fixed it by creating a function that handles the recv and fprint uniformly with error checks (same as I had done for just the command log file)
--Noticed problem that when I would run (viewer '()) multiple times without closing and restarting dsci, there would be network errors that certain sockets wouldn't connect--usually the IMU, but sometimes one of the cameras.  The error messages were that bind() failed due to address already in use.  Tried to correct this by adjusting when sockets were closed, but had no luck.
--Was able to get multiple runs of (viewer '()) working by resetting all the new connection sockets to -1 at the start of rover_server_log().  This forced all to reconnect.  I think the problem was that the fd integer used by the previous call to connect was getting reused by another socket, which bypassed the call to reconnect since that fd integer was valid.
--Next effort is to try to combine separate executables on rover for gps, imu, encoders into a single program that sends a consolidated sensor message to the log.  In addition to avoiding the socket problems, this would also solve the problem of synchronizing the messages from the imu and encoders.