![]() |
ros_control_boilerplate package from ros_control_boilerplate reporos_control_boilerplate |
ROS Distro
|
Package Summary
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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
Tags | No category tags. |
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 |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
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
Wiki Tutorials
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