Package Summary

Tags No category tags.
Version 0.5.0
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 2019-09-18
Dev Status DEVELOPED
Released RELEASED

Package Description

Simple simulation interface and template for setting up a hardware interface for ros_control

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

Buy Me a Coffee at ko-fi.com

  • Build Status Travis CI
  • Devel Job Status Devel Job Status
  • Build Status AMD64 Debian Job 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

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_control
  • Does not have any hard realtime code, this depends largely on your platform, kernel, OS, etc
  • Only position control is fully implemented, though some code is in place for velocity control

Contribute

Please add features, make corrections, and address the limitations above, thanks!

CHANGELOG

Changelog for package ros_control_boilerplate

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

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros_control_boilerplate at answers.ros.org

Package Summary

Tags No category tags.
Version 0.4.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 kinetic-devel
Last Updated 2018-04-05
Dev Status DEVELOPED
Released UNRELEASED

Package Description

Simple simulation interface and template for setting up a hardware interface for ros_control

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

Buy Me a Coffee at ko-fi.com

  • Build Status Travis CI
  • Devel Job Status Devel Job Status
  • Build Status AMD64 Debian Job 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

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_control
  • Does not have any hard realtime code, this depends largely on your platform, kernel, OS, etc
  • Only position control is fully implemented, though some code is in place for velocity control

Contribute

Please add features, make corrections, and address the limitations above, thanks!

CHANGELOG

Changelog for package ros_control_boilerplate

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
  • 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

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros_control_boilerplate at answers.ros.org

Package Summary

Tags No category tags.
Version 0.3.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 jade-devel
Last Updated 2016-04-21
Dev Status DEVELOPED
Released UNRELEASED

Package Description

Simple simulation interface and template for setting up a hardware interface for ros_control

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

  • Build Status Travis CI
  • Devel Job Status Devel Job Status
  • Build Status AMD64 Debian Job 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_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
  • Only position control is fully implemented, though some code is in place for velocity control

Contribute

Please add features, make corrections, and address the limitations above, thanks!

CHANGELOG

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

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros_control_boilerplate at answers.ros.org

Package Summary

Tags No category tags.
Version 0.3.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 indigo-devel
Last Updated 2016-01-13
Dev Status DEVELOPED
Released UNRELEASED

Package Description

Simple simulation interface and template for setting up a hardware interface for ros_control

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

  • Build Status Travis CI
  • Devel Job Status Devel Job Status
  • Build Status AMD64 Debian Job 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_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
  • Only position control is fully implemented, though some code is in place for velocity control

Contribute

Please add features, make corrections, and address the limitations above, thanks!

CHANGELOG

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

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros_control_boilerplate at answers.ros.org