diff --git a/getting_started/quick_start_guide_re1.md b/getting_started/quick_start_guide_re1.md index 94f51f7..426bf04 100644 --- a/getting_started/quick_start_guide_re1.md +++ b/getting_started/quick_start_guide_re1.md @@ -143,7 +143,7 @@ Once the robot has homed, let's write some quick test code: ```{.bash .shell-prompt} ipython ``` - + Now let's move the robot around using the Robot API. Try typing in these interactive commands at the iPython prompt: ```{.python .no-copy} @@ -177,7 +177,8 @@ robot.end_of_arm.move_to('stretch_gripper',-50) robot.stow() robot.stop() ``` - +!!! note + The iPython interpreter also allows you to execute blocks of code in a single go instead of running commands line by line. To end the interpreter session, type exit() and press enter. ## Change Credentials Finally, we recommend that you change the login credentials for the default user, hello-robot. diff --git a/getting_started/quick_start_guide_re2.md b/getting_started/quick_start_guide_re2.md index eb3e5ae..1bca9bb 100644 --- a/getting_started/quick_start_guide_re2.md +++ b/getting_started/quick_start_guide_re2.md @@ -194,6 +194,8 @@ robot.end_of_arm.move_to('stretch_gripper',-50) robot.stow() robot.stop() ``` +!!! note + The iPython interpreter also allows you to execute blocks of code in a single go instead of running commands line by line. To end the interpreter session, type exit() and press enter. ## Change Credentials diff --git a/mkdocs.yml b/mkdocs.yml index b3a2a9c..b219e61 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -130,7 +130,7 @@ nav: - 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 + - Mobile Base Velocity Control: ./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 @@ -170,7 +170,7 @@ nav: # - 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 + - Mobile Base Velocity Control: ./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 diff --git a/ros1/README.md b/ros1/README.md index f070023..487d027 100644 --- a/ros1/README.md +++ b/ros1/README.md @@ -17,12 +17,11 @@ This tutorial track is for users looking to get familiar with programming Stretc | 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. | +| 7 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | +| 8 | [Perception](perception.md) | Use the Realsense D435i camera to visualize the environment. | +| 9 | [ArUco Marker Detection](aruco_marker_detection.md) | Localize objects using ArUco markers. | +| 10 | [ReSpeaker Microphone Array](respeaker_microphone_array.md) | Learn to use the ReSpeaker Microphone Array. | +| 11 | [FUNMAP](https://github.com/hello-robot/stretch_ros/tree/master/stretch_funmap) | Fast Unified Navigation, Manipulation and Planning. | ## Other Examples diff --git a/ros1/autodocking_nav_stack.md b/ros1/autodocking_nav_stack.md index e5d75d8..bd4fd23 100644 --- a/ros1/autodocking_nav_stack.md +++ b/ros1/autodocking_nav_stack.md @@ -71,7 +71,7 @@ The third child of the root node is the `Move to dock` action node. This is a si The fourth and final child of the sequence node is another `fallback` node with two children - the `Charging?` condition node and the `Move to predock` action node with an `inverter` decorator node (+/- sign). The `Charging?` condition node is a subscriber that checks if the 'present' attribute of the `BatteryState` message is True. If the robot has backed up correctly into the docking station and the charger port latched, this node should return SUCCESS and the autodocking would succeed. If not, the robot moves back to the predock pose through the `Move to predock` action node and tries again. ## Code Breakdown -Let's jump into the code to see how things work under the hood. Follow along [here]() (TODO after merge) to have a look at the entire script. +Let's jump into the code to see how things work under the hood. Follow along [here](https://github.com/hello-robot/stretch_ros/blob/noetic/stretch_demos/nodes/autodocking_bt.py) to have a look at the entire script. We start off by importing the dependencies. The ones of interest are those relating to py-trees and the various behaviour classes in autodocking.autodocking_behaviours, namely, MoveBaseActionClient, CheckTF and VisualServoing. We also created custom ROS action messages for the ArucoHeadScan action defined in the action directory of stretch_demos package. ```python diff --git a/ros1/example_4.md b/ros1/example_4.md index 534bd17..0a65e08 100644 --- a/ros1/example_4.md +++ b/ros1/example_4.md @@ -172,7 +172,7 @@ The next line, `rospy.init_node(NAME, ...)`, is very important as it tells rospy Instantiate class with `Balloon()`. -Give control to ROS with `rospy.spin()`. This will allow the callback to be called whenever new messages come in. If we don't put this line in, then the node will not work, and ROS will not process any messages. +The `rospy.rate()` is the rate at which the node is going to publish information (10 Hz). ```python while not rospy.is_shutdown(): diff --git a/ros1/example_8.md b/ros1/example_8.md index 518f8de..e9bb6d3 100644 --- a/ros1/example_8.md +++ b/ros1/example_8.md @@ -9,7 +9,7 @@ This example will showcase how to save the interpreted speech from Stretch's [Re Begin by running the `respeaker.launch` file in a terminal. ```{.bash .shell-prompt} -roslaunch respeaker_ros sample_respeaker.launch +roslaunch respeaker_ros respeaker.launch ``` Then run the [speech_text.py](https://github.com/hello-robot/stretch_tutorials/blob/noetic/src/speech_text.py) node. In a new terminal, execute: diff --git a/ros1/follow_joint_trajectory.md b/ros1/follow_joint_trajectory.md index 3a5f6b9..0e32373 100644 --- a/ros1/follow_joint_trajectory.md +++ b/ros1/follow_joint_trajectory.md @@ -293,12 +293,12 @@ You can also actuate a single joint for the Stretch. Below is the list of joints ```{.bash .no-copy} ############################# JOINT LIMITS ############################# -joint_lift: lower_limit = 0.15, upper_limit = 1.10 # in meters +joint_lift: lower_limit = 0.00, upper_limit = 1.10 # in meters wrist_extension: lower_limit = 0.00, upper_limit = 0.50 # in meters joint_wrist_yaw: lower_limit = -1.75, upper_limit = 4.00 # in radians -joint_head_pan: lower_limit = -2.80, upper_limit = 2.90 # in radians -joint_head_tilt: lower_limit = -1.60, upper_limit = 0.40 # in radians -joint_gripper_finger_left: lower_limit = -0.35, upper_limit = 0.165 # in radians +joint_head_pan: lower_limit = -3.90, upper_limit = 1.50 # in radians +joint_head_tilt: lower_limit = -1.53, upper_limit = 0.79 # in radians +joint_gripper_finger_left: lower_limit = -0.6, upper_limit = 0.6 # in radians # INCLUDED JOINTS IN POSITION MODE translate_mobile_base: No lower or upper limit. Defined by a step size in meters @@ -410,4 +410,4 @@ trajectory_goal.trajectory.header.stamp = rospy.Time(0.0) trajectory_goal.trajectory.header.frame_id = 'base_link' ``` -Set `trajectory_goal` as a `FollowJointTrajectoryGoal` and define the joint names as a list. Then `trajectory_goal.trajectory.points` set by your list of points. Specify the coordinate frame that we want (*base_link*) and set the time to be now. \ No newline at end of file +Set `trajectory_goal` as a `FollowJointTrajectoryGoal` and define the joint names as a list. Then `trajectory_goal.trajectory.points` set by your list of points. Specify the coordinate frame that we want (*base_link*) and set the time to be now. diff --git a/ros2/README.md b/ros2/README.md index f02c104..f3e81aa 100644 --- a/ros2/README.md +++ b/ros2/README.md @@ -18,10 +18,10 @@ This tutorial track is for users looking to get familiar with programming Stretc | 2 | [Follow Joint Trajectory Commands](follow_joint_trajectory.md) | Control joints using joint trajectory server. | | 3 | [Internal State of Stretch](internal_state_of_stretch.md) | Monitor the joint states of Stretch. | | 4 | [RViz Basics](rviz_basics.md) | Visualize topics in Stretch. | -| 5 | [MoveIt2 Basics](moveit_basics.md) | Motion planning and control for the arm using MoveIt. | +