The hebiros package
- Maintainer status: maintained
- Maintainer: Matthew Tesch <matt AT hebirobotics DOT com>
- Author: Xavier Artache <x AT hebirobotics DOT com>, Matthew Tesch <matt AT hebirobotics DOT com>
- License: https://www.hebirobotics.com/softwarelicense/
- Bug / feature tracker: https://github.com/HebiRobotics/HEBI-ROS/issues
- Source: git https://github.com/HebiRobotics/HEBI-ROS.git (branch: master)
NOTE: This package should not be used for new projects, and is maintained for legacy use only. If possible, use http://wiki.ros.org/hebi_cpp_api_examples instead
The HEBI ROS API is provided as source code that can be compiled into a node in a catkin workspace. We provide the hebiros node, as well as several example nodes to help you get started using the API.
Below, we show how to add the hebiros node to a new workspace, and run the provided examples.
Before continuing, remember to source your environment if you have not yet done so:
(replace <distro> with kinetic, lunar, etc. as appropriate)
Creating a Workspace
First, you need to create a catkin workspace. The relevant commands are listed below; see http://wiki.ros.org/catkin/Tutorials/create_a_workspace for more information. If you already have a workspace you want to use, skip these commands.
# Create workspace mkdir -p ~/hebi_ros_ws/src\ cd ~/hebi_ros_ws/ catkin_make # Source workspace source devel/setup.bash
Download and compile the HEBI node source code
Run the following commands from the root of your workspace to download the code from the HEBI github repo.
cd src git clone email@example.com:HebiRobotics/hebi_cpp_api_ros.git git clone https://github.com/HebiRobotics/HEBI-ROS.git hebiros cd ..
Now, build the full package.
Running the examples
To run the numbered examples, first start roscore, and then run the following commands (in separate terminals)
rosrun hebiros hebiros_node
rosrun hebiros <example_name>
Note the examples assume hardcoded module name/families, and so will probably need to be changed for your particular system.
For data topics, data is arranged in arrays such that one index in each data array corresponds to one module. The order of data which corresponds to each module is based on the name array. Data arrays may not all have the same size and may be empty at minimum and the size of the group at maximum.
Create a group given a list of families and a list of names where each module is "<family>|<name>". This service can either be used with one family, which is paired with all the names, or an equal number of families and names, where each family is paired with one name.
Create a group using a urdf stored on the parameter server in robot_description. The joint names will be used as complete module names.
- Return a list of entries, which provide information about modules found on the network.
- Return the number of modules in the group.
- Set the command lifetime, which is the number of milliseconds that a command persists, for the group.
- Set the feedback frequency, which is the number of Hz at which feedback is broadcast, for the group.
- Publish full commands to all modules in the group.
- Publish only joint state commands to all modules in the group.
- Subscribe to full feedback from all modules in the group.
- Subscribe to only joint state feedback from all modules in the group.
- Execute a trajectory using waypoints for each module in the group.
/hebiros/node_frequency (int, default: 200)
- The frequency in Hz that the node runs.
/hebiros/action_frequency (int, default: 200)
- The frequency in Hz that the action runs.
/hebiros/command_lifetime (int, default: 100)
- The number of milliseconds that a command persists for all groups.
/hebiros/feedback_frequency (int, default: 100)
- The number of Hz at which feedback is broadcast for all groups.