stretch_calibration appears to now work with ROS Noetic, Python 3, and Ubuntu 20.04.
tilt_angle_backlash_transition is now added to the calibration results file.
To do in the future:
+ The camera pan doesn't seem to consistently move a little to the back of the robot when collecting calibration data. It does seem to consistently pan a little to the front of the robot. This could cause issues with pan backlash calibration.
+ Check on the calibration quality. The fit was not as good as I expected to the mobile base and the arm. I need to check on this.
These changes make the following code run in ROS Noetic
with Ubuntu 20.04 and Python 3. However, this code has
not been fully tested. The robot moves and appears to
collect data. A fit error appears to be calculated.
The visualization of the fit may have a problem.
+ stretch_calibration collect_check_head_calibration_data.launch
+ stretch_calibration check_head_calibration.sh
For now, I've commented out "class HelloNode" in hello_misc.py
due to a syntax error without an obvious fix.
Checking the calibration now collects fewer higher quality observations.
When checking or performing a new fit, the fit error is checked against a threshold that likely indicates a problem with the calibration.
Code to check the existing calibration. It does the following:
+ Collects a reduced number of new observations with which to check the current calibration.
+ Visualizes and computes the fit of the current calibration to the new observations.
Future work:
+ Improve the reduced number of observations to increase efficiency.
+ Check the numeric results of the fit and provide a warning if the quality is low.
Apparently, upstream RealSense changes in ROS Melodic broke Stretch URDF creation. More information about the changes can be found using the following information:
+ realsense-ros release: https://github.com/IntelRealSense/realsense-ros/releases/tag/2.2.14
+ Debian package: ros-melodic-realsense2-description/bionic,now 2.2.14-1bionic.20200630.141906
+ relevant commit: f7cd5fced5
The corrected issue has to do with changes to "use_nominal_extrinsics" specified in the D435i xacros in the realsense2_description package.
The current commmit also changes the d435i launch file for Stretch (d435i_basic.launch) so that it no longer performs "initial_reset" by default. "initial_reset" appears to have resulted in long delays and freezing when bringing up the camera on the robot.
An excerpt from Intel's documentation for initial_reset follows:
"initial_reset: On occasions the device was not closed properly and due to firmware issues needs to reset. If set to true, the device will reset prior to usage." from https://github.com/intel-ros/realsense