Running:
roslaunch formant_hello navigation.launch map_yaml:=/home/hello-robot/stretch_user/maps/brians_basement.yaml
Noetic Setup:
- Install ROS noetic
- add source of noetic script to .bashrc and source the file
- mkdir ros_ws
- cd ros_ws
- mkdir src
- catkin_make
- cd src
- clone stretch_ros
- clone formant_hello [setup for github key first]
- sudo apt install ros-noetic-move-base
- rosdep update
- rosdep install --from-paths src --ignore-src -r -y
- cd ..
- catkin_make
- cd src/stretch_ros/stretch_description/urdf/
- ./xacro_to_urdf.sh
- cd ../../../..
- sudo apt install ros-noetic-rplidar-ros
- pip3 install pyyaml
- pip3 install hello-robot-stretch-body
- copied stretch_user folder over to new user
- added export HELLO_FLEET_PATH=/home/NEW_USER/stretch_user and export HELLO_FLEET_ID=stretch-re1-1051 to .bashrc
- source ~/.bashrc
- cd src/formant_hello/
- git checkout noetic
- cd ../..
- pip3 install hello-robot-stretch-body-tools
- /home/cora/.local/bin/RE1_migrate_params.py
- /home/cora/.local/bin/RE1_migrate_contacts.py
- cd src/stretch_ros
- git checkout dev/noetic
- cd ../..
- cp /home/cora/ros_ws/src/stretch_ros/stretch_core/config/controller_calibration_head_factory_default.yaml /home/cora/ros_ws/src/stretch_ros/stretch_core/config/controller_calibration_head.yaml
- roslaunch formant_hello mapping.launch
- (new terminal)
- mkdir -p ~/stretch_user/maps
- rosrun map_server map_saver -f ${HELLO_FLEET_PATH}/maps/<map_name>
- (original terminal)
- ctrl-c
- sudo apt install ros-noetic-laser-scan-matcher
- roslaunch formant_hello navigation.launch map_yaml:=${HELLO_FLEET_PATH}/maps/<map_name>.yaml
Notes about Hello-Robot Stretch Integration:
- Cannot seem to command translational and rotational velocity to the wheels at the same time, it seemingly only works on one
- Stretch API frequntly starts up with RPC errors, just need to keep restarting until it homes correctly
- Joint status does not seem to update from the API automatically, you must call
pull_status
on that motor to update that before reading the status - URDF for the
joint_lift
had incorrect axis for the prismatic action (was set to Z but due to rotation should be set to Y) resulting in translation horizontally instead of vertically - Only wheels support velocity commands, head, lift, extension, and wrist only allow for position
- Default ROS node had increasing lag on scan topic, currently investigating mitigation techniques
- No obvious way to "stop" a joint motion and is currently underway
- SDK only supports python2, which was depreciated on Jan 1 2020
- Navigation stack suffers greatly from wheel slip, does not appear to leverage SLAM techniques to minimize accumulated error
- Appears as though the default motor controllers for the base are poorly tuned, results in poor path following from navigation commands