You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Binit Shah c67b3385a9 New Tutorial Series: Developing with Stretch, Python Tutorial, & ROS2 Tutorials 2 months ago
..
images Added viz images 6 months ago
README.md New Tutorial Series: Developing with Stretch, Python Tutorial, & ROS2 Tutorials 2 months ago
align_to_aruco.md Merge branch 'master' into features/ros2_examples 7 months ago
aruco_marker_detection.md Update links to Humble documentation 7 months ago
avoiding_deadlocks_race_conditions.md Added notes for better understanding and fix typo 7 months ago
coming_soon.md fix broken links 1 year ago
deep_perception.md Merge branch 'master' into features/ros2_examples 7 months ago
demo_grasp_object.md Add results amd expectations 8 months ago
demo_handover_object.md Add results amd expectations 8 months ago
demo_hello_world.md Add results amd expectations 8 months ago
demo_open_drawer.md Add results amd expectations 8 months ago
demo_surface_cleaning.md Add results amd expectations 8 months ago
example_1.md Update links to Humble documentation 7 months ago
example_2.md Merge branch 'master' into features/ros2_examples 7 months ago
example_3.md Fix error, driver needs to be in navigation mode 7 months ago
example_4.md Merge branch 'master' into features/ros2_examples 7 months ago
example_5.md Update links to Humble documentation 7 months ago
example_6.md Update links to Humble documentation 7 months ago
example_7.md Update links to Humble documentation 7 months ago
example_8.md Added ReSpeaker tutorials 7 months ago
example_9.md Added ReSpeaker tutorials 7 months ago
example_10.md Merge branch 'master' into features/ros2_examples 7 months ago
example_12.md Update links to Humble documentation 7 months ago
feature_comparison.md Improve table formatting 8 months ago
follow_joint_trajectory.md Merge branch 'master' into features/ros2_examples 7 months ago
gazebo_basics.md Update bash prompt and no copy 1 year ago
getting_started.md New Tutorial Series: Developing with Stretch, Python Tutorial, & ROS2 Tutorials 2 months ago
internal_state_of_stretch.md Update internal_state_of_stretch.md 9 months ago
intro_to_hellonode.md Modify the Subscribed Services import to just Trigger and modify the way to call those services call_async was missing 8 months ago
intro_to_ros2.md Change the bash shell prompt to python 7 months ago
modes.md Add modes tutorial init 8 months ago
moveit_basics.md Update documentation with stretch_ros2 restruct 1 year ago
moveit_movegroup_demo.md Update documentation with stretch_ros2 restruct 1 year ago
moveit_rviz_demo.md Update documentation with stretch_ros2 restruct 1 year ago
navigation_overview.md Clear typos 1 year ago
navigation_simple_commander.md Update links to Humble documentation 7 months ago
navigation_stack.md Update documentation with stretch_ros2 restruct 1 year ago
obstacle_avoider.md Update links to Humble documentation 7 months ago
perception.md Changed the input command for the rviz perception_example 8 months ago
remote_compute.md Update remote_compute.md 6 months ago
respeaker_mic_array.md Fix the shell-prompt from the reconfigure part. 6 months ago
respeaker_topics.md Updated DOA diagram image 7 months ago
robot_drivers.md New Tutorial Series: Developing with Stretch, Python Tutorial, & ROS2 Tutorials 2 months ago
rviz_basics.md Update bash prompt and no copy 1 year ago
teleoperating_stretch.md Update the basic tutorials for teleoperation changing the commands to ROS2 8 months ago
writing_nodes.md New Tutorial Series: Developing with Stretch, Python Tutorial, & ROS2 Tutorials 2 months ago

README.md

Tutorial Track: Stretch ROS 2 (Beta)

Robot Operating System 2 (ROS 2)

ROS 2 is the successor to ROS, The ROS in ROS 2 stands for "robot operating system", but despite the name, ROS is not an operating system. It's 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 allow 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 multiple 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.

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 allow 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 multiple 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 get familiar with programming Stretch robots via ROS 2. We recommend going through the tutorials in the following order:

Basics

Tutorial Description
1 Getting Started Setup instructions for ROS 2 on Stretch
2 Introduction to ROS 2 Explore the client library used in ROS2
3 Introduction to HelloNode Explore the Hello Node class to create a ROS2 node for Stretch
4 Teleoperating Stretch Control Stretch with a Keyboard or a Gamepad controller.
5 Internal State of Stretch Monitor the joint states of Stretch.
6 RViz Basics Visualize topics in Stretch.
7 Nav2 Stack Motion planning and control for mobile base.
8 Follow Joint Trajectory Commands Control joints using joint trajectory server.
9 Perception Use the Realsense D435i camera to visualize the environment.
10 ArUco Marker Detection Localize objects using ArUco markers.
11 ReSpeaker Microphone Array Learn to use the ReSpeaker Microphone Array.
12 FUNMAP Fast Unified Navigation, Manipulation and Planning.

Other Examples

To help get you started on your software development, here are examples of nodes to have Stretch perform simple tasks.

Tutorial Description
1 Mobile Base Velocity Control Use a python script that sends velocity commands.
2 Filter Laser Scans Publish new scan ranges that are directly in front of Stretch.
3 Mobile Base Collision Avoidance Stop Stretch from running into a wall.
4 Give Stretch a Balloon Create a "balloon" marker that goes where ever Stretch goes.
5 Print Joint States Print the joint states of Stretch.
6 Store Effort Values Print, store, and plot the effort values of the Stretch robot.
7 Capture Image Capture images from the RealSense camera data.
8 Voice to Text Interpret speech and save transcript to a text file.
9 Voice Teleoperation of Base Use speech to teleoperate the mobile base.
10 Tf2 Broadcaster and Listener Create a tf2 broadcaster and listener.
11 ArUco Tag Locator Actuate the head to locate a requested ArUco marker tag and return a transform.
12 Obstacle Avoider Avoid obstacles using the planar lidar.
13 Align to ArUco Detect ArUco fiducials using OpenCV and align to them.
14 Deep Perception Use YOLOv5 to detect 3D objects in a point cloud.
15 Avoiding Race Conditions and Deadlocks Learn how to avoid Race Conditions and Deadlocks