| 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.3.1 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | jade-devel | 
| Last Updated | 2016-04-21 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 
Developed by Dave Coleman at the University of Colorado Boulder

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulaton.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
rosrun ros_control_boilerplate csv_to_controller READ_FROM_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from Keyboard
Joint-level teleop from a keyboard (TODO: remove had coded topic names)
rosrun ros_control_boilerplate keyboard_teleop
Limitations
- Does not implement estops, transmissions, or other fancy new features of ros_contorl
 - Does not have any hard realtime code, this depends largely on your platform, kernel, OS, etc
 
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.3.1 (2016-01-13)
- API deprecation fix for rosparam_shortcuts
 - Switched to better use of rosparam_shortcuts
 - Ability to record all controller status data, not just at certain frequency
 - Contributors: Dave Coleman
 
0.3.0 (2015-12-27)
- Removed bad reference name
 - Switched to using name_
 - Record error data
 - Disable soft joint limits
 - header to debug output
 - Added error checking of control loops time
 - Fix init() bug
 - Contributors: Dave Coleman
 
0.2.1 (2015-12-09)
- Merge branch 'indigo-devel' of github.com:davetcoleman/ros_control_boilerplate into indigo-devel
 - Fix install path
 - Improve user output message
 - Contributors: Dave Coleman
 
0.2.0 (2015-12-09)
- Do not automatically call init()
 - Removed warning of joint limits for continous joints
 - Fix missing variable
 - Improved rrbot_control example package
 - Moved rrbot example code into subdirectory
 - Contributors: Dave Coleman
 
0.1.4 (2015-12-07)
- Added missing dependency on sensor_msgs
 - Contributors: Dave Coleman
 
0.1.3 (2015-12-05)
- Fix catkin lint errors
 - Added FindGflags directly to this repo
 - Minor fix
 - Updated README
 - Contributors: Dave Coleman
 
0.1.2 (2015-12-02)
- Added dependency on gflags
 - Contributors: Dave Coleman
 
0.1.1 (2015-12-02)
- Added travis support
 - Updated README
 - Contributors: Dave Coleman
 
0.1.0 (2015-12-02)
- Initial release of ros_control_boilerplate
 - Contributors: Dave Coleman
 
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.3.1 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | indigo-devel | 
| Last Updated | 2016-01-13 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 
Developed by Dave Coleman at the University of Colorado Boulder

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulaton.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
rosrun ros_control_boilerplate csv_to_controller READ_FROM_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from Keyboard
Joint-level teleop from a keyboard (TODO: remove had coded topic names)
rosrun ros_control_boilerplate keyboard_teleop
Limitations
- Does not implement estops, transmissions, or other fancy new features of ros_contorl
 - Does not have any hard realtime code, this depends largely on your platform, kernel, OS, etc
 
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.3.1 (2016-01-13)
- API deprecation fix for rosparam_shortcuts
 - Switched to better use of rosparam_shortcuts
 - Ability to record all controller status data, not just at certain frequency
 - Contributors: Dave Coleman
 
0.3.0 (2015-12-27)
- Removed bad reference name
 - Switched to using name_
 - Record error data
 - Disable soft joint limits
 - header to debug output
 - Added error checking of control loops time
 - Fix init() bug
 - Contributors: Dave Coleman
 
0.2.1 (2015-12-09)
- Merge branch 'indigo-devel' of github.com:davetcoleman/ros_control_boilerplate into indigo-devel
 - Fix install path
 - Improve user output message
 - Contributors: Dave Coleman
 
0.2.0 (2015-12-09)
- Do not automatically call init()
 - Removed warning of joint limits for continous joints
 - Fix missing variable
 - Improved rrbot_control example package
 - Moved rrbot example code into subdirectory
 - Contributors: Dave Coleman
 
0.1.4 (2015-12-07)
- Added missing dependency on sensor_msgs
 - Contributors: Dave Coleman
 
0.1.3 (2015-12-05)
- Fix catkin lint errors
 - Added FindGflags directly to this repo
 - Minor fix
 - Updated README
 - Contributors: Dave Coleman
 
0.1.2 (2015-12-02)
- Added dependency on gflags
 - Contributors: Dave Coleman
 
0.1.1 (2015-12-02)
- Added travis support
 - Updated README
 - Contributors: Dave Coleman
 
0.1.0 (2015-12-02)
- Initial release of ros_control_boilerplate
 - Contributors: Dave Coleman
 
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.4.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/davetcoleman/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | kinetic-devel | 
| Last Updated | 2021-02-23 | 
| Dev Status | MAINTAINED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.4.2 (2021-02-23)
- Revert "Replaced boost with std shared_ptr" This reverts commit d3030f4d383895895931a9ca400497cfb72acdd9. This change broke the api, backporting it was an oversight.
 - Add clang-format and catkin_lint checks to CI Backported from 638d8acb242813d298d6953d62ba36804b479242
 - CMakeLists reformatting to better match catkin_lint expectations Unfortunately we will probably not be able to get catkin_lint to run warning-free, as it (correctly) detects that all rrbot_control launch files have some extra run dependencies we don't require for building the base package. Backported from 0db7327c2f14d9a0d3591adf24a82526c6053a37
 - Replaced boost with std shared_ptr Backported from 9b46eaf115c16de9e453d59085b75aa9eebc3818
 - Make NodeHandle a const reference The classes already make a copy of the NodeHandle so this change only make the interface more strict. It should not affect the external behavior of this class. Backported from 115b9624e60c38f3d5359ab186f00e9b0ae24be3
 - Whitespace cleanup Backported from aea83fc71f9a05a24382b673144cc4045b7d8a1b
 - test_trajectory: Read joints list from trajectory controller params If the [hardware_interface/joints]{.title-ref} list contains some joints configured in a trajectory controller, the [test_trajectory]{.title-ref} program exits with an error: [ERROR]: Joints on incoming goal don't match the controller joints. [ INFO]: Action finished: REJECTED [ INFO]: TestTrajectory Finished [ INFO]: Shutting down. The correct list of joints for the trajectory controller can be found in the [<trajectory_controller_name>/joints]{.title-ref} parameter. Since the [<trajectory_controller_name>/follow_joint_trajectory]{.title-ref} parameter name is already being passed in, this patch simply shortens that to [<trajectory_controller_name>]{.title-ref}, and uses it to construct both topic names. Now the trajectory is generated for the correct number of joints. Backported from 33daf81d2278a193ab8b5c75e1aaf8c5667ac109
 - Add Robert as maintainer to repo Backported from dba8338720bc3b0b2d1ed2c125953ed6d13ae3aa
 - Acknowledge maintainers of this repo in README Backported from 5f5fca18cd987e9f6a601ce393bfd47f97758aac
 - Generalize GenericHWControlLoop to all types of RobotHW (#38) Backported from 8353dd3f3e4df30bf86269f695769e788227b8ed
 - Update README.md Backported from 4e08588ba61e88893a1a6ab7f800144f22cb38a3
 - Fix build badges in README (#37) Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0 There doesn't seem to be any kinetic release for debian, so it is left out Backported from 66fd47b00b499f4e677fb47ecf8bd848b877f8e0
 - Update .travis.yml to use moveit_ci (#36) Backported from 8b50f2142a244a941b576538cf0f44879d5997d9
 - Increase num AsyncSpinners where control loops are instantiated Backported from b6a06c856c65698340cb5251531ec0e5ee94aabc
 - Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Lucas Walter, Mathias Lüdtke, Paul Bouchier, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
| Name | Deps | 
|---|---|
| moveit_sim_controller | 
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.5.2 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | melodic-devel | 
| Last Updated | 2021-07-10 | 
| Dev Status | DEVELOPED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.5.2 (2021-03-16)
- Revert "Replaced boost with std shared_ptr" This reverts commit 9fa14cd3d00328efa3d44d7bf4d849ce909310f0.
 - Contributors: JafarAbdi
 
0.5.1 (2021-02-23)
- Replaced boost with std shared_ptr
 - Make NodeHandle a const reference
 - test_trajectory: Read joints list from trajectory controller params
 - Generalize GenericHWControlLoop to all types of RobotHW (#38)
 - Increase num AsyncSpinners where control loops are instantiated
 - Contributors: AndyZe, Dave Coleman, Jafar Abdi, John Morris, Ramon Wijnands, Robert Wilbrandt, RobertWilbrandt, Tim Übelhör
 
0.5.0 (2019-09-18)
- Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: Dave Coleman, Lucas Walter, Mathias Lüdtke, Paul Bouchier, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
- Depend on Eigen3
 - Remove dependency on meta package
 - Fixed var name
 - Contributors: Dave Coleman
 
0.3.1 (2016-01-13)
- API deprecation fix for rosparam_shortcuts
 - Switched to better use of rosparam_shortcuts
 - Ability to record all controller status data, not just at certain frequency
 - Contributors: Dave Coleman
 
0.3.0 (2015-12-27)
- Removed bad reference name
 - Switched to using name_
 - Record error data
 - Disable soft joint limits
 - header to debug output
 - Added error checking of control loops time
 - Fix init() bug
 - Contributors: Dave Coleman
 
0.2.1 (2015-12-09)
- Merge branch 'indigo-devel' of github.com:davetcoleman/ros_control_boilerplate into indigo-devel
 - Fix install path
 - Improve user output message
 - Contributors: Dave Coleman
 
0.2.0 (2015-12-09)
- Do not automatically call init()
 - Removed warning of joint limits for continous joints
 - Fix missing variable
 - Improved rrbot_control example package
 - Moved rrbot example code into subdirectory
 
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch
                
 
Messages
Services
Plugins
Recent questions tagged ros_control_boilerplate at Robotics Stack Exchange
         
       | 
      
        ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate | 
      
         ROS Distro
       | 
    
Package Summary
| Version | 0.6.1 | 
| License | BSD | 
| Build type | CATKIN | 
| Use | RECOMMENDED | 
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/ros_control_boilerplate.git | 
| VCS Type | git | 
| VCS Version | noetic-devel | 
| Last Updated | 2021-07-10 | 
| Dev Status | DEVELOPED | 
| Released | RELEASED | 
| Contributing | 
        
          Help Wanted (-)
        
         Good First Issues (-) Pull Requests to Review (-)  | 
    
Package Description
Additional Links
Maintainers
- Dave Coleman
 
Authors
- Dave Coleman
 
ROS Control Boilerplate
Simple simulation interface and template for setting up a hardware interface for ros_control. The idea is you take this as a starting point for creating your hardware interfaces, and it is needed because ros_control documentation is sparse. This boilerplate demonstrates:
- Creating a hardware_interface for multiple joints for use with ros_control
 - Position Trajectory Controller
 - Control of 2 joints of the simple robot “RRBot” pictured below
 - Loading configurations with roslaunch and yaml files
 - Generating a random trajectory and sending it over an actionlib interface
 - Partial support of joint mode switching (needs to be improved)
 - Joint limits
 - Pass-through non-physics based robot simulator
 - Visualization in Rviz
 

This open source project was developed at PickNik Robotics. Need professional ROS development and consulting? Contact us at projects@picknik.ai for a free consultation.
Maintainers
Special thanks to the following maintainers of this repo:
- Dave Coleman (@davetcoleman)
 - Andy Zelenak (@AndyZe)
 - John Morris (@zultron)
 - Robert Wilbrandt (@RobertWilbrandt)
 
Status:

Video Demo
See YouTube for a very modest video demo.
Install
This package depends on gazebo_ros_demos for its rrbot_description package, but you must add it to your catkin workspace by source:
git clone https://github.com/ros-simulation/gazebo_ros_demos.git
Then, either install this package from source so you can develop off of it, or install from debian:
sudo apt-get install ros-indigo-ros-control-boilerplate
Run Simulation Demo
This package is setup to run the “RRBot” two joint revolute-revolute robot demo. This “template package” is located in the ros_control_boilerplate as a subfolder that you can easily rename and reuse. To run its ros_control non-physics-based simulated hardware interface, run:
roslaunch ros_control_boilerplate rrbot_simulation.launch
To visualize its published /tf coordinate transforms in Rviz run:
roslaunch ros_control_boilerplate rrbot_visualize.launch
To send a random, dummy trajectory to execute, run:
roslaunch ros_control_boilerplate rrbot_test_trajectory.launch
Customize
To test this as a simulation interface for your robot, you can quickly rename the subfolder package into the name of your robot using the following commands:
function findreplace() {
    grep -lr -e "$1" * | xargs sed -i "s/$1/$2/g" ;
}
function findreplacefilename() {
    find . -depth -name "*$1*" -exec bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//'$1'/'$2'}"; done' _ {} +
}
findreplacefilename rrbot myrobot
findreplace rrbot myrobot
findreplace RRBot MyRobot
findreplace RRBOT MYROBOT
Then add the necessary code to communicate with your robot via USB/serial/ethernet/etc in the file myrobot_hw_interface.cpp.
Setting an Initial Position, Using with MoveIt!
If you need your robot to startup at a particular position in simulation, or you would like to use this funcitonality to simulate your robot with MoveIt!, see the downstream package (it depends on this package) moveit_sim_controller
Other Helper Tools
Recording to CSV
Write the commands from a trajectory controller to csv file
rosrun ros_control_boilerplate controller_to_csv SAVE_TO_FILE_PATH CONTROLLER_STATE_TOPIC TIME_TO_RECORD
Commanding from CSV
Read from csv file and execute on robot
File truncated at 100 lines see the full file
Changelog for package ros_control_boilerplate
0.6.1 (2021-02-23)
- Increase required cmake version to fix CMake CMP0048 warning
 - Replaced boost with std shared_ptr
 - Make NodeHandle a const reference
 - test_trajectory: Read joints list from trajectory controller params
 - Increase num AsyncSpinners where control loops are instantiated
 - Contributors: AndyZe, Dave Coleman, John Morris, Ramon Wijnands, Robert Wilbrandt, Tim Übelhör
 
0.6.0 (2020-06-16)
- Generalize GenericHWControlLoop to all types of RobotHW (#38)
 - Update README.md
 - Fix build badges in README (#37)
 - Update .travis.yml to use moveit_ci (#36)
 - Contributors: Jafar Abdi, RobertWilbrandt
 
0.5.0 (2019-09-18)
- Merge pull request #20 from ipa-mdl/fix-loop-deadlock refactor GenericHWControlLoop to a sleep-based loop
 - Merge pull request #19 from PaulBouchier/kinetic-devel change sim_control_mode to 0 (position) so demo works
 - Merge pull request #21 from MohmadAyman/fix_typo fixed a typo in readme
 - fixed a typo in readme
 - refactor GenericHWControlLoop to a sleep-based loop using ros:Timer might lead to deadlocks
 - initialize desired_update_period_ (renamed from desired_update_freq_)
 - Revert "Depend on Eigen3" This reverts commit 608cc2fd64739ee56c3fbd5a0ae9d5d26b5684d0.
 - change sim_control_mode to 0 (position) so demo works
 - Merge pull request #16 from lucasw/xml-version xml version tags for all launch files.
 - xml version tags for all launch files.
 - Merge pull request #15 from enricotoi/kinetic-devel Fixed a typo in the README.md
 - Fixed a typo in the README.md rrbot_simulaton.launch -> rrbot_simulation.launch
 - Update README.md
 - Contributors: Dave Coleman, Lucas Walter, Mathias Lüdtke, Paul Bouchier, enrico toivinen, mohmad ayman
 
0.4.1 (2017-06-20)
- Changed boost::shared_ptr to typedef for Lunar support
 - Implemented simulated velocity control
 - Contributors: Dave Coleman
 
0.4.0 (2016-06-29)
- Depend on Eigen3
 - Remove dependency on meta package
 - Fixed var name
 - Contributors: Dave Coleman
 
0.3.1 (2016-01-13)
- API deprecation fix for rosparam_shortcuts
 - Switched to better use of rosparam_shortcuts
 - Ability to record all controller status data, not just at certain frequency
 - Contributors: Dave Coleman
 
0.3.0 (2015-12-27)
- Removed bad reference name
 - Switched to using name_
 - Record error data
 - Disable soft joint limits
 - header to debug output
 - Added error checking of control loops time
 - Fix init() bug
 - Contributors: Dave Coleman
 
0.2.1 (2015-12-09)
- Merge branch 'indigo-devel' of github.com:davetcoleman/ros_control_boilerplate into indigo-devel
 - Fix install path
 - Improve user output message
 - Contributors: Dave Coleman
 
0.2.0 (2015-12-09)
- Do not automatically call init()
 
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name | 
|---|
| libgflags-dev | 
Dependant Packages
Launch files
- rrbot_control/launch/rrbot_hardware.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_simulation.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_test_trajectory.launch
                
- 
                    
- debug [default: false]
 
 
 - rrbot_control/launch/rrbot_visualize.launch