From dae398b3687d39e76822e0ab7f6fc214f1a3b234 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Fri, 2 Dec 2022 19:52:50 -0500 Subject: [PATCH 01/11] Update stretch body and stretch ros instructions --- getting_started/README.md | 2 +- getting_started/updating_software.md | 42 ++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/getting_started/README.md b/getting_started/README.md index de514d5..19c2a10 100644 --- a/getting_started/README.md +++ b/getting_started/README.md @@ -6,7 +6,7 @@ Please take the time to get to know your robot by going through these tutorials ## What Version of Robot Do I Have? -Stretch RE1 and RE2 are very similar. One quick way to tell the difference is look at the robot's hostame: +Stretch RE1 and RE2 are very similar. One quick way to tell the difference is to look at the robot's hostame: ```bash >>$ hostname diff --git a/getting_started/updating_software.md b/getting_started/updating_software.md index a127d7b..c034385 100644 --- a/getting_started/updating_software.md +++ b/getting_started/updating_software.md @@ -12,17 +12,41 @@ Each Stretch is shipped with firmware, a Python SDK, and ROS packages developed ### Stretch ROS -Stretch ROS is the [Robot Operating System](https://www.ros.org/about-ros/) (ROS) interface to the robot. Many robotics developers find ROS useful to bootstrap their robotics software developments. You may update it using the following commands: +Stretch ROS is the [Robot Operating System](https://www.ros.org/about-ros/) (ROS) interface to the robot. Many robotics developers find ROS useful to bootstrap their robotics software developments. Depending on whether you want to setup a ROS or ROS 2 workspace, the easiest way to download the most recent updates in the stretch_ros and stretch_ros2 repos, while resolving all source built dependencies at the same time, is by following the instructions in the [Creating a New ROS Workspace](https://github.com/hello-robot/stretch_install/blob/master/docs/ros_workspace.md) section in the stretch_install repo. +**Warning**: Before you proceed, please ensure that all your personal files in the catkin or ament workspace have been backed up safely. This is important because executing the following set of commands deletes your existing workspace and replaces it with a fresh one. + +To download the stretch_install repo, execute: ```console -$ roscd stretch_core -$ git pull +cd ~/ +git clone https://github.com/hello-robot/stretch_install.git +cd stretch_install +git pull ``` -### Stretch Body +To replace the ROS Melodic catkin_ws in Ubuntu 18.04, execute: +```console +# Create a ROS workspace +./factory/18.04/stretch_create_catkin_workspace.sh -w +``` -Stretch Body is the Python SDK to the robot. It abstracts away the low level details of communication with the embedded devices and provides an intuitive API to working with the robot. You may update it using the following commands: +To replace the ROS Noetic catkin_ws in Ubuntu 20.04, execute: +```console +# Create a ROS workspace +./factory/20.04/stretch_create_catkin_workspace.sh -w +``` +To replace the ROS 2 Galactic ament_ws in Ubuntu 20.04, execute: +```console +# Create a ROS2 workspace +./factory/20.04/stretch_create_ament_workspace.sh -w +``` + +### Stretch Body Python SDK + +Stretch Body is the Python SDK to the robot. It abstracts away the low level details of communication with the embedded devices and provides an intuitive API to working with the robot. You may update it using the following commands depending on the Python version. + +If you are using Python2, execute: ```console $ pip install -U hello-robot-stretch-body $ pip install -U hello-robot-stretch-body-tools @@ -30,6 +54,14 @@ $ pip install -U hello-robot-stretch-factory $ pip3 install -U hello_robot_stretch_body_tools_py3 ``` +For Python3, execute: +```console +python3 -m pip -q install --no-warn-script-location hello-robot-stretch-body +python3 -m pip -q install --no-warn-script-location hello-robot-stretch-body-tools +python3 -m pip -q install --no-warn-script-location hello-robot-stretch-factory +python3 -m pip -q install --no-warn-script-location hello-robot-stretch-tool-share +``` + ### Stretch Firmware The firmware and the Python SDK (called Stretch Body) communicate on an established protocol. Therefore, it is important to maintain a protocol match between the different firmware and Stretch Body versions. Fortunately, there is a script that handles this automatically. In the command line, run the following command: From cfd6a211314c240b835b15393dd83ea9ce662c4d Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 13:02:11 -0500 Subject: [PATCH 02/11] Rename stretch body and ROS menus --- mkdocs.yml | 160 ++++++++++++++++++++++------------------------------- 1 file changed, 65 insertions(+), 95 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 06bb6cf..69806b3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -94,7 +94,7 @@ nav: - Advanced: - Untethered Operation: ./getting_started/untethered_operation.md - Updating Software: ./getting_started/updating_software.md - - Stretch Body: + - Stretch Body Python SDK: - Overview: ./stretch_body/README.md - Basics: - Introduction: ./stretch_body/tutorial_introduction.md @@ -113,98 +113,68 @@ nav: - Safety Features: ./stretch_body/tutorial_safe_coding.md - ROS: - - ROS1 (Melodic): - - Overview: ./ros1_melodic/README.md - - Basics: - - Getting Started: ./ros1_melodic/getting_started.md - - Gazebo Basics: ./ros1_melodic/gazebo_basics.md - - Teleoperating Stretch: ./ros1_melodic/teleoperating_stretch.md - - Internal State of Stretch: ./ros1_melodic/internal_state_of_stretch.md - - RViz Basics: ./ros1_melodic/rviz_basics.md - - Navigation Stack: ./ros1_melodic/navigation_stack.md - - MoveIt! Basics: ./ros1_melodic/moveit_basics.md - - Follow Joint Trajectory Commands: ./ros1_melodic/follow_joint_trajectory.md - - Perception: ./ros1_melodic/perception.md - - ArUco Marker Detection: ./ros1_melodic/aruco_marker_detection.md - - ReSpeaker Microphone Array: ./ros1_melodic/respeaker_microphone_array.md - - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap - - Other Examples: - - Teleoperate Stretch with a Node: ./ros1_melodic/example_1.md - - Filter Laser Scans: ./ros1_melodic/example_2.md - - Mobile Base Collision Avoidance: ./ros1_melodic/example_3.md - - Give Stretch a Balloon: ./ros1_melodic/example_4.md - - Print Joint States: ./ros1_melodic/example_5.md - - Store Effort Values: ./ros1_melodic/example_6.md - - Capture Image: ./ros1_melodic/example_7.md - - Voice to Text: ./ros1_melodic/example_8.md - - Voice Teleoperation of Base: ./ros1_melodic/example_9.md - - Tf2 Broadcaster and Listener: ./ros1_melodic/example_10.md - - PointCloud Transformation: ./ros1_melodic/example_11.md - - ArUco Tag Locator: ./ros1_melodic/example_12.md - - 2D Navigation Goals: ./ros1_melodic/example_13.md - - ROS1 (Noetic): - - Overview: ./ros1/README.md - - Basics: - - Getting Started: ./ros1/getting_started.md - - Gazebo Basics: ./ros1/gazebo_basics.md - - Teleoperating Stretch: ./ros1/teleoperating_stretch.md - - Internal State of Stretch: ./ros1/internal_state_of_stretch.md - - RViz Basics: ./ros1/rviz_basics.md - - Navigation Stack: ./ros1/navigation_stack.md - - MoveIt! Basics: ./ros1/moveit_basics.md - - Follow Joint Trajectory Commands: ./ros1/follow_joint_trajectory.md - - Perception: ./ros1/perception.md - - ArUco Marker Detection: ./ros1/aruco_marker_detection.md - - ReSpeaker Microphone Array: ./ros1/respeaker_microphone_array.md - - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap - - Other Examples: - - Teleoperate Stretch with a Node: ./ros1/example_1.md - - Filter Laser Scans: ./ros1/example_2.md - - Mobile Base Collision Avoidance: ./ros1/example_3.md - - Give Stretch a Balloon: ./ros1/example_4.md - - Print Joint States: ./ros1/example_5.md - - Store Effort Values: ./ros1/example_6.md - - Capture Image: ./ros1/example_7.md - - Voice to Text: ./ros1/example_8.md - - Voice Teleoperation of Base: ./ros1/example_9.md - - Tf2 Broadcaster and Listener: ./ros1/example_10.md - - PointCloud Transformation: ./ros1/example_11.md - - ArUco Tag Locator: ./ros1/example_12.md - - 2D Navigation Goals: ./ros1/example_13.md - - ROS2 (Galactic, Beta): - - Overview: ./ros2/README.md - - Basics: - - Getting Started: ./ros2/getting_started.md - - Gazebo Basics: ./ros2/gazebo_basics.md - - Teleoperating Stretch: ./ros2/teleoperating_stretch.md - - Internal State of Stretch: ./ros2/internal_state_of_stretch.md - - RViz Basics: ./ros2/rviz_basics.md - - Navigation Stack: ./ros2/navigation_stack.md - - MoveIt 2: - - MoveIt Basics: ./ros2/moveit_basics.md - - MoveIt with RViz: ./ros2/moveit_rviz_demo.md - - MoveGroup C++ API: ./ros2/moveit_movegroup_demo.md - - Follow Joint Trajectory Commands: ./ros2/follow_joint_trajectory.md - # - Perception: ./ros2/perception.md - # - ArUco Marker Detection: ./ros2/aruco_marker_detection.md - # - ReSpeaker Microphone Array: ./ros2/respeaker_microphone_array.md - # - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap - # - ROS testing: ./ros2/ros_testing.md - # - Other Nav Stack Features: ./ros2/other_nav_features.md - - Other Examples: - - Teleoperate Stretch with a Node: ./ros2/example_1.md - - Filter Laser Scans: ./ros2/example_2.md - - Mobile Base Collision Avoidance: ./ros2/example_3.md - - Give Stretch a Balloon: ./ros2/example_4.md - # - Print Joint States: ./ros2/example_5.md - # - Store Effort Values: ./ros2/example_6.md - # - Capture Image: ./ros2/example_7.md - # - Voice to Text: ./ros2/example_8.md - # - Voice Teleoperation of Base: ./ros2/example_9.md - - Tf2 Broadcaster and Listener: ./ros2/example_10.md - - Obstacle Avoider: ./ros2/obstacle_avoider.md - - Align to ArUco: ./ros2/align_to_aruco.md - - Deep Perception: ./ros2/deep_perception.md - # - PointCloud Transformation: ./ros2/example_11.md - # - ArUco Tag Locator: ./ros2/example_12.md + - Overview: ./ros1/README.md + - Basics: + - Getting Started: ./ros1/getting_started.md + - Gazebo Basics: ./ros1/gazebo_basics.md + - Teleoperating Stretch: ./ros1/teleoperating_stretch.md + - Internal State of Stretch: ./ros1/internal_state_of_stretch.md + - RViz Basics: ./ros1/rviz_basics.md + - Navigation Stack: ./ros1/navigation_stack.md + - MoveIt! Basics: ./ros1/moveit_basics.md + - Follow Joint Trajectory Commands: ./ros1/follow_joint_trajectory.md + - Perception: ./ros1/perception.md + - ArUco Marker Detection: ./ros1/aruco_marker_detection.md + - ReSpeaker Microphone Array: ./ros1/respeaker_microphone_array.md + - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap + - Other Examples: + - Teleoperate Stretch with a Node: ./ros1/example_1.md + - Filter Laser Scans: ./ros1/example_2.md + - Mobile Base Collision Avoidance: ./ros1/example_3.md + - Give Stretch a Balloon: ./ros1/example_4.md + - Print Joint States: ./ros1/example_5.md + - Store Effort Values: ./ros1/example_6.md + - Capture Image: ./ros1/example_7.md + - Voice to Text: ./ros1/example_8.md + - Voice Teleoperation of Base: ./ros1/example_9.md + - Tf2 Broadcaster and Listener: ./ros1/example_10.md + - PointCloud Transformation: ./ros1/example_11.md + - ArUco Tag Locator: ./ros1/example_12.md + - 2D Navigation Goals: ./ros1/example_13.md + - ROS 2 (Beta): + - Overview: ./ros2/README.md + - Basics: + - Getting Started: ./ros2/getting_started.md + - Gazebo Basics: ./ros2/gazebo_basics.md + - Teleoperating Stretch: ./ros2/teleoperating_stretch.md + - Internal State of Stretch: ./ros2/internal_state_of_stretch.md + - RViz Basics: ./ros2/rviz_basics.md + - Navigation Stack: ./ros2/navigation_stack.md + - MoveIt 2: + - MoveIt Basics: ./ros2/moveit_basics.md + - MoveIt with RViz: ./ros2/moveit_rviz_demo.md + - MoveGroup C++ API: ./ros2/moveit_movegroup_demo.md + - Follow Joint Trajectory Commands: ./ros2/follow_joint_trajectory.md + # - Perception: ./ros2/perception.md + # - ArUco Marker Detection: ./ros2/aruco_marker_detection.md + # - ReSpeaker Microphone Array: ./ros2/respeaker_microphone_array.md + # - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap + # - ROS testing: ./ros2/ros_testing.md + # - Other Nav Stack Features: ./ros2/other_nav_features.md + - Other Examples: + - Teleoperate Stretch with a Node: ./ros2/example_1.md + - Filter Laser Scans: ./ros2/example_2.md + - Mobile Base Collision Avoidance: ./ros2/example_3.md + - Give Stretch a Balloon: ./ros2/example_4.md + # - Print Joint States: ./ros2/example_5.md + # - Store Effort Values: ./ros2/example_6.md + # - Capture Image: ./ros2/example_7.md + # - Voice to Text: ./ros2/example_8.md + # - Voice Teleoperation of Base: ./ros2/example_9.md + - Tf2 Broadcaster and Listener: ./ros2/example_10.md + - Obstacle Avoider: ./ros2/obstacle_avoider.md + - Align to ArUco: ./ros2/align_to_aruco.md + - Deep Perception: ./ros2/deep_perception.md + # - PointCloud Transformation: ./ros2/example_11.md + # - ArUco Tag Locator: ./ros2/example_12.md From 6ab7bdba3ca82670c302868831fbe7ead26463a2 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 14:57:16 -0500 Subject: [PATCH 03/11] Add command line tools page --- getting_started/command_line_tools.md | 116 ++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 117 insertions(+) create mode 100644 getting_started/command_line_tools.md diff --git a/getting_started/command_line_tools.md b/getting_started/command_line_tools.md new file mode 100644 index 0000000..847b02b --- /dev/null +++ b/getting_started/command_line_tools.md @@ -0,0 +1,116 @@ +# Command Line Tools + +The Stretch RE1 or RE2 comes with a set of command line tools that are helpful for introspection during general use or while troubleshooting issues. This page provides an overview of these tools. If you like, visit the [stretch_body](https://github.com/hello-robot/stretch_body/tree/master/tools/bin) repository to have a look under the hood. + +You can execute these commands from anywhere in the terminal. We recommend you to execute these commands as we follow each one of them. You can also find the description for the utility each tool provides by passing the optional '-h' flag along with the tool name in the terminal. For example, from anywhere in the terminal execute: +```console +stretch_about.py -h +``` + +## System Information +### stretch_about.py +This tool displays the model and serial number information as an image. + +### stretch_about_text.py +This tool displays the model and serial number information as text. + +### stretch_version.sh +This script prints the version information for various software packages on the robot. + +### stretch_params.py +This tool prints the Stretch parameters to the console. + +### stretch_robot_monitor.py +This tool runs the Robot Monitor and prints to console. + +### stretch_robot_urdf_visualizer.py +This tool allows you to visualize robot URDF. + +## Introspection +### stretch_robot_system_check.py +This tool checks that all robot hardware is present and reporting sane values. + +### stretch_robot_battery_check.py +This is a tool to print battery state to console. + +### stretch_hardware_echo.py +This tool echoes the robot and computer hardware details to the console. + +### stretch_robot_dynamixel_reboot.py +This tool reboots all Dynamixel servos on robot. + +### stretch_pimu_scope.py +This tool allows you to visualize Pimu (Power+IMU) board data with an oscilloscope. Pass the '-h' flag along with the command to see optional arguments. + +### stretch_wacc_scope.py +This is a tool to visualize Wacc (Wrist+Accel) board data with an oscilloscope. Pass the '-h' flag along with the command to see optional arguments. + +### stretch_realsense_visualizer.py +This is a tool to test the Realsense D435i Camera. Pass the '-h' flag along with the command to see optional arguments. + +### stretch_respeaker_test.py +This tool allows you to record and playback audio via Respeaker. + +### stretch_audio_test.py +This tool allows you to test the audio system. + +## Homing Joints +### stretch_robot_home.py +This tool calibrates the robot by finding zeros for all robot joints. + +### stretch_gripper_home.py +This tool calibrates the gripper position by closing until motion stops. + +### stretch_wrist_yaw_home.py +This tool calibrates the wrist_yaw position by moving to both hardstops. + +### stretch_arm_home.py +This tool calibrates arm position by moving to hardstop. + +### stretch_lift_home.py +This tool calibrates the lift position by moving to the upper hardstop. + +## Jogging Joints +### stretch_robot_jog.py +This tool prints all robot data to console. + +### stretch_gripper_jog.py +This tool allows you to jog the griper from the keyboard. + +### stretch_wrist_yaw_jog.py +This tool allows you to jog the wrist_yaw joint from the keyboard. + +### stretch_arm_jog.py +This tool allows you to jog the arm motion from the keyboard. + +### stretch_lift_jog.py +This tool allows you to jog the lift motion from the keyboard. + +### stretch_base_jog.py +This tool allows you to jog the base motion from the keyboard. + +### stretch_head_jog.py +This tool allows you to jog the head from the keyboard. + +## Jogging Modules +### stretch_wacc_jog.py +This tool allows you to command and query the Wacc (Wrist Accelerometer) board from the keyboard. + +### stretch_pimu_jog.py +This tool allows you to comnmand and query the Pimu (Power+IMU) board from the keyboard. + +### stretch_rp_lidar_jog.py +This is a tool to control the RP-Lidar. Pass the '-h' flag along with the command to see optional arguments. + +### stretch_trajectory_jog.py +This tool allows you to test out splined trajectories on the various joint from a GUI or text menu. Pass the '-h' flag along with the command to see optional arguments. + +## Teleoperation +### stretch_robot_stow.py +This tool moves robot to stow position. + +### stretch_robot_keyboard_teleop.py +This tool allows you to control the robot base, lift, arm, head, and tool from the keyboard. + +### stretch_xbox_controller_teleop.py +This tool allows you to jog the robot from an XBox Controller. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 69806b3..ef4cb1c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -92,6 +92,7 @@ nav: - Best Practices: ./getting_started/best_practices.md - Troubleshooting: ./getting_started/troubleshooting_guide.md - Advanced: + - Command Line Tools: ./getting_started/command_line_tools.md - Untethered Operation: ./getting_started/untethered_operation.md - Updating Software: ./getting_started/updating_software.md - Stretch Body Python SDK: From 3543a2a408c998a8054666e0de9545022b09155a Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 17:02:23 -0500 Subject: [PATCH 04/11] Update overview of ROS and add tutorial details --- ros1/README.md | 33 +++++++++++++++++++-------------- ros2/README.md | 38 +++++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/ros1/README.md b/ros1/README.md index a65bd48..4e9be6c 100644 --- a/ros1/README.md +++ b/ros1/README.md @@ -1,24 +1,29 @@ ![](../images/banner.png) -# Tutorial Track: Stretch ROS1 +# Tutorial Track: Stretch ROS -This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS1 Noetic. We recommend going through the tutorials in the following order: +## Robot Operating System (ROS) +Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocol, development and debugging tools, and open-source packages, all wrapped in a single blanket. As a transport protocol, it allows distributed communication via messages through nodes. It provides development tools such as the CMake build system that allows building applications written in languages like Python and C++, among many, and the launch system that allows running mutiple nodes simultaneously. Due to its popularity, it's also the open-source framework of choice for collaboration across research and industry. + +At Hello Robot, we strongly support the open-source initiative and believe that the best way to grow is to grow with the community. + +This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS Noetic. We recommend going through the tutorials in the following order: ## Basics | | Tutorial | Description | |---|---------------------------------------------------------------------------------|----------------------------------------------------| -| 1 | [Getting Started](getting_started.md) | | -| 2 | [Gazebo Basics](gazebo_basics.md) | | -| 3 | [Teleoperating Stretch](teleoperating_stretch.md) | | -| 4 | [Internal State of Stretch](internal_state_of_stretch.md) | | -| 5 | [RViz Basics](rviz_basics.md) | | -| 6 | [Navigation Stack](navigation_stack.md) | | -| 7 | [MoveIt! Basics](moveit_basics.md) | | -| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | | -| 9 | [Perception](perception.md) | | -| 10 | [ArUco Marker Detection](aruco_marker_detection.md) | | -| 11 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | | -| 12 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | | +| 1 | [Getting Started](getting_started.md) | Setup instructions for ROS on Stretch. | +| 2 | [Gazebo Basics](gazebo_basics.md) | Use Stretch in a simulated environment with Gazebo. | +| 3 | [Teleoperating Stretch](teleoperating_stretch.md) | Control Stretch with a keyboard or xbox controller. | +| 4 | [Internal State of Stretch](internal_state_of_stretch.md) | Monitor the joint states of Stretch. | +| 5 | [RViz Basics](rviz_basics.md) | Visualize topics in Stretch. | +| 6 | [Navigation Stack](navigation_stack.md) | Motion planning and control for the mobile base using Nav stack. | +| 7 | [MoveIt! Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | +| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | +| 9 | [Perception](perception.md) | Use the Realsense D435i camera to visualize the environment. | +| 10 | [ArUco Marker Detection](aruco_marker_detection.md) | Localize objects using ArUco markers. | +| 11 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | Learn to use the ReSpeaker Microphone Array. | +| 12 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | Fast Unified Navigation, Manipulation and Planning. | ## Other Examples diff --git a/ros2/README.md b/ros2/README.md index f688646..52ecede 100644 --- a/ros2/README.md +++ b/ros2/README.md @@ -1,29 +1,33 @@ ![](../images/banner.png) -# Tutorial Track: Stretch ROS2 (Beta) +# Tutorial Track: Stretch ROS 2 (Beta) NOTE: ROS2 support for Stretch is currently under active development and is considered 'beta'. -This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS2. We recommend going through the tutorials in the following order: +## Robot Operating System 2 (ROS 2) +Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocol, development and debugging tools, and open-source packages, all wrapped in a single blanket. As a transport protocol, it allows distributed communication via messages through nodes. It provides development tools such as the CMake build system that allows building applications written in languages like Python and C++, among many, and the launch system that allows running mutiple nodes simultaneously. Due to its popularity, it's also the open-source framework of choice for collaboration across research and industry. + +At Hello Robot, we strongly support the open-source initiative and believe that the best way to grow is to grow with the community. + +This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS 2. We recommend going through the tutorials in the following order: ## Basics | | Tutorial | Description | |--|---------------------------------------------------------------------------------|----------------------------------------------------| -| 1 | [Getting Started](getting_started.md) | | -| 2 | [Gazebo Basics](gazebo_basics.md) | | -| 3 | [Teleoperating Stretch](teleoperating_stretch.md) | | -| 4 | [Internal State of Stretch](internal_state_of_stretch.md) | | -| 5 | [RViz Basics](rviz_basics.md) | | -| 6 | [Navigation Stack](navigation_stack.md) | | -| 7 | [MoveIt! Basics](moveit_basics.md) | | -| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | | -| 9 | [Perception](coming_soon.md) | | -| 10 | [ArUco Marker Detection](comming_soon.md) | | -| 11 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | | -| 12 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | | -| 13 | [ROS testing](coming_soon.md) | | -| 14 | [Other Nav Stack Features](coming_soon.md) | | - +| 1 | [Getting Started](getting_started.md) | Setup instructions for ROS 2 on Stretch| +| 2 | [Gazebo Basics](gazebo_basics.md) | Use Stretch in a simulated environment with Gazebo. | +| 3 | [Teleoperating Stretch](teleoperating_stretch.md) | Control Stretch with a keyboard or xbox controller. | +| 4 | [Internal State of Stretch](internal_state_of_stretch.md) | Monitor the joint states of Stretch. | +| 5 | [RViz Basics](rviz_basics.md) | Visualize topics in Stretch. | +| 6 | [Navigation Stack](navigation_stack.md) | Motion planning and control for the mobile base using Nav stack. | +| 7 | [MoveIt! Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | +| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | +| 9 | [Perception](coming_soon.md) | Use the Realsense D435i camera to visualize the environment. | +| 10 | [ArUco Marker Detection](comming_soon.md) | Localize objects using ArUco markers. | +| 11 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | Learn to use the ReSpeaker Microphone Array. | +| 12 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | Fast Unified Navigation, Manipulation and Planning. | +| 13 | [ROS testing](coming_soon.md) | Write ROS system tests for introspection. | +| 14 | [Other Nav Stack Features](coming_soon.md) | Advanced features for Nav 2. | ## Other Examples To help get you get started on your software development, here are examples of nodes to have the stretch perform simple tasks. From 9e40754dfaf88b030aae19f9ae4718035a33ec6d Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 18:18:17 -0500 Subject: [PATCH 05/11] Update getting started steps --- ros1/getting_started.md | 68 +++++++++++------------------------------ ros2/getting_started.md | 44 ++++++++++++++------------ 2 files changed, 41 insertions(+), 71 deletions(-) diff --git a/ros1/getting_started.md b/ros1/getting_started.md index 183394e..1da3d63 100644 --- a/ros1/getting_started.md +++ b/ros1/getting_started.md @@ -1,60 +1,26 @@ # Getting Started -## Ubuntu +## Prerequisites +1. A Stretch robot (see below for simulation instructions if you don’t have a robot) +2. Follow the [Getting Started]() guide (hello_robot_xbox_teleop must not be running in the background) +3. Interacting with Linux through the [command line](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) +4. Basic understanding of [ROS](http://wiki.ros.org/ROS/Tutorials) +5. Setup [untethered operation](https://docs.hello-robot.com/0.2/stretch-tutorials/getting_started/untethered_operation/) (optional) -Hello Robot utilizes Ubuntu, an open-source Linux operating system, for the Stretch platform. If you are unfamiliar with the operating system, we encourage you to review a [tutorial](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) provided by Ubuntu. Additionally, the Linux command line, BASH, is used to execute commands and is needed to run ROS on the Stretch robot. Here is a [tutorial](https://ryanstutorials.net/linuxtutorial/) on getting started with BASH. - -## Installing Noetic on Stretch -Instructions on installing Noetic can be found in our open-source [installation guide](https://github.com/hello-robot/stretch_ros/blob/dev/noetic/install_noetic.md). Then create a catkin workspace for your ROS packages. Here is an [installation guide for creating a workspace](http://wiki.ros.org/catkin/Tutorials/create_a_workspace). Once your system is set up, clone the [stretch_tutorials](https://github.com/hello-robot/stretch_tutorials) to your workspace and build the package in your workspace. This can be done by copying the commands below and pasting them into your terminal. - -```bash -cd ~/catkin_ws/src -git clone https://github.com/hello-robot/stretch_tutorials.git -cd stretch_tutorials -git checkout noetic -cd ~/catkin_ws -catkin_make -``` ### Connecting a Monitor If you cannot access the robot through ssh due to your network settings, you will need to connect an HDMI monitor, USB keyboard, and mouse to the USB ports in the robot's trunk. -## ROS Setup on Local Computer - -Hello Robot is currently running Stretch on Ubuntu 20.04 and ROS Noetic. To begin the setup, start with [installing Ubuntu desktop](https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview) on your local machine. Then follow the [installation guide for ROS Noetic](http://wiki.ros.org/noetic/Installation/Ubuntu) on your system. - -Currently, the Realsense2_description package isn't installed by rosdep and requires a user to install the package manually. Run the following command in your terminal - -```bash -sudo apt-get install ros-noetic-realsense2-camera -``` - -After your system is setup, clone the [stretch_ros](https://github.com/hello-robot/stretch_ros.git), [stretch_tutorials](https://github.com/hello-robot/stretch_tutorials.git), and [realsense_gazebo_plugin packages]( https://github.com/pal-robotics/realsense_gazebo_plugin) to your **src** folder in your preferred workspace. -```bash -cd ~/catkin_ws/src -git clone https://github.com/hello-robot/stretch_ros -git clone https://github.com/pal-robotics/realsense_gazebo_plugin -git clone https://github.com/hello-robot/stretch_tutorials.git -``` - - -Change the directory to that of your catkin workspace and install system dependencies of the ROS packages. Then build your workspace. -```bash -cd ~/catkin_ws -rosdep install --from-paths src --ignore-src -r -y -catkin_make -``` - - -Once `caktin_make` has finished compiling,source your workspace and **.bashrc** file -```bash -echo "source /home/USER_NAME/catkin_ws/devel/setup.bash" -source ~/.bashrc -``` +## Setting Up Stretch in Simulation +Users who don’t have a Stretch, but want to try the tutorials can set up their computer with Stretch Gazebo. -## RoboMaker +Although lower specifications might be sufficient, for the best experience we recommend the following for running the simulation: +**Processor**: Intel i7 or comparable +**Memory**: 16 GB +**Storage**: 50 GB +**OS**: Ubuntu 20.04 +**Graphics Card**: NVIDIA GTX2060 (optional) -

- -

+### Setup +Hello Robot is currently running Stretch on Ubuntu 20.04 and ROS Noetic. To begin the setup, follow the [Run the new robot installation script](https://github.com/hello-robot/stretch_install/blob/master/docs/robot_install.md#run-the-new-robot-installation-script) on your system. -If you cannot dual boot and install ubuntu on your local machine, an alternative is to use [AWS RoboMaker](https://aws.amazon.com/robomaker/). AWS RoboMaker extends the ROS framework with cloud services. The service provides a robotics simulation service, allowing for testing the Stretch platform. If you are a first-time user of AWS RoboMaker, follow the [guide here](https://github.com/aws-robotics/aws-robomaker-robotics-curriculum/blob/main/getting-started-with-aws-robomaker/_modules/mod-2a-aws.md) to get up and running with the service. \ No newline at end of file +Finally, follow the [Creating a new ROS workspace](https://github.com/hello-robot/stretch_install/blob/master/docs/ros_workspace.md) guide to create a fresh catkin workspace complete with all the dependencies. \ No newline at end of file diff --git a/ros2/getting_started.md b/ros2/getting_started.md index 7434be1..31ebd70 100644 --- a/ros2/getting_started.md +++ b/ros2/getting_started.md @@ -2,24 +2,28 @@ **NOTE**: ROS 2 tutorials are still under active development. -## Installing Ubuntu 20.04 with ROS 2 Galactic on Stretch -Hello Robot utilizes Ubuntu, an open source Linux operating system, for the Stretch RE1 platform. If you are unfamiliar with the operating system, we encourage you to review a [tutorial](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) provided by Ubuntu. Additionally, the Linux command line, BASH, is used to execute commands and is needed to run ROS on the Stretch robot. Here is a [tutorial](https://ryanstutorials.net/linuxtutorial/) on getting started with BASH. - -Instructions on installing Ubuntu 20.04 with ROS Noetic and ROS 2 Galactic can be found in our open source [installation guide](https://github.com/hello-robot/stretch_ros/blob/dev/noetic/install_noetic.md). Following these steps should create a separate Ubuntu 20.04 partition with an ament worskspace created in the home directory. - -## ROS 2 Tutorials Setup on Local Computer -Once your system is setup, clone the [stretch_ros_tutorials](https://github.com/hello-sanchez/stretch_ros_tutorials.git) repo to the src directory of the ament workspace, then build the packages. - -``` -cd ~/ament_ws/src -git clone https://github.com/hello-robot/stretch_tutorials.git -git checkout ROS2 -cd ~/ament_ws -colcon build -``` - -Then source your workspace with the following command -``` -source ~/ament_ws/install/setup.bash" -``` +## Prerequisites +1. A Stretch robot (see below for simulation instructions if you don’t have a robot) +2. Follow the [Getting Started]() guide (hello_robot_xbox_teleop must not be running in the background) +3. Interacting with Linux through the [command line](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) +4. Basic understanding of [ROS](http://wiki.ros.org/ROS/Tutorials) +5. Setup [untethered operation](https://docs.hello-robot.com/0.2/stretch-tutorials/getting_started/untethered_operation/) (optional) + +### Connecting a Monitor +If you cannot access the robot through ssh due to your network settings, you will need to connect an HDMI monitor, USB keyboard, and mouse to the USB ports in the robot's trunk. + +## Setting Up Stretch in Simulation +Users who don’t have a Stretch, but want to try the tutorials can set up their computer with Stretch Gazebo. + +Although lower specifications might be sufficient, for the best experience we recommend the following for running the simulation: +**Processor**: Intel i7 or comparable +**Memory**: 16 GB +**Storage**: 50 GB +**OS**: Ubuntu 20.04 +**Graphics Card**: NVIDIA GTX2060 (optional) + +### Setup +Hello Robot is currently running Stretch on Ubuntu 20.04 and ROS 2 Galactic. To begin the setup, follow the [Run the new robot installation script](https://github.com/hello-robot/stretch_install/blob/master/docs/robot_install.md#run-the-new-robot-installation-script) on your system. + +Finally, follow the [Creating a new ROS workspace](https://github.com/hello-robot/stretch_install/blob/master/docs/ros_workspace.md) guide to create a fresh catkin workspace complete with all the dependencies. From 104a95fff8fb234ad54652036c45ad7ca8c416e1 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 18:31:23 -0500 Subject: [PATCH 06/11] Send Gazebo tutorial to the bottom --- mkdocs.yml | 4 ++-- ros1/getting_started.md | 4 +++- ros2/getting_started.md | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index ef4cb1c..414de62 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -117,7 +117,6 @@ nav: - Overview: ./ros1/README.md - Basics: - Getting Started: ./ros1/getting_started.md - - Gazebo Basics: ./ros1/gazebo_basics.md - Teleoperating Stretch: ./ros1/teleoperating_stretch.md - Internal State of Stretch: ./ros1/internal_state_of_stretch.md - RViz Basics: ./ros1/rviz_basics.md @@ -128,6 +127,7 @@ nav: - ArUco Marker Detection: ./ros1/aruco_marker_detection.md - ReSpeaker Microphone Array: ./ros1/respeaker_microphone_array.md - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap + - Gazebo Basics: ./ros1/gazebo_basics.md - Other Examples: - Teleoperate Stretch with a Node: ./ros1/example_1.md - Filter Laser Scans: ./ros1/example_2.md @@ -146,7 +146,6 @@ nav: - Overview: ./ros2/README.md - Basics: - Getting Started: ./ros2/getting_started.md - - Gazebo Basics: ./ros2/gazebo_basics.md - Teleoperating Stretch: ./ros2/teleoperating_stretch.md - Internal State of Stretch: ./ros2/internal_state_of_stretch.md - RViz Basics: ./ros2/rviz_basics.md @@ -162,6 +161,7 @@ nav: # - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap # - ROS testing: ./ros2/ros_testing.md # - Other Nav Stack Features: ./ros2/other_nav_features.md + - Gazebo Basics: ./ros2/gazebo_basics.md - Other Examples: - Teleoperate Stretch with a Node: ./ros2/example_1.md - Filter Laser Scans: ./ros2/example_2.md diff --git a/ros1/getting_started.md b/ros1/getting_started.md index 1da3d63..6f219e5 100644 --- a/ros1/getting_started.md +++ b/ros1/getting_started.md @@ -23,4 +23,6 @@ Although lower specifications might be sufficient, for the best experience we re ### Setup Hello Robot is currently running Stretch on Ubuntu 20.04 and ROS Noetic. To begin the setup, follow the [Run the new robot installation script](https://github.com/hello-robot/stretch_install/blob/master/docs/robot_install.md#run-the-new-robot-installation-script) on your system. -Finally, follow the [Creating a new ROS workspace](https://github.com/hello-robot/stretch_install/blob/master/docs/ros_workspace.md) guide to create a fresh catkin workspace complete with all the dependencies. \ No newline at end of file +Finally, follow the [Creating a new ROS workspace](https://github.com/hello-robot/stretch_install/blob/master/docs/ros_workspace.md) guide to create a fresh catkin workspace complete with all the dependencies. + +To begin working with a simulated Stretch, follow the [Gazebo basics](https://docs.hello-robot.com/0.2/stretch-tutorials/ros1_melodic/gazebo_basics/) tutorial. \ No newline at end of file diff --git a/ros2/getting_started.md b/ros2/getting_started.md index 31ebd70..f718584 100644 --- a/ros2/getting_started.md +++ b/ros2/getting_started.md @@ -3,7 +3,7 @@ **NOTE**: ROS 2 tutorials are still under active development. ## Prerequisites -1. A Stretch robot (see below for simulation instructions if you don’t have a robot) +1. A Stretch robot 2. Follow the [Getting Started]() guide (hello_robot_xbox_teleop must not be running in the background) 3. Interacting with Linux through the [command line](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) 4. Basic understanding of [ROS](http://wiki.ros.org/ROS/Tutorials) @@ -12,7 +12,7 @@ ### Connecting a Monitor If you cannot access the robot through ssh due to your network settings, you will need to connect an HDMI monitor, USB keyboard, and mouse to the USB ports in the robot's trunk. -## Setting Up Stretch in Simulation + From 9da3a8e9743ac974edbb56ea8724187687f699c0 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 21:02:31 -0500 Subject: [PATCH 07/11] Update teleoperation, full robot teleop first --- ros1/teleoperating_stretch.md | 121 +++++++++++++--------------------- ros2/teleoperating_stretch.md | 95 ++++++++++++++++++-------- 2 files changed, 112 insertions(+), 104 deletions(-) diff --git a/ros1/teleoperating_stretch.md b/ros1/teleoperating_stretch.md index b5a08e1..abda158 100644 --- a/ros1/teleoperating_stretch.md +++ b/ros1/teleoperating_stretch.md @@ -1,34 +1,60 @@ ## Teleoperating Stretch ### Xbox Controller Teleoperating -

- -

+If you have not already had a look at the [Xbox Controller Teleoperation](https://docs.hello-robot.com/0.2/stretch-tutorials/getting_started/quick_start_guide_re2/#hello-world-demo) section in the Quick Start guide, now might be a good time to try it. -Stretch comes ready to run out of the box. The Xbox Teleoperation demo will let you quickly test out the robot capabilities by teleoperating it with an Xbox Controller. +### Keyboard Teleoperating: Full Body + +For full body teleoperation with the keyboard, you first need to run the `stretch_driver.launch` in a terminal. + +```bash +# Terminal 1 +roslaunch stretch_core stretch_driver.launch +``` +Then in a new terminal, type the following command + +```bash +# Terminal 2 +rosrun stretch_core keyboard_teleop +``` + +Below are the keyboard commands that allow a user to control all of Stretch's joints. +``` +---------- KEYBOARD TELEOP MENU ----------- + + i HEAD UP + j HEAD LEFT l HEAD RIGHT + , HEAD DOWN + + + 7 BASE ROTATE LEFT 9 BASE ROTATE RIGHT + home page-up -Note: Make sure the USB Dongle is plugged into the the USB port of the base trunk. + 8 LIFT UP + up-arrow + 4 BASE FORWARD 6 BASE BACK + left-arrow right-arrow + 2 LIFT DOWN + down-arrow -To start the demo: -* Remove the 'trunk' cover and power on the robot -Wait for about 45 seconds. You will hear the Ubuntu startup sound, followed by two beeps (indicating the demo is running). -* Hit the Connect button on the controller. The upper two LEDs of the ring will illuminate. -* Hit the Home Robot button. Stretch will go through its homing calibration routine. -* **Note**: make sure the space around the robot is clear before running the Home function + w ARM OUT + a WRIST FORWARD d WRIST BACK + x ARM IN -You're ready to go! A few things to try: -* Hit the Stow Robot button. The robot will assume the stow pose. -* Practice driving the robot around. -* Pull the Fast Base trigger while driving. When stowed, it will make Stretch drive faster -* Manually stop the arm or lift from moving to make it stop upon contact. -* Try picking up your cellphone from the floor -* Try grasping cup from a counter top -* Try delivering an object to a person + 5 GRIPPER CLOSE + 0 GRIPPER OPEN -If you're done, hold down the Shutdown PC button for 2 seconds. This will cause the PC to turn off. You can then power down the robot. + step size: b BIG, m MEDIUM, s SMALL + + q QUIT + +------------------------------------------- + +``` +To stop the node from sending twist messages, type **Ctrl** + **c**. ### Keyboard Teleoperating: Mobile Base @@ -81,63 +107,8 @@ To stop the node from sending twist messages, type **Ctrl** + **c**. ### Create a node for Mobile Base Teleoperating To move Stretch's mobile base using a python script, please look at [example 1](example_1.md) for reference. -### Keyboard Teleoperating: Full Body - -For full body teleoperation with the keyboard, you first need to run the `stretch_driver.launch` in a terminal. - -```bash -# Terminal 1 -roslaunch stretch_core stretch_driver.launch -``` -Then in a new terminal, type the following command - -```bash -# Terminal 2 -rosrun stretch_core keyboard_teleop -``` - -Below are the keyboard commands that allow a user to control all of Stretch's joints. -``` ----------- KEYBOARD TELEOP MENU ----------- - - i HEAD UP - j HEAD LEFT l HEAD RIGHT - , HEAD DOWN - - - 7 BASE ROTATE LEFT 9 BASE ROTATE RIGHT - home page-up - - - 8 LIFT UP - up-arrow - 4 BASE FORWARD 6 BASE BACK - left-arrow right-arrow - 2 LIFT DOWN - down-arrow - - - w ARM OUT - a WRIST FORWARD d WRIST BACK - x ARM IN - - - 5 GRIPPER CLOSE - 0 GRIPPER OPEN - - step size: b BIG, m MEDIUM, s SMALL - - q QUIT - -------------------------------------------- - -``` -To stop the node from sending twist messages, type **Ctrl** + **c**. - - ## Teleoperating in Gazebo - ### Keyboard Teleoperating: Mobile Base For keyboard teleoperation of the Stretch's mobile base, first [startup Stretch in simulation](gazebo_basics.md). Then run the following command in a new terminal. diff --git a/ros2/teleoperating_stretch.md b/ros2/teleoperating_stretch.md index 3a87c15..aba621e 100644 --- a/ros2/teleoperating_stretch.md +++ b/ros2/teleoperating_stretch.md @@ -6,48 +6,79 @@ Teleoperation support for Stretch in ROS 2 is under active development. Please r Refer to the instructions below if you want to test this functionality in ROS 1. ### Xbox Controller Teleoperating -![image](https://raw.githubusercontent.com/hello-robot/stretch_tutorials/ROS2/images/xbox_controller_commands.png) +If you have not already had a look at the [Xbox Controller Teleoperation](https://docs.hello-robot.com/0.2/stretch-tutorials/getting_started/quick_start_guide_re2/#hello-world-demo) section in the Quick Start guide, now might be a good time to try it. -Stretch comes ready to run out of the box. The Xbox Teleoperation demo will let you quickly test out the robot capabilities by teleoperating it with an Xbox Controller. +### Keyboard Teleoperating: Full Body -Note: Make sure the USB Dongle is plugged into the the USB port of the base trunk. +For full body teleoperation with the keyboard, you first need to run the `stretch_driver.launch` in a terminal. -To start the demo: +```bash +# Terminal 1 +roslaunch stretch_core stretch_driver.launch +``` +Then in a new terminal, type the following command + +```bash +# Terminal 2 +rosrun stretch_core keyboard_teleop +``` -* Remove the 'trunk' cover and power on the robot -Wait for about 45 seconds. You will hear the Ubuntu startup sound, followed by two beeps (indicating the demo is running). -* Hit the Connect button on the controller. The upper two LEDs of the ring will illuminate. -* Hit the Home Robot button. Stretch will go through its homing calibration routine. -* **Note**: make sure the space around the robot is clear before running the Home function +Below are the keyboard commands that allow a user to control all of Stretch's joints. +``` +---------- KEYBOARD TELEOP MENU ----------- -You're ready to go! A few things to try: + i HEAD UP + j HEAD LEFT l HEAD RIGHT + , HEAD DOWN -* Hit the Stow Robot button. The robot will assume the stow pose. -* Practice driving the robot around. -* Pull the Fast Base trigger while driving. When stowed, it will make Stretch drive faster -* Manually stop the arm or lift from moving to make it stop upon contact. -* Try picking up your cellphone from the floor -* Try grasping cup from a counter top -* Try delivering an object to a person -If you're done, hold down the Shutdown PC button for 2 seconds. This will cause the PC to turn off. You can then power down the robot. + 7 BASE ROTATE LEFT 9 BASE ROTATE RIGHT + home page-up -### Keyboard Teleoperating -To teleoperate a Stretch's mobile base with the keyboard, you first need to set the ros parameter to *navigation* mode for the robot to receive *Twist* messages. Begin by running `roscore` in a terminal. Then in a new terminal, type the following commands + 8 LIFT UP + up-arrow + 4 BASE FORWARD 6 BASE BACK + left-arrow right-arrow + 2 LIFT DOWN + down-arrow + + + w ARM OUT + a WRIST FORWARD d WRIST BACK + x ARM IN + + + 5 GRIPPER CLOSE + 0 GRIPPER OPEN + + step size: b BIG, m MEDIUM, s SMALL + + q QUIT + +------------------------------------------- ``` -rosparam set /stretch_driver/mode "navigation" +To stop the node from sending twist messages, type **Ctrl** + **c**. + +### Keyboard Teleoperating: Mobile Base + +Begin by running the following command in your terminal: + +```bash +# Terminal 1 roslaunch stretch_core stretch_driver.launch ``` -The first line will set the stretch driver mode to *navigation* before running the `stretch_driver.launch` file. -Then in a new terminal launch the teleop_twist_keyboard node with the argument remapping the *cmd_vel* topic name to *stretch/cmd_vel*. -``` +To teleoperate a Stretch's mobile base with the keyboard, you first need to switch the mode to *nagivation* for the robot to receive *Twist* messages. This is done using a rosservice call in a new terminal. In the same terminal run the teleop_twist_keyboard node with the argument remapping the *cmd_vel* topic name to *stretch/cmd_vel*. + +```bash +# Terminal 2 +rosservice call /switch_to_navigation_mode rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=stretch/cmd_vel ``` -Below are the keyboard commands that allow a user to move Stretch. +Below are the keyboard commands that allow a user to move Stretch's base. ``` Reading from the keyboard and Publishing to Twist! --------------------------- @@ -55,27 +86,33 @@ Moving around: u i o j k l m , . + For Holonomic mode (strafing), hold down the shift key: --------------------------- U I O J K L M < > + t : up (+z) b : down (-z) + anything else : stop + q/z : increase/decrease max speeds by 10% w/x : increase/decrease only linear speed by 10% e/c : increase/decrease only angular speed by 10% + CTRL-C to quit + currently: speed 0.5 turn 1.0 + ``` To stop the node from sending twist messages, type **Ctrl** + **c**. -### Create a node for Teleoperating +### Create a node for Mobile Base Teleoperating To move Stretch's mobile base using a python script, please look at [example 1](example_1.md) for reference. - -## Teleoperating in Gazebo + From 764aff3c9195e760cf50a7cff90c1fc7314acee2 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Wed, 7 Dec 2022 21:02:56 -0500 Subject: [PATCH 08/11] Remove tutorials that are not ready from ROS 2 --- mkdocs.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 414de62..9b4227a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -121,7 +121,7 @@ nav: - Internal State of Stretch: ./ros1/internal_state_of_stretch.md - RViz Basics: ./ros1/rviz_basics.md - Navigation Stack: ./ros1/navigation_stack.md - - MoveIt! Basics: ./ros1/moveit_basics.md + # - MoveIt! Basics: ./ros1/moveit_basics.md - Follow Joint Trajectory Commands: ./ros1/follow_joint_trajectory.md - Perception: ./ros1/perception.md - ArUco Marker Detection: ./ros1/aruco_marker_detection.md @@ -146,10 +146,10 @@ nav: - Overview: ./ros2/README.md - Basics: - Getting Started: ./ros2/getting_started.md - - Teleoperating Stretch: ./ros2/teleoperating_stretch.md + # - Teleoperating Stretch: ./ros2/teleoperating_stretch.md - Internal State of Stretch: ./ros2/internal_state_of_stretch.md - RViz Basics: ./ros2/rviz_basics.md - - Navigation Stack: ./ros2/navigation_stack.md + # - Navigation Stack: ./ros2/navigation_stack.md - MoveIt 2: - MoveIt Basics: ./ros2/moveit_basics.md - MoveIt with RViz: ./ros2/moveit_rviz_demo.md @@ -161,7 +161,7 @@ nav: # - FUNMAP: https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap # - ROS testing: ./ros2/ros_testing.md # - Other Nav Stack Features: ./ros2/other_nav_features.md - - Gazebo Basics: ./ros2/gazebo_basics.md + # - Gazebo Basics: ./ros2/gazebo_basics.md - Other Examples: - Teleoperate Stretch with a Node: ./ros2/example_1.md - Filter Laser Scans: ./ros2/example_2.md From b407a57d8422b757536b97bdd83cf2ee7643412e Mon Sep 17 00:00:00 2001 From: Binit Shah Date: Wed, 4 Jan 2023 14:14:55 -0800 Subject: [PATCH 09/11] Fix warnings in ROS2 Overview --- ros2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ros2/README.md b/ros2/README.md index 52ecede..ee0c1a5 100644 --- a/ros2/README.md +++ b/ros2/README.md @@ -23,8 +23,8 @@ This tutorial track is for users looking to become familiar with programming the | 7 | [MoveIt! Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | | 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | | 9 | [Perception](coming_soon.md) | Use the Realsense D435i camera to visualize the environment. | -| 10 | [ArUco Marker Detection](comming_soon.md) | Localize objects using ArUco markers. | -| 11 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | Learn to use the ReSpeaker Microphone Array. | +| 10 | [ArUco Marker Detection](coming_soon.md) | Localize objects using ArUco markers. | +| 11 | [ReSpeaker Microphone Array](coming_soon.md) | Learn to use the ReSpeaker Microphone Array. | | 12 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | Fast Unified Navigation, Manipulation and Planning. | | 13 | [ROS testing](coming_soon.md) | Write ROS system tests for introspection. | | 14 | [Other Nav Stack Features](coming_soon.md) | Advanced features for Nav 2. | From 69d30dfb88e79fc39922e679b6c238dd713979c2 Mon Sep 17 00:00:00 2001 From: Binit Shah Date: Wed, 4 Jan 2023 14:54:32 -0800 Subject: [PATCH 10/11] Update tutorial overview tables and tweak intros --- mkdocs.yml | 2 +- ros1/README.md | 3 +-- ros2/README.md | 21 +++++++++++---------- ros2/rviz_basics.md | 14 -------------- 4 files changed, 13 insertions(+), 27 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 9b4227a..20b04a1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -147,6 +147,7 @@ nav: - Basics: - Getting Started: ./ros2/getting_started.md # - Teleoperating Stretch: ./ros2/teleoperating_stretch.md + - Follow Joint Trajectory Commands: ./ros2/follow_joint_trajectory.md - Internal State of Stretch: ./ros2/internal_state_of_stretch.md - RViz Basics: ./ros2/rviz_basics.md # - Navigation Stack: ./ros2/navigation_stack.md @@ -154,7 +155,6 @@ nav: - MoveIt Basics: ./ros2/moveit_basics.md - MoveIt with RViz: ./ros2/moveit_rviz_demo.md - MoveGroup C++ API: ./ros2/moveit_movegroup_demo.md - - Follow Joint Trajectory Commands: ./ros2/follow_joint_trajectory.md # - Perception: ./ros2/perception.md # - ArUco Marker Detection: ./ros2/aruco_marker_detection.md # - ReSpeaker Microphone Array: ./ros2/respeaker_microphone_array.md diff --git a/ros1/README.md b/ros1/README.md index 4e9be6c..4db7fa9 100644 --- a/ros1/README.md +++ b/ros1/README.md @@ -2,9 +2,8 @@ # Tutorial Track: Stretch ROS ## Robot Operating System (ROS) -Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocol, development and debugging tools, and open-source packages, all wrapped in a single blanket. As a transport protocol, it allows distributed communication via messages through nodes. It provides development tools such as the CMake build system that allows building applications written in languages like Python and C++, among many, and the launch system that allows running mutiple nodes simultaneously. Due to its popularity, it's also the open-source framework of choice for collaboration across research and industry. -At Hello Robot, we strongly support the open-source initiative and believe that the best way to grow is to grow with the community. +Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocols, development and debugging tools, and open-source packages. As a transport protocol, ROS enables distributed communication via messages between nodes. As a development and debugging toolkit, ROS provides build systems that allows for writing applications in a wide variety of languages (Python and C++ are used in this tutorial track), a launch system to manage the execution of mutiple nodes simultaneously, and command line tools to interact with the running system. Finally, as a popular ecosystem, there are many open-source ROS packages that allow users to quickly prototype with new sensors, actuators, planners, perception stacks, and more. This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS Noetic. We recommend going through the tutorials in the following order: diff --git a/ros2/README.md b/ros2/README.md index ee0c1a5..04f5959 100644 --- a/ros2/README.md +++ b/ros2/README.md @@ -1,12 +1,11 @@ ![](../images/banner.png) # Tutorial Track: Stretch ROS 2 (Beta) -NOTE: ROS2 support for Stretch is currently under active development and is considered 'beta'. +NOTE: Stretch's ROS2 packages and this ROS2 tutorial track are both under active development. They are considered 'beta', and we welcome any feedback. If you find any issues or bugs, please see the [Stretch ROS2](https://github.com/hello-robot/stretch_ros2/issues) and [Stretch Tutorials](https://github.com/hello-robot/stretch_tutorials/issues) issue trackers. ## Robot Operating System 2 (ROS 2) -Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocol, development and debugging tools, and open-source packages, all wrapped in a single blanket. As a transport protocol, it allows distributed communication via messages through nodes. It provides development tools such as the CMake build system that allows building applications written in languages like Python and C++, among many, and the launch system that allows running mutiple nodes simultaneously. Due to its popularity, it's also the open-source framework of choice for collaboration across research and industry. -At Hello Robot, we strongly support the open-source initiative and believe that the best way to grow is to grow with the community. +Despite the name, ROS is not an operating system. ROS is a middleware framework that is a collection of transport protocols, development and debugging tools, and open-source packages. As a transport protocol, ROS enables distributed communication via messages between nodes. As a development and debugging toolkit, ROS provides build systems that allows for writing applications in a wide variety of languages (Python and C++ are used in this tutorial track), a launch system to manage the execution of mutiple nodes simultaneously, and command line tools to interact with the running system. Finally, as a popular ecosystem, there are many open-source ROS packages that allow users to quickly prototype with new sensors, actuators, planners, perception stacks, and more. This tutorial track is for users looking to become familiar with programming the Stretch RE1 and RE2 via ROS 2. We recommend going through the tutorials in the following order: @@ -15,19 +14,18 @@ This tutorial track is for users looking to become familiar with programming the | | Tutorial | Description | |--|---------------------------------------------------------------------------------|----------------------------------------------------| | 1 | [Getting Started](getting_started.md) | Setup instructions for ROS 2 on Stretch| -| 2 | [Gazebo Basics](gazebo_basics.md) | Use Stretch in a simulated environment with Gazebo. | -| 3 | [Teleoperating Stretch](teleoperating_stretch.md) | Control Stretch with a keyboard or xbox controller. | +| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | | 4 | [Internal State of Stretch](internal_state_of_stretch.md) | Monitor the joint states of Stretch. | | 5 | [RViz Basics](rviz_basics.md) | Visualize topics in Stretch. | -| 6 | [Navigation Stack](navigation_stack.md) | Motion planning and control for the mobile base using Nav stack. | -| 7 | [MoveIt! Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | -| 8 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | -| 9 | [Perception](coming_soon.md) | Use the Realsense D435i camera to visualize the environment. | +| 7 | [MoveIt2 Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | +| 7 | [MoveIt2 with Rviz](moveit_rviz_demo.md) | Motion planning and control for the arm using MoveIt. | +| 7 | [MoveIt2 MoveGroup C++ API](moveit_movegroup_demo.md) | Motion planning and control for the arm using MoveIt. | + ## Other Examples To help get you get started on your software development, here are examples of nodes to have the stretch perform simple tasks. @@ -40,6 +38,9 @@ To help get you get started on your software development, here are examples of n | 3 | [Mobile Base Collision Avoidance](example_3.md) | Stop Stretch from running into a wall.| | 4 | [Give Stretch a Balloon](example_4.md) | Create a "balloon" marker that goes where ever Stretch goes.| | 5 | [Tf2 Broadcaster and Listener](example_10.md) | Create a tf2 broadcaster and listener.| +| 6 | [Obstacle Avoider](obstacle_avoider.md) | Avoid obstacles using the planar lidar. | +| 7 | [Align to ArUco](align_to_aruco.md) | Detect ArUco fiducials using OpenCV and align to them.| +| 8 | [Deep Perception](deep_perception.md) | Use YOLOv5 to detect 3D objects in a point cloud.| +Save this configuration using **Ctrl + S**. Close out of the current terminal and open a new one. ROS2 is now enabled! + +## Refreshing the ROS2 workspace + +While Stretch ROS2 is in beta, there will be frequent updates to the ROS2 software. Therefore, it makes sense to refresh the ROS2 software to the latest available release. In the ROS and ROS2 world, software is organized into "ROS Workspaces", where packages can be developed, compiled, and be made available to run from the command line. We are going to refresh the ROS2 workspace, which is called "~/ament_ws" and available in the home directory. Follow the [Create a new ROS Workspace guide](https://docs.hello-robot.com/0.2/stretch-install/docs/ros_workspace/) to run the `stretch_create_ament_workspace.sh` script. This will delete the existing "~/ament_ws", create a new one with all of the required ROS2 packages for Stretch, and compile it. + +## Testing Keyboard Teleop + +We can test whether the ROS2 workspace was enabled successfully by testing out the ROS2 drivers package, called "stretch_core", with keyboard teleop. In one terminal, we'll launch Stretch's ROS2 drivers using: + +```bash +ros2 launch stretch_core stretch_driver.launch.py mode:=manipulation +``` + +In the second terminal, launch the keyboard teleop node using: +```bash +ros2 run stretch_core keyboard_teleop +``` + +The following menu will be outputted to the terminal and you can press a key to move the corresponding joint on the robot. When you're ready to exit, press **Ctrl + C**. + +``` +[INFO] [1672878953.011453154] [keyboard_teleop]: keyboard_teleop started +[INFO] [1672878953.041154084] [keyboard_teleop]: Node keyboard_teleop connected to /stop_the_robot service. +---------- KEYBOARD TELEOP MENU ----------- + + i HEAD UP + j HEAD LEFT l HEAD RIGHT + , HEAD DOWN + + + 7 BASE ROTATE LEFT 9 BASE ROTATE RIGHT + home page-up + + + 8 LIFT UP + up-arrow + 4 BASE FORWARD 6 BASE BACK + left-arrow right-arrow + 2 LIFT DOWN + down-arrow + + + w ARM OUT + a WRIST FORWARD d WRIST BACK + x ARM IN + + + 5 GRIPPER CLOSE + 0 GRIPPER OPEN + + step size: b BIG, m MEDIUM, s SMALL + + q QUIT + +------------------------------------------- +``` + +ROS2 is setup! Move onto the next tutorial: [Follow Joint Trajectory Commands](follow_joint_trajectory.md). diff --git a/ros2/images/bashrc_setup_galactic.png b/ros2/images/bashrc_setup_galactic.png new file mode 100644 index 0000000000000000000000000000000000000000..c468cc273003ee6c3be7b76061a25c237a871713 GIT binary patch literal 60839 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 R#Sj5rl;qXqpl{4V{ts(pBJMxW<@ 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∓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 q%0A)l(Hg^fax3Hi_h*#Z2{<&bxhjl9z3R>leR!)XUnpl1@c#hV@v_4J literal 0 HcmV?d00001