With the noetic version of the laser_scan_matcher_node (used in the
stretch_scan_matcher.launch file), an undocumented parameter `use_tf`
was added to the node. This parameter defaults to true, and drives
a newer motion model for the node where the fixed frame (odom) ->
base_link TF is looked up to retrieve the previous motion step
estimate. Then, this prev motion step is used to inform the next
motion step. I don't know why the node looks up the previous motion
step via TF, when it should already know it (it published it!).
Anyways, this TF lookup fails and warns:
[ WARN] [1704785850.605420614]: Could not get base to fixed frame
transform, Lookup would require extrapolation 0.134955875s into the
future. Requested time 1704785850.369850636 but the latest data is
at time 1704785850.234894753, when looking up transform from frame
[base_link] to frame [odom]
Since this tf lookup is failing and the use_tf motion model isn't
working, this commit disables the motion model by setting the
use_tf flag to false.
A bug in how the deadman button was set prevented users from being able to send Twist commands to the cmd_vel topic using the Joystick controller in the teleop_twist.launch file.
After Stretch has been runstopped, any Twist commands will
be rejected. However, the Twist callback forgets to release
the mode lock before rejecting the command. This leads to a
deadlock when the driver attempts to switch out of runstop.
The get_joint_state() method makes it easier to get
information about a joint, including whether the
joint is moving. A mode variable is added to make
it easier to determine what mode the driver is in.
Lastly, some of HelloNode's variables are made private
to make it easier to use the class from iPython.