No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.2.0
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description ROS 2 packages for the Stretch mobile manipulators from Hello Robot Inc.
Checkout URI https://github.com/hello-robot/stretch_ros2.git
VCS Type git
VCS Version humble
Last Updated 2025-06-24
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The hello_helpers package

Additional Links

No additional links.

Maintainers

  • Hello Robot Inc.

Authors

No additional authors.

Overview

hello_helpers mostly consists of the hello_helpers Python module. This module provides various Python files used across stretch_ros2 that have not attained sufficient status to stand on their own.

Capabilities

fit_plane.py : Fits planes to 3D data.

hello_misc.py : Various functions, including a helpful Python object with which to create ROS nodes.

hello_ros_viz.py : Various helper functions for vizualizations using RViz.

Typical Usage

import hello_helpers.fit_plane as fp

import hello_helpers.hello_misc as hm

import hello_helpers.hello_ros_viz as hr

API

Classes

HelloNode

This class is a convenience class for creating a ROS 2 node for Stretch. The most common way to use this class is to extend it. In your extending class, the main funcion would call HelloNode’s main function. This would look like:

import hello_helpers.hello_misc as hm

class MyNode(hm.HelloNode):
    def __init__(self):
        hm.HelloNode.__init__(self)

    def main(self):
        hm.HelloNode.main(self, 'my_node', 'my_node', wait_for_first_pointcloud=False)
        # my_node's main logic goes here

node = MyNode()
node.main()

There is also a one-liner class method for instantiating a HelloNode for easy prototyping. One example where this is handy in sending pose commands from iPython:

# roslaunch the stretch launch file beforehand

import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
temp.move_to_pose({'joint_lift': 0.4})

Attributes

dryrun

This attribute allows you to control whether the robot actually moves when calling move_to_pose(), home_the_robot(), stow_the_robot(), or other motion methods in this class. When dryrun is set to True, these motion methods return immediately. This attribute is helpful when you want to run just the perception/planning part of your node without actually moving the robot. For example, you could replace the following verbose snippet:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
actually_move = False
[...]
if actually_move:
    temp.move_to_pose({'translate_mobile_base': 1.0})

to be more consise:

# launch the stretch driver launch file beforehand
import hello_helpers.hello_misc as hm
temp = hm.HelloNode.quick_create('temp')
[...]
temp.dryrun = True
temp.move_to_pose({'translate_mobile_base': 1.0})

Methods

move_to_pose(pose, blocking=False, custom_contact_thresholds=False, duration=2.0)

This method takes in a dictionary that describes a desired pose for the robot and communicates with stretch_driver to execute it. The basic format of this dictionary is string/number key/value pairs, where the keys are joint names and the values are desired position goals. For example, {'joint_lift': 0.5} would put the lift at 0.5m in its joint range. A full list of command-able joints is published to the /stretch/joint_states topic. Used within a node extending HelloNode, calling this method would look like:

self.move_to_pose({'joint_lift': 0.5})

Internally, this dictionary is converted into a JointTrajectory message that is sent to a FollowJointTrajectory action server in stretch_driver. This method waits by default for the server to report that the goal has completed executing. However, you can return before the goal has completed by setting the blocking argument to False. This can be useful for preempting goals.

When the robot is in position mode, if you set custom_contact_thresholds to True, this method expects a different format dictionary: string/tuple key/value pairs, where the keys are still joint names, but the values are (position_goal, effort_threshold). The addition of a effort threshold enables you to detect when a joint has made contact with something in the environment, which is useful for manipulation or safe movements. For example, {'joint_arm': (0.5, 20)} commands the telescoping arm fully out (the arm is nearly fully extended at 0.5 meters) but with a low enough effort threshold (20% of the arm motor’s max effort) that the motor will stop when the end of arm has made contact with something. Again, in a node, this would look like:

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Package Dependencies

Deps Name
rclpy

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged hello_helpers at Robotics Stack Exchange