This appears to fix an issue where the D435i's mode was
not being successfully changed on launch. The code now
sleeps for 3 seconds before trying to configure the D435i,
which appears to fix the problem for the typical launch
files in stretch_ros.
This also appears to resolve an issue that resulted in
warnings from the ArUco marker detection node and
calibration issues. Without a successful mode change,
depth images from the D435i often failed to provide
depth values for the pixels corresponding with the
ArUco markers on Stretch's body.
Addressing this issue will likely obviate the need
for Hello Robot's D435i patch that pins earlier
versions of the D435i software.
The tilt backlash model is supposed to compare the current tilt
angle of the head with the head_tilt_backlash_transition_angle
to determine if head_tilt_looking_up element of the backlash state
is true or false. This is due to the head resting against
different sides of the tilt joint based on whether it's looking up
or looking down.
At some point, an error was introduced in which
head_tilt_looking_up was set based on the recent relative motion
of the head tilt joint. This is the way backlash state is
determined for the telescoping arm and head panning.
In contrast, the head tilt backlash state depends on gravity
and where the center of mass of the head is relative to the
tilt joint's axis of rotation. As such, the head tilt backlash
state depends on the tilt angle of the head.
+ Users may define out-of-range goals intentionally if they want to move any joint to its limit without knowing the joint's calibrated limit for a specific robot
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
+ move up or down to contact handles
+ use new stretch_driver custom effort thresholds
+ successful with tool chest drawer, but has 10 second timeouts after each move until contact