gripper class mostly works, but keep getting segfaults during some runs.  Most likely cause is that I broke something in MotionManager.cpp or CM730.cpp (CM730::TxRxPacket(char*, char*, int))
Still getting segfaults from TxRxPacket...
still getting segfaults from txrxpacket()
This is annoying the hell out of me.  Anytime the CM730 produces an RX_CORRUPT during BulkRead(), it causes a seg fault that kills the entire program.
I think the RX_CORRUPT segfault finally got fixed.  Moved ReadBulk() to start of MotionManager::Process() and added checks for SUCCESS anywhere attempting to read from m_BulkReadData.
Still working on tracking that damn segfault.  It only happens after a BulkRead() produces a CM730 invalid checksum.  It happens after the mutexes are released and the status returned, so probably something with the subsequent SyncWrite() which never makes it to the mutex wait.
I still have no real idea why it keeps segfaulting, but it has not been occuring very often and the rest of the gripper class mostly works.  Need to test speed and torque control, then see if it correctly handles AX-series servos.
Torque control and feedback appear to work well enough.
Attempts to add AXM gripper leads to immediate segfault in Robot::LinuxMotionTimer::TimerProc(void*)
Pretty sure it is related to using one Gripper class to control two grippers and something trying to access something simultaneously (only one m_joint per class? did not think that was static).
Having an AXM connected at startup causes immediate segfault in TimerProc from thread_start.
Think I fixed the seg fault caused by setting the torque and/or speed (used 2 instead of 3 bytes as length of parameters - forgot to count the ID byte 0ca0_0ca0).  Still causes immediate segfault with AXM...
Still getting segfaults from CM730 checksum error.
Pretty sure the problem is that bulkread operations are not thread safe.  Nothing to stop TxRxPacket from read/modify any parameter while another thread attempts to read.
bleh, still segfaults.
FUCK!!!!!!
It appears to be the -O2 optimization.  Somewhere, something is calling it with bad parameters when optimized.
Cutting the AXM stuff for now...
gah.  at least the gripper closes, but load is broken.  using different optimization appears to eliminate the segfaults
You fucking idiot.  You were trying to read a word at the temperature during bulk read instead of a byte.  Optimization eliminated the unused array locations leading you to read from non-existant locations.