├── effort_controllers ├── .gitignore ├── mainpage.dox ├── test │ ├── simple_bot_controllers.yaml │ ├── effort_position_controller.test │ ├── simple_bot.xacro │ └── simple_bot_hw.launch ├── effort_controllers_plugins.xml ├── package.xml ├── src │ ├── joint_effort_controller.cpp │ └── joint_group_effort_controller.cpp ├── include │ └── effort_controllers │ │ └── joint_effort_controller.h └── CMakeLists.txt ├── forward_command_controller ├── .gitignore ├── mainpage.dox ├── CMakeLists.txt └── package.xml ├── joint_state_controller ├── .gitignore ├── config │ └── joint_state_controller.yaml ├── test │ ├── joint_state_controller_ok.yaml │ ├── joint_state_controller_ko.yaml │ ├── joint_state_controller_extra_joints_ok.yaml │ ├── joint_state_controller_extra_joints_ko.yaml │ └── joint_state_controller.test ├── rosdoc.yaml ├── launch │ └── joint_state_controller.launch ├── joint_state_plugin.xml ├── package.xml └── CMakeLists.txt ├── position_controllers ├── .gitignore ├── mainpage.dox ├── position_controllers_plugins.xml ├── CMakeLists.txt ├── package.xml ├── src │ ├── joint_position_controller.cpp │ └── joint_group_position_controller.cpp └── include │ └── position_controllers │ └── joint_position_controller.h ├── velocity_controllers ├── .gitignore ├── mainpage.dox ├── velocity_controllers_plugins.xml ├── CMakeLists.txt ├── package.xml ├── src │ ├── joint_velocity_controller.cpp │ └── joint_group_velocity_controller.cpp └── include │ └── velocity_controllers │ └── joint_velocity_controller.h ├── imu_sensor_controller ├── .gitignore ├── config │ └── imu_sensor_controller.yaml ├── launch │ └── imu_sensor_controller.launch ├── imu_sensor_plugin.xml ├── CMakeLists.txt └── package.xml ├── force_torque_sensor_controller ├── .gitignore ├── config │ └── force_torque_sensor_controller.yaml ├── launch │ └── force_torque_sensor_controller.launch ├── force_torque_sensor_plugin.xml ├── CMakeLists.txt └── package.xml ├── rqt_joint_trajectory_controller ├── src │ └── rqt_joint_trajectory_controller │ │ └── __init__.py ├── rosdoc.yaml ├── resource │ ├── scope.png │ └── double_editor.ui ├── scripts │ └── rqt_joint_trajectory_controller ├── setup.py ├── CMakeLists.txt ├── plugin.xml └── package.xml ├── joint_trajectory_controller ├── .gitignore ├── images │ ├── new_trajectory.png │ ├── trajectory_replacement_now.png │ ├── trajectory_replacement_past.png │ └── trajectory_replacement_future.png ├── rosdoc.yaml ├── mainpage.dox ├── README.md ├── test │ ├── tolerances.test │ ├── rrbot_partial_controllers.yaml │ ├── rrbot_controllers.yaml │ ├── rrbot_controllers_stopramp.yaml │ ├── tolerances.yaml │ ├── rrbot_vel_controllers.yaml │ ├── rrbot_wrapping_controllers.yaml │ ├── joint_trajectory_controller.test │ ├── joint_trajectory_controller_vel.test │ ├── joint_partial_trajectory_controller.test │ ├── joint_trajectory_controller_stopramp.test │ └── joint_trajectory_controller_wrapping.test ├── package.xml └── ros_control_plugins.xml ├── diff_drive_controller ├── test │ ├── diffbot_open_loop.yaml │ ├── diffbot_timeout.yaml │ ├── diffbot_multipliers.yaml │ ├── diffbot_left_right_multipliers.yaml │ ├── diffbot_controllers.yaml │ ├── diffbot_wrong.yaml │ ├── skidsteerbot_no_wheels.yaml │ ├── diff_drive_controller.test │ ├── skid_steer_controller.test │ ├── diffbot_limits.yaml │ ├── skidsteerbot_controllers.yaml │ ├── diff_drive_open_loop.test │ ├── diff_drive_controller_limits.test │ ├── diff_drive_multipliers.test │ ├── diff_drive_odom_tf.test │ ├── diff_drive_timeout.test │ ├── diff_drive_wrong.test │ ├── diff_drive_dyn_reconf.test │ ├── diff_drive_odom_frame.test │ ├── diff_drive_controller_nan.test │ ├── diff_drive_left_right_multipliers.test │ ├── skid_steer_no_wheels.test │ ├── diff_drive_default_odom_frame.test │ ├── diff_drive_bad_urdf.test │ ├── diff_drive_pub_cmd_vel_out.test │ ├── diff_drive_default_cmd_vel_out.test │ ├── diff_drive_get_wheel_radius_fail.test │ ├── diff_drive_publish_wheel_joint_controller_state.test │ ├── diff_drive_default_wheel_joint_controller_state.test │ ├── diff_drive_radius_param.test │ ├── diff_drive_radius_param_fail.test │ ├── diff_drive_radius_sphere.test │ ├── diff_drive_separation_param.test │ ├── view_diffbot.launch │ ├── view_skidsteerbot.launch │ ├── diff_drive_common.launch │ ├── skid_steer_common.launch │ ├── diff_drive_multiple_cmd_vel_publishers.test │ ├── sphere_wheel.xacro │ ├── wheel.xacro │ ├── square_wheel.xacro │ ├── diffbot_sphere_wheels.xacro │ ├── diffbot_square_wheels.xacro │ ├── diff_drive_odom_tf_test.cpp │ ├── diffbot.xacro │ ├── diff_drive_fail_test.cpp │ └── diff_drive_publish_wheel_joint_controller_state_test.cpp ├── README.md ├── diff_drive_controller_plugins.xml ├── cfg │ └── DiffDriveController.cfg └── package.xml ├── four_wheel_steering_controller ├── README.md ├── four_wheel_steering_controller_plugins.xml ├── test │ ├── four_wheel_steering_controller_twist_cmd.test │ ├── four_wheel_steering_wrong_config.test │ ├── four_wheel_steering_controller_4ws_cmd.test │ ├── src │ │ ├── four_wheel_steering_wrong_config.cpp │ │ └── four_wheel_steering.cpp │ ├── config │ │ ├── four_wheel_steering_controller_4ws_cmd.yaml │ │ ├── four_wheel_steering_controller_twist_cmd.yaml │ │ └── four_wheel_steering_wrong_config.yaml │ ├── launch │ │ ├── view_four_wheel_steering.launch │ │ └── four_wheel_steering_common.launch │ └── urdf │ │ ├── four_wheel_steering.urdf.xacro │ │ ├── chassis.xacro │ │ ├── wheel.xacro │ │ └── wheel_steered.xacro └── package.xml ├── ros_controllers ├── CMakeLists.txt └── package.xml ├── ackermann_steering_controller ├── test │ ├── ackermann_steering_controller_open_loop_test │ │ ├── ackermann_steering_bot_open_loop.yaml │ │ └── ackermann_steering_controller_open_loop.test │ ├── ackermann_steering_controller_timeout_test │ │ ├── ackermann_steering_bot_timeout.yaml │ │ └── ackermann_steering_controller_timeout.test │ ├── common │ │ ├── config │ │ │ ├── ackermann_steering_bot_hw_sim.yaml │ │ │ └── ackermann_steering_bot_controllers.yaml │ │ ├── launch │ │ │ ├── ackermann_steering_common.launch │ │ │ └── view_ackermann_steering_bot.launch │ │ └── src │ │ │ └── ackermann_steering_bot.cpp │ ├── ackermann_steering_controller_no_steer_test │ │ ├── ackermann_steering_bot_no_steer.yaml │ │ └── ackermann_steering_controller_no_steer.test │ ├── ackermann_steering_controller_no_wheel_test │ │ ├── ackermann_steering_bot_no_wheel.yaml │ │ └── ackermann_steering_controller_no_wheel.test │ ├── ackermann_steering_controller_fail_test │ │ ├── ackermann_steering_bot_wrong.yaml │ │ ├── ackermann_steering_controller_wrong.test │ │ └── ackermann_steering_controller_fail_test.cpp │ ├── ackermann_steering_controller_limits_test │ │ ├── ackermann_steering_bot_limits.yaml │ │ └── ackermann_steering_controller_limits.test │ ├── ackermann_steering_controller_test │ │ └── ackermann_steering_controller.test │ ├── ackermann_steering_controller_nan_test │ │ └── ackermann_steering_controller_nan.test │ ├── ackermann_steering_controller_odom_tf_test │ │ ├── ackermann_steering_controller_odom_tf.test │ │ └── ackermann_steering_controller_odom_tf_test.cpp │ ├── ackermann_steering_controller_odom_frame_test │ │ └── ackermann_steering_controller_odom_frame.test │ ├── ackermann_steering_controller_default_odom_frame_test │ │ └── ackermann_steering_controller_default_odom_frame.test │ ├── ackermann_steering_controller_radius_param_fail_test │ │ └── ackermann_steering_controller_radius_param_fail.test │ ├── ackermann_steering_controller_radius_param_test │ │ └── ackermann_steering_controller_radius_param.test │ └── ackermann_steering_controller_separation_param_test │ │ └── ackermann_steering_controller_separation_param.test ├── README.md ├── ackermann_steering_controller_plugins.xml └── package.xml ├── .gitignore ├── gripper_action_controller ├── ros_control_plugins.xml ├── package.xml └── CMakeLists.txt ├── .github └── workflows │ └── ci.yml ├── LICENSE ├── .clang-format └── README.md /effort_controllers/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | lib -------------------------------------------------------------------------------- /forward_command_controller/.gitignore: -------------------------------------------------------------------------------- 1 | build -------------------------------------------------------------------------------- /joint_state_controller/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | lib -------------------------------------------------------------------------------- /position_controllers/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | lib -------------------------------------------------------------------------------- /velocity_controllers/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | lib -------------------------------------------------------------------------------- /imu_sensor_controller/.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | build 3 | lib -------------------------------------------------------------------------------- /force_torque_sensor_controller/.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | build 3 | lib -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/src/rqt_joint_trajectory_controller/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: epydoc 2 | output_dir: python -------------------------------------------------------------------------------- /joint_trajectory_controller/.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | build 3 | doc 4 | lib 5 | manifest.xml 6 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_open_loop.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | open_loop: true 3 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_timeout.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | cmd_vel_timeout: 0.5 3 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/README.md: -------------------------------------------------------------------------------- 1 | ## Four-wheel steering Controller ## 2 | 3 | Controller for a four_wheel_steering mobile base. 4 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_multipliers.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | wheel_separation_multiplier: 2.3 3 | wheel_radius_multiplier: 1.4 4 | -------------------------------------------------------------------------------- /imu_sensor_controller/config/imu_sensor_controller.yaml: -------------------------------------------------------------------------------- 1 | imu_sensor_controller: 2 | type: imu_sensor_controller/ImuSensorController 3 | publish_rate: 50 4 | -------------------------------------------------------------------------------- /joint_state_controller/config/joint_state_controller.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 50 -------------------------------------------------------------------------------- /joint_state_controller/test/joint_state_controller_ok.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 10 -------------------------------------------------------------------------------- /ros_controllers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(ros_controllers) 3 | find_package(catkin REQUIRED) 4 | catkin_metapackage() 5 | -------------------------------------------------------------------------------- /joint_state_controller/test/joint_state_controller_ko.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 0 4 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/resource/scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-controls/ros_controllers/HEAD/rqt_joint_trajectory_controller/resource/scope.png -------------------------------------------------------------------------------- /joint_trajectory_controller/images/new_trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-controls/ros_controllers/HEAD/joint_trajectory_controller/images/new_trajectory.png -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_open_loop_test/ackermann_steering_bot_open_loop.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | open_loop: true 3 | -------------------------------------------------------------------------------- /joint_state_controller/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: doxygen 2 | name: C++ API 3 | output_dir: c++ 4 | file_patterns: '*.c *.cpp *.h *.cc *.hh *.dox' 5 | exclude_patterns: 'test' -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_timeout_test/ackermann_steering_bot_timeout.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | cmd_vel_timeout: 0.5 3 | -------------------------------------------------------------------------------- /joint_trajectory_controller/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: doxygen 2 | name: C++ API 3 | output_dir: c++ 4 | file_patterns: '*.c *.cpp *.h *.cc *.hh *.dox' 5 | exclude_patterns: 'test' -------------------------------------------------------------------------------- /joint_trajectory_controller/images/trajectory_replacement_now.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-controls/ros_controllers/HEAD/joint_trajectory_controller/images/trajectory_replacement_now.png -------------------------------------------------------------------------------- /joint_trajectory_controller/images/trajectory_replacement_past.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-controls/ros_controllers/HEAD/joint_trajectory_controller/images/trajectory_replacement_past.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # vi stuff 2 | .*.sw? 3 | 4 | # Python stuff 5 | *.pyc 6 | 7 | # Data files 8 | *.dat 9 | *.csv 10 | 11 | # Emacs temp files 12 | .#* 13 | 14 | # OSX Files 15 | .DS_Store 16 | -------------------------------------------------------------------------------- /force_torque_sensor_controller/config/force_torque_sensor_controller.yaml: -------------------------------------------------------------------------------- 1 | force_torque_sensor_controller: 2 | type: force_torque_sensor_controller/ForceTorqueSensorController 3 | publish_rate: 50 4 | -------------------------------------------------------------------------------- /joint_trajectory_controller/images/trajectory_replacement_future.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-controls/ros_controllers/HEAD/joint_trajectory_controller/images/trajectory_replacement_future.png -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_left_right_multipliers.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | wheel_separation_multiplier: 2.3 3 | left_wheel_radius_multiplier: 1.4 4 | right_wheel_radius_multiplier: 1.4 5 | -------------------------------------------------------------------------------- /effort_controllers/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \mainpage 3 | \htmlinclude manifest.html 4 | 5 | \b effort_controllers 6 | 7 | 10 | 11 | --> 12 | 13 | 14 | */ 15 | -------------------------------------------------------------------------------- /position_controllers/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \mainpage 3 | \htmlinclude manifest.html 4 | 5 | \b position_controllers 6 | 7 | 10 | 11 | --> 12 | 13 | 14 | */ 15 | -------------------------------------------------------------------------------- /velocity_controllers/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \mainpage 3 | \htmlinclude manifest.html 4 | 5 | \b velocity_controllers 6 | 7 | 10 | 11 | --> 12 | 13 | 14 | */ 15 | -------------------------------------------------------------------------------- /forward_command_controller/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \mainpage 3 | \htmlinclude manifest.html 4 | 5 | \b forward_command_controller 6 | 7 | 10 | 11 | --> 12 | 13 | 14 | */ 15 | -------------------------------------------------------------------------------- /joint_trajectory_controller/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | \mainpage 3 | \htmlinclude manifest.html 4 | 5 | \b joint_trajectory_controller 6 | 7 | 10 | 11 | --> 12 | 13 | 14 | */ 15 | -------------------------------------------------------------------------------- /diff_drive_controller/README.md: -------------------------------------------------------------------------------- 1 | ## Diff Drive Controller ## 2 | 3 | Controller for a differential drive mobile base. 4 | 5 | Detailed user documentation can be found in the controller's [ROS wiki page](http://wiki.ros.org/diff_drive_controller). 6 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/scripts/rqt_joint_trajectory_controller: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | 5 | from rqt_gui.main import Main 6 | 7 | main = Main() 8 | sys.exit(main.main(sys.argv, standalone='rqt_joint_trajectory_controller')) 9 | -------------------------------------------------------------------------------- /ackermann_steering_controller/README.md: -------------------------------------------------------------------------------- 1 | ## Ackermann Steerubg Controller ## 2 | 3 | Controller for a ackermann steering drive mobile base. 4 | 5 | Detailed user documentation can be found in the controller's [ROS wiki page](http://wiki.ros.org/ackermann_steering_controller) 6 | -------------------------------------------------------------------------------- /effort_controllers/test/simple_bot_controllers.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 50 4 | 5 | position_controller: 6 | type: effort_controllers/JointPositionController 7 | joint: joint 8 | pid: {p: 0.25, d: 1.0, i: 0.0} 9 | -------------------------------------------------------------------------------- /joint_trajectory_controller/README.md: -------------------------------------------------------------------------------- 1 | ## Joint Trajectory Controller ## 2 | 3 | Controller for executing joint-space trajectories on a group of joints. 4 | 5 | Detailed user documentation can be found in the controller's [ROS wiki page](http://wiki.ros.org/joint_trajectory_controller). 6 | 7 | 8 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/tolerances.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from setuptools import setup 4 | from catkin_pkg.python_setup import generate_distutils_setup 5 | 6 | d = generate_distutils_setup( 7 | packages=['rqt_joint_trajectory_controller'], 8 | package_dir={'': 'src'} 9 | ) 10 | 11 | setup(**d) -------------------------------------------------------------------------------- /joint_state_controller/test/joint_state_controller_extra_joints_ok.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 10 4 | extra_joints: 5 | - name: 'extra1' 6 | position: 10.0 7 | velocity: 20.0 8 | effort: 30.0 9 | 10 | - name: 'extra2' 11 | position: -10.0 12 | 13 | - name: 'extra3' 14 | -------------------------------------------------------------------------------- /imu_sensor_controller/launch/imu_sensor_controller.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /joint_state_controller/launch/joint_state_controller.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/rrbot_partial_controllers.yaml: -------------------------------------------------------------------------------- 1 | rrbot_controller: 2 | type: "position_controllers/JointTrajectoryController" 3 | joints: 4 | - joint1 5 | - joint2 6 | 7 | constraints: 8 | goal_time: 0.5 9 | joint1: 10 | goal: 0.01 11 | trajectory: 0.05 12 | joint2: 13 | goal: 0.01 14 | trajectory: 0.05 15 | allow_partial_joints_goal: true 16 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/rrbot_controllers.yaml: -------------------------------------------------------------------------------- 1 | rrbot_controller: 2 | type: "position_controllers/JointTrajectoryController" 3 | joints: 4 | - joint1 5 | - joint2 6 | 7 | constraints: 8 | goal_time: 0.5 9 | joint1: 10 | goal: 0.01 11 | trajectory: 0.05 12 | joint2: 13 | goal: 0.01 14 | trajectory: 0.05 15 | stop_trajectory_duration: 0.0 16 | state_publish_rate: 100 17 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/common/config/ackermann_steering_bot_hw_sim.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_hw_sim: 2 | rear_wheel : 'rear_wheel_joint' 3 | front_steer : 'front_steer_joint' 4 | 5 | rear_wheels: ['rear_right_wheel_joint', 'rear_left_wheel_joint'] 6 | front_wheels: ['front_right_wheel_joint', 'front_left_wheel_joint'] 7 | front_steers: ['front_right_steer_joint', 'front_left_steer_joint'] 8 | 9 | wheel_separation_h : 0.20 10 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/rrbot_controllers_stopramp.yaml: -------------------------------------------------------------------------------- 1 | rrbot_controller: 2 | type: "position_controllers/JointTrajectoryController" 3 | joints: 4 | - joint1 5 | - joint2 6 | 7 | constraints: 8 | goal_time: 0.5 9 | joint1: 10 | goal: 0.01 11 | trajectory: 0.05 12 | joint2: 13 | goal: 0.01 14 | trajectory: 0.05 15 | stop_trajectory_duration: 0.1 16 | state_publish_rate: 100 17 | -------------------------------------------------------------------------------- /force_torque_sensor_controller/launch/force_torque_sensor_controller.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/tolerances.yaml: -------------------------------------------------------------------------------- 1 | constraints: 2 | goal_time: 1.0 # Defaults to zero 3 | stopped_velocity_tolerance: 0.02 # Defaults to 0.01 4 | foo_joint: 5 | trajectory: 0.05 # Not enforced if unspecified 6 | goal: 0.03 # Not enforced if unspecified 7 | bar_joint: 8 | goal: 0.01 9 | 10 | baz_joint: # Not part of joints we're looking for 11 | trajectory: 1.0 12 | goal: 2.0 13 | 14 | 15 | -------------------------------------------------------------------------------- /diff_drive_controller/diff_drive_controller_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The DiffDriveController tracks velocity commands. It expects 2 VelocityJointInterface type of hardware interfaces. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /effort_controllers/test/effort_position_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_controllers.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | type: "diff_drive_controller/DiffDriveController" 3 | left_wheel: 'wheel_0_joint' 4 | right_wheel: 'wheel_1_joint' 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /imu_sensor_controller/imu_sensor_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | This controller publishes the readings of all available IMU sensors as sensor_msgs/Imu message. The controller expects a ImuSensorInterface type of hardware interface. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_wrong.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | type: "diff_drive_controller/DiffDriveController" 3 | left_wheel: 'this_joint_does_not_exist' 4 | right_wheel: 'right_wheel_joint' 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /joint_state_controller/joint_state_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The joint state controller publishes the current joint state as a sensor_msgs/JointState message. The joint state controller expects a JointStateInterface type of hardware interface. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /diff_drive_controller/test/skidsteerbot_no_wheels.yaml: -------------------------------------------------------------------------------- 1 | skidsteerbot_controller: 2 | type: "diff_drive_controller/DiffDriveController" 3 | left_wheel: [] 4 | right_wheel: ['wheel_3_joint', 'wheel_4_joint', 'wheel_5_joint'] 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /diff_drive_controller/test/skid_steer_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ackermann_steering_controller/ackermann_steering_controller_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The AckermannSteeringController tracks velocity commands. It expects 1 VelocityJointInterface and 1 PositionJointInterfece types of hardware interfaces. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /joint_state_controller/test/joint_state_controller_extra_joints_ko.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 10 4 | extra_joints: 5 | - name: 'joint1' # should be ignored, as already exists 6 | position: 10.0 7 | velocity: 20.0 8 | effort: 30.0 9 | 10 | - name: 'bad_position' 11 | position: 'zero' 12 | 13 | - name: 'bad_velocity' 14 | velocity: 'zero' 15 | 16 | - name: 'bad_effort' 17 | effort: 'zero' 18 | 19 | - nickname: 'no_name' 20 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_limits.yaml: -------------------------------------------------------------------------------- 1 | diffbot_controller: 2 | linear: 3 | x: 4 | has_velocity_limits: true 5 | min_velocity: -0.5 6 | max_velocity: 1.0 7 | has_acceleration_limits: true 8 | min_acceleration: -0.5 9 | max_acceleration: 1.0 10 | has_jerk_limits: true 11 | max_jerk: 5.0 12 | angular: 13 | z: 14 | has_velocity_limits: true 15 | max_velocity: 2.0 16 | has_acceleration_limits: true 17 | max_acceleration: 2.0 18 | has_jerk_limits: true 19 | max_jerk: 10.0 20 | -------------------------------------------------------------------------------- /diff_drive_controller/test/skidsteerbot_controllers.yaml: -------------------------------------------------------------------------------- 1 | skidsteerbot_controller: 2 | type: "diff_drive_controller/DiffDriveController" 3 | left_wheel: ['wheel_0_joint', 'wheel_1_joint', 'wheel_2_joint'] 4 | right_wheel: ['wheel_3_joint', 'wheel_4_joint', 'wheel_5_joint'] 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/four_wheel_steering_controller_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The FourWheelSteeringController tracks velocity commands. It expects 4 VelocityJointInterface type and 4 PositionJointInterface type of hardware interfaces. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/rrbot_vel_controllers.yaml: -------------------------------------------------------------------------------- 1 | rrbot_controller: 2 | type: "velocity_controllers/JointTrajectoryController" 3 | joints: 4 | - joint1 5 | - joint2 6 | 7 | constraints: 8 | goal_time: 0.5 9 | joint1: 10 | goal: 0.01 11 | trajectory: 0.05 12 | joint2: 13 | goal: 0.01 14 | trajectory: 0.05 15 | 16 | gains: 17 | joint1: {p: 1.0, i: 0.0, d: 0.0, i_clamp: 1} 18 | joint2: {p: 1.0, i: 0.0, d: 0.0, i_clamp: 1} 19 | 20 | velocity_ff: 21 | joint1: 1.0 22 | joint2: 1.0 23 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_no_steer_test/ackermann_steering_bot_no_steer.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | type: "ackermann_steering_controller/AckermannSteeringController" 3 | rear_wheel : 'rear_wheel_joint' 4 | front_steer : '' 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_no_wheel_test/ackermann_steering_bot_no_wheel.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | type: "ackermann_steering_controller/AckermannSteeringController" 3 | rear_wheel : '' 4 | front_steer : 'front_steer_joint' 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /force_torque_sensor_controller/force_torque_sensor_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | This controller publishes the readings of all available force-torque sensors as geometry_msgs/WrenchStamped message. The controller expects a ForceTorqueSensorInterface type of hardware interface. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/rrbot_wrapping_controllers.yaml: -------------------------------------------------------------------------------- 1 | rrbot_wrapping_controller: 2 | type: "velocity_controllers/JointTrajectoryController" 3 | joints: 4 | - joint1 5 | - joint2 6 | 7 | constraints: 8 | goal_time: 0.5 9 | joint1: 10 | goal: 0.01 11 | trajectory: 0.05 12 | joint2: 13 | goal: 0.01 14 | trajectory: 0.05 15 | 16 | gains: # Required because we're controlling a velocity interface 17 | joint1: {p: 2.5, i: 0.0, d: 0.0, i_clamp: 1.0} 18 | joint2: {p: 2.5, i: 0.0, d: 0.0, i_clamp: 1.0} 19 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_fail_test/ackermann_steering_bot_wrong.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | type: "ackermann_steering_controller/AckermannSteeringController" 3 | rear_wheel : 'this_joint_does_not_exist' 4 | front_steer : 'front_steer_joint' 5 | publish_rate: 50.0 # defaults to 50 6 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 7 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 9 | -------------------------------------------------------------------------------- /effort_controllers/test/simple_bot.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /gripper_action_controller/ros_control_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_limits_test/ackermann_steering_bot_limits.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | linear: 3 | x: 4 | has_velocity_limits: true 5 | min_velocity: -0.5 6 | max_velocity: 1.0 7 | has_acceleration_limits: true 8 | min_acceleration: -0.5 9 | max_acceleration: 1.0 10 | has_jerk_limits: true 11 | max_jerk: 5.0 12 | angular: 13 | z: 14 | has_velocity_limits: true 15 | max_velocity: 0.5 16 | has_acceleration_limits: true 17 | max_acceleration: 0.5 18 | has_jerk_limits: true 19 | max_jerk: 2.5 20 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/four_wheel_steering_controller_twist_cmd.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_test/ackermann_steering_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_open_loop.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_controller_limits.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_multipliers.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_odom_tf.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | diffbot_controller: 9 | enable_odom_tf: False 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_timeout.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_wrong.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_nan_test/ackermann_steering_controller_nan.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_dyn_reconf.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | diffbot_controller: 9 | enable_odom_tf: False 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_odom_frame.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | diffbot_controller: 9 | odom_frame_id: new_odom 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_controller_nan.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | diffbot_controller: 8 | publish_cmd: True 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_left_right_multipliers.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/skid_steer_no_wheels.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/common/config/ackermann_steering_bot_controllers.yaml: -------------------------------------------------------------------------------- 1 | ackermann_steering_bot_controller: 2 | type: "ackermann_steering_controller/AckermannSteeringController" 3 | rear_wheel : 'rear_wheel_joint' 4 | front_steer : 'front_steer_joint' 5 | publish_rate: 50.0 # defaults to 50 6 | 7 | pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 8 | twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0] 9 | cmd_vel_timeout: 20.0 # we test this separately, give plenty for the other tests 10 | 11 | #wheel_separation_h : 0.4 12 | #wheel_radius : 0.11 13 | wheel_separation_h_multiplier: 0.257 # calibration parameter for odometory, needed for test. 14 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_default_odom_frame.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_bad_urdf.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_pub_cmd_vel_out.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | diffbot_controller: 8 | publish_cmd: True 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /forward_command_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(forward_command_controller) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | controller_interface 7 | hardware_interface 8 | realtime_tools 9 | roscpp 10 | std_msgs 11 | ) 12 | 13 | # Declare catkin package 14 | catkin_package( 15 | INCLUDE_DIRS 16 | include 17 | CATKIN_DEPENDS 18 | controller_interface 19 | hardware_interface 20 | realtime_tools 21 | roscpp 22 | std_msgs 23 | ) 24 | 25 | 26 | ############# 27 | ## Install ## 28 | ############# 29 | 30 | # Install headers 31 | install(DIRECTORY include/${PROJECT_NAME}/ 32 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 33 | ) 34 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Test ros_controllers 2 | on: 3 | pull_request: 4 | push: 5 | branches: 6 | - noetic-devel 7 | schedule: 8 | # Run every morning to detect flakiness and broken dependencies 9 | - cron: '17 8 * * *' 10 | 11 | jobs: 12 | industrial_ci: 13 | runs-on: ubuntu-latest 14 | strategy: 15 | matrix: 16 | env: 17 | - {ROS_DISTRO: noetic, ROS_REPO: main} 18 | - {ROS_DISTRO: noetic, ROS_REPO: testing} 19 | - {ROS_DISTRO: noetic, UPSTREAM_WORKSPACE: "https://raw.githubusercontent.com/ros-controls/ros_control/$ROS_DISTRO-devel/ros_control.rosinstall -ros_controllers"} 20 | steps: 21 | - uses: actions/checkout@v1 22 | - uses: ros-industrial/industrial_ci@master 23 | env: ${{matrix.env}} 24 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_default_cmd_vel_out.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_get_wheel_radius_fail.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(rqt_joint_trajectory_controller) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS) 6 | 7 | catkin_python_setup() 8 | 9 | # Declare a catkin package 10 | catkin_package() 11 | 12 | 13 | ############# 14 | ## Install ## 15 | ############# 16 | 17 | # Install plugins 18 | install(FILES plugin.xml 19 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 20 | ) 21 | 22 | # Intall extra 23 | install(DIRECTORY resource 24 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 25 | ) 26 | 27 | # Install scripts 28 | catkin_install_python(PROGRAMS 29 | scripts/rqt_joint_trajectory_controller 30 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 31 | ) 32 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/four_wheel_steering_wrong_config.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Graphical frontend for interacting with joint_trajectory_controller instances. 7 | 8 | 9 | 10 | 11 | folder 12 | Plugins related to robot tools. 13 | 14 | 15 | resource/scope.png 16 | 17 | Monitor and send commands to running joint trajectory controllers. 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /position_controllers/position_controllers_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The JointPositionController tracks position commands. It expects a PositionJointInterface type of hardware interface. 6 | 7 | 8 | 9 | 10 | 11 | The JointGroupPositionController tracks position commands for a set of joints. It expects a PositionJointInterface type of hardware interface. 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /joint_state_controller/test/joint_state_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_odom_tf_test/ackermann_steering_controller_odom_tf.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ackermann_steering_bot_controller: 8 | enable_odom_tf: False 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /diff_drive_controller/cfg/DiffDriveController.cfg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | PACKAGE = 'diff_drive_controller' 4 | 5 | from dynamic_reconfigure.parameter_generator_catkin import ParameterGenerator, bool_t, double_t 6 | 7 | gen = ParameterGenerator() 8 | 9 | # Kinematic parameters related 10 | gen.add("left_wheel_radius_multiplier", double_t, 0, "Left wheel radius multiplier.", 1.0, 0.5, 1.5) 11 | gen.add("right_wheel_radius_multiplier", double_t, 0, "Right wheel radius multiplier.", 1.0, 0.5, 1.5) 12 | gen.add("wheel_separation_multiplier", double_t, 0, "Wheel separation multiplier.", 1.0, 0.5, 1.5) 13 | 14 | # Publication related 15 | gen.add("publish_rate", double_t, 0, "Publish rate of odom.", 50.0, 0.0, 2000.0) 16 | gen.add("enable_odom_tf", bool_t, 0, "Publish odom frame to tf.", True) 17 | 18 | exit(gen.generate(PACKAGE, "diff_drive_controller", "DiffDriveController")) 19 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_publish_wheel_joint_controller_state.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | diffbot_controller: 9 | publish_wheel_joint_controller_state: True 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_odom_frame_test/ackermann_steering_controller_odom_frame.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ackermann_steering_bot_controller: 9 | odom_frame_id: new_odom 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_default_wheel_joint_controller_state.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/four_wheel_steering_controller_4ws_cmd.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/src/four_wheel_steering_wrong_config.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "test_common.h" 3 | 4 | // TEST CASES 5 | TEST_F(FourWheelSteeringControllerTest, testWrongConfig) 6 | { 7 | // The controller should be never alive 8 | int secs = 0; 9 | while(!isControllerAlive() && ros::ok() && secs < 5) 10 | { 11 | ros::Duration(1.0).sleep(); 12 | secs++; 13 | } 14 | if (!ros::ok()) 15 | FAIL() << "Something went wrong while executing test."; 16 | // Give up and assume controller load failure after 5 seconds 17 | EXPECT_GE(secs,5); 18 | } 19 | 20 | 21 | int main(int argc, char** argv) 22 | { 23 | testing::InitGoogleTest(&argc, argv); 24 | ros::init(argc, argv, "four_wheel_steering_wrong_config_test"); 25 | 26 | ros::AsyncSpinner spinner(1); 27 | spinner.start(); 28 | int ret = RUN_ALL_TESTS(); 29 | spinner.stop(); 30 | ros::shutdown(); 31 | return ret; 32 | } 33 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_limits_test/ackermann_steering_controller_limits.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_default_odom_frame_test/ackermann_steering_controller_default_odom_frame.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_fail_test/ackermann_steering_controller_wrong.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_timeout_test/ackermann_steering_controller_timeout.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_radius_param.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /effort_controllers/test/simple_bot_hw.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_open_loop_test/ackermann_steering_controller_open_loop.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_radius_param_fail.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_radius_sphere.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_no_steer_test/ackermann_steering_controller_no_steer.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_no_wheel_test/ackermann_steering_controller_no_wheel.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/config/four_wheel_steering_controller_4ws_cmd.yaml: -------------------------------------------------------------------------------- 1 | robot_joint_publisher: 2 | type: "joint_state_controller/JointStateController" 3 | publish_rate: 50 4 | four_wheel_steering_controller: 5 | type: "four_wheel_steering_controller/FourWheelSteeringController" 6 | front_wheel: ['front_left_wheel', 'front_right_wheel'] 7 | rear_wheel: ['rear_left_wheel', 'rear_right_wheel'] 8 | front_steering: ['front_left_steering_joint', 'front_right_steering_joint'] 9 | rear_steering: ['rear_left_steering_joint', 'rear_right_steering_joint'] 10 | publish_rate: 50 11 | pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 12 | twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 13 | cmd_vel_timeout: 25.0 # not tested here 14 | 15 | # Base frame_id 16 | base_frame_id: base_footprint 17 | 18 | # Odometry fused with IMU is published by robot_localization, so 19 | # no need to publish a TF based on encoders alone. 20 | enable_odom_tf: true 21 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/config/four_wheel_steering_controller_twist_cmd.yaml: -------------------------------------------------------------------------------- 1 | robot_joint_publisher: 2 | type: "joint_state_controller/JointStateController" 3 | publish_rate: 50 4 | four_wheel_steering_controller: 5 | type: "four_wheel_steering_controller/FourWheelSteeringController" 6 | front_wheel: ['front_left_wheel', 'front_right_wheel'] 7 | rear_wheel: ['rear_left_wheel', 'rear_right_wheel'] 8 | front_steering: ['front_left_steering_joint', 'front_right_steering_joint'] 9 | rear_steering: ['rear_left_steering_joint', 'rear_right_steering_joint'] 10 | publish_rate: 50 11 | pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 12 | twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 13 | cmd_vel_timeout: 25.0 # not tested here 14 | 15 | # Base frame_id 16 | base_frame_id: base_footprint 17 | 18 | # Odometry fused with IMU is published by robot_localization, so 19 | # no need to publish a TF based on encoders alone. 20 | enable_odom_tf: true 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_separation_param.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /diff_drive_controller/test/view_diffbot.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /diff_drive_controller/test/view_skidsteerbot.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_radius_param_fail_test/ackermann_steering_controller_radius_param_fail.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_radius_param_test/ackermann_steering_controller_radius_param.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_common.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 35 | 36 | -------------------------------------------------------------------------------- /diff_drive_controller/test/skid_steer_common.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 35 | 36 | -------------------------------------------------------------------------------- /velocity_controllers/velocity_controllers_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The JointVelocityController tracks velocity commands. It expects a VelocityJointInterface type of hardware interface. 6 | 7 | 8 | 9 | 10 | 11 | The JointPositionController converts position commands to velocity commands. It expects a VelocityJointInterface type of hardware interface. 12 | 13 | 14 | 15 | 16 | 17 | The JointGroupVelocityController tracks velocity commands for a set of joints. It expects a VelocityJointInterface type of hardware interface. 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_separation_param_test/ackermann_steering_controller_separation_param.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_multiple_cmd_vel_publishers.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /gripper_action_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | gripper_action_controller 7 | 0.22.0 8 | The gripper_action_controller package 9 | 10 | BSD 11 | 12 | Sachin Chitta 13 | Bence Magyar 14 | Enrique Fernandez 15 | 16 | Sachin Chitta 17 | 18 | catkin 19 | 20 | actionlib 21 | controller_interface 22 | control_toolbox 23 | realtime_tools 24 | roscpp 25 | urdf 26 | 27 | control_msgs 28 | hardware_interface 29 | pluginlib 30 | 31 | control_msgs 32 | hardware_interface 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /position_controllers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(position_controllers) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | forward_command_controller 7 | hardware_interface 8 | pluginlib 9 | roscpp 10 | ) 11 | 12 | # Declare a catkin package 13 | catkin_package( 14 | CATKIN_DEPENDS forward_command_controller hardware_interface 15 | INCLUDE_DIRS include 16 | LIBRARIES ${PROJECT_NAME} 17 | ) 18 | 19 | 20 | ########### 21 | ## Build ## 22 | ########### 23 | 24 | # Specify header include paths 25 | include_directories(include ${catkin_INCLUDE_DIRS}) 26 | add_library(${PROJECT_NAME} 27 | src/joint_group_position_controller.cpp 28 | src/joint_position_controller.cpp 29 | ) 30 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 31 | 32 | 33 | ############# 34 | ## Install ## 35 | ############# 36 | 37 | # Install headers 38 | install(DIRECTORY include/${PROJECT_NAME}/ 39 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 40 | ) 41 | 42 | # Install targets 43 | install(TARGETS ${PROJECT_NAME} 44 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 45 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 46 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 47 | ) 48 | 49 | # Install plugins 50 | install(FILES position_controllers_plugins.xml 51 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 52 | ) 53 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/config/four_wheel_steering_wrong_config.yaml: -------------------------------------------------------------------------------- 1 | four_wheel_steering_controller: 2 | type: "four_wheel_steering_controller/FourWheelSteeringController" 3 | front_wheel: ['joint_that_does_not_exist', 'front_right_wheel'] 4 | rear_wheel: ['rear_left_wheel', 'rear_right_wheel'] 5 | front_steering: ['front_left_steering_joint', 'front_right_steering_joint'] 6 | rear_steering: ['rear_left_steering_joint', 'rear_right_steering_joint'] 7 | publish_rate: 50 8 | pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 9 | twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 10 | cmd_vel_timeout: 0.25 11 | 12 | # Base frame_id 13 | base_frame_id: base_footprint 14 | 15 | # Odometry fused with IMU is published by robot_localization, so 16 | # no need to publish a TF based on encoders alone. 17 | enable_odom_tf: true 18 | 19 | #wheel_separation: 1.23 20 | #wheel_radius: 0.28 21 | #wheel_base: 1.22 22 | 23 | # Velocity and acceleration limits 24 | # Whenever a min_* is unspecified, default to -max_* 25 | linear: 26 | x: 27 | has_velocity_limits : true 28 | max_velocity : 3.0 # m/s 29 | has_acceleration_limits: true 30 | max_acceleration : 3.0 # m/s^2 31 | angular: 32 | z: 33 | has_velocity_limits : true 34 | max_velocity : 1.0 # rad/s 35 | has_acceleration_limits: true 36 | max_acceleration : 2.0 # rad/s^2 37 | -------------------------------------------------------------------------------- /diff_drive_controller/test/sphere_wheel.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 1 36 | 1 37 | 38 | 39 | 40 | Gazebo/Red 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /gripper_action_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(gripper_action_controller) 3 | 4 | find_package(catkin 5 | REQUIRED COMPONENTS 6 | actionlib 7 | control_msgs 8 | control_toolbox 9 | controller_interface 10 | hardware_interface 11 | pluginlib 12 | realtime_tools 13 | roscpp 14 | urdf 15 | ) 16 | 17 | catkin_package( 18 | INCLUDE_DIRS include 19 | LIBRARIES gripper_action_controller 20 | CATKIN_DEPENDS 21 | actionlib 22 | control_msgs 23 | control_toolbox 24 | controller_interface 25 | hardware_interface 26 | realtime_tools 27 | roscpp 28 | urdf 29 | ) 30 | 31 | 32 | ########### 33 | ## Build ## 34 | ########### 35 | 36 | # Specify header include paths 37 | include_directories(include ${catkin_INCLUDE_DIRS}) 38 | 39 | add_library(gripper_action_controller 40 | src/gripper_action_controller.cpp 41 | ) 42 | target_link_libraries(gripper_action_controller ${catkin_LIBRARIES}) 43 | 44 | 45 | ############# 46 | ## Install ## 47 | ############# 48 | 49 | # Install headers 50 | install(DIRECTORY include/${PROJECT_NAME}/ 51 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 52 | ) 53 | 54 | # Install targets 55 | install(TARGETS gripper_action_controller 56 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 57 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 58 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 59 | ) 60 | 61 | # Install plugins 62 | install(FILES ros_control_plugins.xml 63 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 64 | ) 65 | -------------------------------------------------------------------------------- /joint_state_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | joint_state_controller 7 | 0.22.0 8 | Controller to publish joint state 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Wim Meeussen 21 | 22 | catkin 23 | 24 | controller_interface 25 | realtime_tools 26 | roscpp 27 | 28 | hardware_interface 29 | pluginlib 30 | sensor_msgs 31 | 32 | hardware_interface 33 | sensor_msgs 34 | 35 | rostest 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /position_controllers/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | position_controllers 7 | 0.22.0 8 | position_controllers 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Vijay Pradeep 21 | 22 | catkin 23 | 24 | forward_command_controller 25 | hardware_interface 26 | pluginlib 27 | roscpp 28 | 29 | forward_command_controller 30 | hardware_interface 31 | 32 | controller_interface 33 | roscpp 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /diff_drive_controller/test/wheel.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 1 36 | 1 37 | 38 | 39 | 40 | Gazebo/Red 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /imu_sensor_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(imu_sensor_controller) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | controller_interface 7 | hardware_interface 8 | pluginlib 9 | realtime_tools 10 | roscpp 11 | sensor_msgs 12 | ) 13 | 14 | # Declare a catkin package 15 | catkin_package( 16 | CATKIN_DEPENDS 17 | controller_interface 18 | hardware_interface 19 | realtime_tools 20 | roscpp 21 | sensor_msgs 22 | INCLUDE_DIRS include 23 | LIBRARIES ${PROJECT_NAME} 24 | ) 25 | 26 | 27 | ########### 28 | ## Build ## 29 | ########### 30 | 31 | include_directories(include ${catkin_INCLUDE_DIRS}) 32 | 33 | add_library(${PROJECT_NAME} 34 | src/imu_sensor_controller.cpp 35 | include/imu_sensor_controller/imu_sensor_controller.h 36 | ) 37 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 38 | 39 | 40 | ############# 41 | ## Install ## 42 | ############# 43 | 44 | # Install headers 45 | install(DIRECTORY include/${PROJECT_NAME}/ 46 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 47 | ) 48 | 49 | # Install targets 50 | install(TARGETS ${PROJECT_NAME} 51 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 52 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 53 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 54 | ) 55 | 56 | # Install plugins 57 | install(FILES imu_sensor_plugin.xml 58 | config/imu_sensor_controller.yaml 59 | launch/imu_sensor_controller.launch 60 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 61 | ) 62 | -------------------------------------------------------------------------------- /imu_sensor_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | imu_sensor_controller 7 | 0.22.0 8 | Controller to publish state of IMU sensors 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Adolfo Rodriguez Tsouroukdissian 21 | 22 | catkin 23 | 24 | controller_interface 25 | realtime_tools 26 | roscpp 27 | 28 | hardware_interface 29 | pluginlib 30 | sensor_msgs 31 | 32 | hardware_interface 33 | sensor_msgs 34 | 35 | controller_manager 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /force_torque_sensor_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(force_torque_sensor_controller) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | controller_interface 7 | geometry_msgs 8 | hardware_interface 9 | pluginlib 10 | realtime_tools 11 | roscpp 12 | ) 13 | 14 | # Declare catkin package 15 | catkin_package( 16 | CATKIN_DEPENDS 17 | controller_interface 18 | geometry_msgs 19 | hardware_interface 20 | realtime_tools 21 | roscpp 22 | INCLUDE_DIRS include 23 | LIBRARIES ${PROJECT_NAME} 24 | ) 25 | 26 | 27 | ########### 28 | ## Build ## 29 | ########### 30 | 31 | # Specify header include paths 32 | include_directories(include ${catkin_INCLUDE_DIRS}) 33 | 34 | add_library(${PROJECT_NAME} 35 | src/force_torque_sensor_controller.cpp 36 | ) 37 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 38 | 39 | 40 | ############# 41 | ## Install ## 42 | ############# 43 | 44 | # Install headers 45 | install(DIRECTORY include/${PROJECT_NAME}/ 46 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 47 | ) 48 | 49 | # Install targets 50 | install(TARGETS ${PROJECT_NAME} 51 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 52 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 53 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 54 | ) 55 | 56 | # Intall plugins 57 | install(FILES force_torque_sensor_plugin.xml 58 | config/force_torque_sensor_controller.yaml 59 | launch/force_torque_sensor_controller.launch 60 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 61 | ) 62 | -------------------------------------------------------------------------------- /force_torque_sensor_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | force_torque_sensor_controller 7 | 0.22.0 8 | Controller to publish state of force-torque sensors 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Adolfo Rodriguez Tsouroukdissian 21 | 22 | catkin 23 | 24 | controller_interface 25 | realtime_tools 26 | roscpp 27 | 28 | geometry_msgs 29 | hardware_interface 30 | pluginlib 31 | 32 | geometry_msgs 33 | hardware_interface 34 | 35 | controller_manager 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | rqt_joint_trajectory_controller 7 | 0.22.0 8 | Graphical frontend for interacting with joint_trajectory_controller instances. 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | http://wiki.ros.org/rqt_joint_trajectory_controller 17 | 18 | Adolfo Rodriguez Tsouroukdissian 19 | 20 | catkin 21 | python-setuptools 22 | python3-setuptools 23 | 24 | control_msgs 25 | controller_manager_msgs 26 | python_qt_binding 27 | python3-rospkg 28 | trajectory_msgs 29 | rospy 30 | rqt_gui 31 | rqt_gui_py 32 | qt_gui 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ros_controllers/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ros_controllers 7 | 0.22.0 8 | Library of ros controllers 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | http://ros.org/wiki/ros_controllers 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers/ 19 | 20 | Wim Meeussen 21 | 22 | catkin 23 | 24 | ackermann_steering_controller 25 | diff_drive_controller 26 | effort_controllers 27 | force_torque_sensor_controller 28 | forward_command_controller 29 | gripper_action_controller 30 | imu_sensor_controller 31 | joint_state_controller 32 | joint_trajectory_controller 33 | position_controllers 34 | velocity_controllers 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/joint_trajectory_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/joint_trajectory_controller_vel.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/launch/view_four_wheel_steering.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/joint_partial_trajectory_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/joint_trajectory_controller_stopramp.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /forward_command_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | forward_command_controller 7 | 0.22.0 8 | forward_command_controller 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Vijay Pradeep 21 | Adolfo Rodriguez Tsouroukdissian 22 | 23 | catkin 24 | 25 | controller_interface 26 | hardware_interface 27 | realtime_tools 28 | roscpp 29 | std_msgs 30 | 31 | controller_interface 32 | hardware_interface 33 | realtime_tools 34 | roscpp 35 | std_msgs 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (C) 2008-2012 hiDOF, Inc & Willow Garage, Inc 4 | Copyright (C) 2013-2017 PAL Robotics S.L. 5 | Copyright note valid unless otherwise stated in individual files. 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, this 12 | list of conditions and the following disclaimer. 13 | 14 | * Redistributions in binary form must reproduce the above copyright notice, 15 | this list of conditions and the following disclaimer in the documentation 16 | and/or other materials provided with the distribution. 17 | 18 | * Neither the name of the copyright holder nor the names of its 19 | contributors may be used to endorse or promote products derived from 20 | this software without specific prior written permission. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 26 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 28 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | -------------------------------------------------------------------------------- /diff_drive_controller/test/square_wheel.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 1 37 | 1 38 | 39 | 40 | 41 | Gazebo/Red 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /velocity_controllers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(velocity_controllers) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | angles 7 | control_msgs 8 | control_toolbox 9 | controller_interface 10 | forward_command_controller 11 | hardware_interface 12 | pluginlib 13 | realtime_tools 14 | roscpp 15 | std_msgs 16 | urdf 17 | ) 18 | 19 | # Declare catkin package 20 | catkin_package( 21 | CATKIN_DEPENDS 22 | control_msgs 23 | control_toolbox 24 | controller_interface 25 | forward_command_controller 26 | hardware_interface 27 | realtime_tools 28 | std_msgs 29 | urdf 30 | INCLUDE_DIRS include 31 | LIBRARIES ${PROJECT_NAME} 32 | ) 33 | 34 | 35 | ########### 36 | ## Build ## 37 | ########### 38 | 39 | # Specify header include paths 40 | include_directories(include ${catkin_INCLUDE_DIRS}) 41 | 42 | add_library(${PROJECT_NAME} 43 | src/joint_velocity_controller.cpp 44 | src/joint_position_controller.cpp 45 | src/joint_group_velocity_controller.cpp 46 | ) 47 | 48 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 49 | 50 | 51 | ############# 52 | ## Install ## 53 | ############# 54 | 55 | # Install headers 56 | install(DIRECTORY include/${PROJECT_NAME}/ 57 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) 58 | 59 | # Install targets 60 | install(TARGETS ${PROJECT_NAME} 61 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 62 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 63 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 64 | ) 65 | 66 | # Install plugins 67 | install(FILES velocity_controllers_plugins.xml 68 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 69 | ) 70 | -------------------------------------------------------------------------------- /joint_trajectory_controller/test/joint_trajectory_controller_wrapping.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/common/launch/ackermann_steering_common.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 22 | 23 | 24 | 38 | 39 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/common/launch/view_ackermann_steering_bot.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /velocity_controllers/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | velocity_controllers 7 | 0.22.0 8 | velocity_controllers 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Vijay Pradeep 21 | 22 | catkin 23 | 24 | control_toolbox 25 | controller_interface 26 | realtime_tools 27 | roscpp 28 | urdf 29 | 30 | angles 31 | control_msgs 32 | forward_command_controller 33 | hardware_interface 34 | pluginlib 35 | std_msgs 36 | 37 | control_msgs 38 | forward_command_controller 39 | hardware_interface 40 | std_msgs 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ackermann_steering_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ackermann_steering_controller 7 | 0.22.0 8 | Controller for a steer drive mobile base. 9 | 10 | Masaru Morita 11 | Bence Magyar 12 | 13 | BSD 14 | 15 | https://github.com/ros-controls/ros_controllers/issues 16 | https://github.com/ros-controls/ros_controllers/ackermann_steering_controller 17 | 18 | Masaru Morita 19 | 20 | catkin 21 | 22 | controller_interface 23 | diff_drive_controller 24 | hardware_interface 25 | nav_msgs 26 | realtime_tools 27 | roscpp 28 | tf 29 | 30 | boost 31 | pluginlib 32 | liburdfdom-dev 33 | 34 | boost 35 | 36 | pluginlib 37 | liburdfdom-dev 38 | 39 | controller_manager 40 | controller_manager_msgs 41 | geometry_msgs 42 | rostest 43 | std_msgs 44 | std_srvs 45 | xacro 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /effort_controllers/effort_controllers_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The JointPositionController tracks position commands. It expects a EffortJointInterface type of hardware interface. 6 | 7 | 8 | 9 | 10 | 11 | The JointVelocityController tracks velocity commands. It expects a EffortJointInterface type of hardware interface. 12 | 13 | 14 | 15 | 16 | 17 | The JointEffortController tracks effort commands. It expects a EffortJointInterface type of hardware interface. 18 | 19 | 20 | 21 | 22 | 23 | The JointGroupEffortController tracks effort commands for a set of joints. It expects a EffortJointInterface type of hardware interface. 24 | 25 | 26 | 27 | 28 | 29 | The JointGroupPositionController tracks position commands for a set of joints. It expects a EffortJointInterface type of hardware interface. 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/launch/four_wheel_steering_common.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 33 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /diff_drive_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | diff_drive_controller 7 | 0.22.0 8 | Controller for a differential drive mobile base. 9 | 10 | Bence Magyar 11 | Enrique Fernandez 12 | 13 | BSD 14 | 15 | https://github.com/ros-controls/ros_controllers/wiki 16 | https://github.com/ros-controls/ros_controllers/issues 17 | https://github.com/ros-controls/ros_controllers 18 | 19 | Bence Magyar 20 | 21 | catkin 22 | 23 | controller_interface 24 | control_msgs 25 | dynamic_reconfigure 26 | geometry_msgs 27 | hardware_interface 28 | nav_msgs 29 | realtime_tools 30 | tf 31 | 32 | boost 33 | pluginlib 34 | urdf 35 | 36 | boost 37 | 38 | pluginlib 39 | urdf 40 | 41 | controller_manager 42 | rosgraph_msgs 43 | rostest 44 | rostopic 45 | std_srvs 46 | xacro 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /joint_state_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(joint_state_controller) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | controller_interface 7 | hardware_interface 8 | pluginlib 9 | realtime_tools 10 | roscpp 11 | sensor_msgs 12 | ) 13 | 14 | # Declare a catkin package 15 | catkin_package( 16 | CATKIN_DEPENDS 17 | controller_interface 18 | hardware_interface 19 | realtime_tools 20 | roscpp 21 | sensor_msgs 22 | LIBRARIES 23 | ${PROJECT_NAME} 24 | INCLUDE_DIRS 25 | include 26 | ) 27 | 28 | 29 | ########### 30 | ## Build ## 31 | ########### 32 | 33 | # Specify header include paths 34 | include_directories(include ${Boost_INCLUDE_DIR} ${catkin_INCLUDE_DIRS}) 35 | 36 | add_library(${PROJECT_NAME} 37 | src/joint_state_controller.cpp 38 | ) 39 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 40 | 41 | 42 | ############# 43 | ## Testing ## 44 | ############# 45 | 46 | if(CATKIN_ENABLE_TESTING) 47 | find_package(rostest REQUIRED) 48 | 49 | add_rostest_gtest(joint_state_controller_test 50 | test/joint_state_controller.test 51 | test/joint_state_controller_test.cpp 52 | ) 53 | target_link_libraries(joint_state_controller_test ${PROJECT_NAME}) 54 | 55 | endif() 56 | 57 | 58 | ############# 59 | ## Install ## 60 | ############# 61 | 62 | # Install headers 63 | install(DIRECTORY include/${PROJECT_NAME}/ 64 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 65 | ) 66 | 67 | # Install targets 68 | install(TARGETS ${PROJECT_NAME} 69 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 70 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 71 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 72 | ) 73 | 74 | # Install plugins 75 | install(FILES joint_state_plugin.xml 76 | config/joint_state_controller.yaml 77 | launch/joint_state_controller.launch 78 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 79 | ) 80 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | four_wheel_steering_controller 7 | 0.22.0 8 | Controller for a four wheel steering mobile base. 9 | 10 | Vincent Rousseau 11 | 12 | BSD 13 | 14 | http://ros.org/wiki/four_wheel_steering_controller 15 | https://github.com/ros-controls/ros_controllers/issues 16 | https://github.com/ros-controls/ros_controllers 17 | 18 | Vincent Rousseau 19 | 20 | catkin 21 | 22 | controller_interface 23 | realtime_tools 24 | roscpp 25 | tf 26 | 27 | four_wheel_steering_msgs 28 | hardware_interface 29 | libboost-dev 30 | nav_msgs 31 | pluginlib 32 | urdf_geometry_parser 33 | 34 | four_wheel_steering_msgs 35 | hardware_interface 36 | libboost-dev 37 | nav_msgs 38 | 39 | controller_manager 40 | geometry_msgs 41 | std_msgs 42 | std_srvs 43 | rosgraph_msgs 44 | rostest 45 | xacro 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/urdf/four_wheel_steering.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: Google 3 | AccessModifierOffset: -2 4 | ConstructorInitializerIndentWidth: 2 5 | AlignEscapedNewlinesLeft: false 6 | AlignTrailingComments: true 7 | AllowAllParametersOfDeclarationOnNextLine: false 8 | AllowShortIfStatementsOnASingleLine: false 9 | AllowShortLoopsOnASingleLine: false 10 | AllowShortFunctionsOnASingleLine: None 11 | AllowShortLoopsOnASingleLine: false 12 | AlwaysBreakTemplateDeclarations: true 13 | AlwaysBreakBeforeMultilineStrings: false 14 | BreakBeforeBinaryOperators: false 15 | BreakBeforeTernaryOperators: false 16 | BreakConstructorInitializersBeforeComma: true 17 | BinPackParameters: true 18 | ColumnLimit: 120 19 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 20 | DerivePointerBinding: false 21 | PointerBindsToType: true 22 | ExperimentalAutoDetectBinPacking: false 23 | IndentCaseLabels: true 24 | MaxEmptyLinesToKeep: 1 25 | NamespaceIndentation: None 26 | ObjCSpaceBeforeProtocolList: true 27 | PenaltyBreakBeforeFirstCallParameter: 19 28 | PenaltyBreakComment: 60 29 | PenaltyBreakString: 100 30 | PenaltyBreakFirstLessLess: 1000 31 | PenaltyExcessCharacter: 1000 32 | PenaltyReturnTypeOnItsOwnLine: 70 33 | SpacesBeforeTrailingComments: 2 34 | Cpp11BracedListStyle: false 35 | Standard: Auto 36 | IndentWidth: 2 37 | TabWidth: 2 38 | UseTab: Never 39 | IndentFunctionDeclarationAfterType: false 40 | SpacesInParentheses: false 41 | SpacesInAngles: false 42 | SpaceInEmptyParentheses: false 43 | SpacesInCStyleCastParentheses: false 44 | SpaceAfterControlStatementKeyword: true 45 | SpaceBeforeAssignmentOperators: true 46 | ContinuationIndentWidth: 4 47 | SortIncludes: false 48 | SpaceAfterCStyleCast: false 49 | 50 | # Configure each individual brace in BraceWrapping 51 | BreakBeforeBraces: Custom 52 | 53 | # Control of individual brace wrapping cases 54 | BraceWrapping: { 55 | AfterClass: 'true' 56 | AfterControlStatement: 'true' 57 | AfterEnum : 'true' 58 | AfterFunction : 'true' 59 | AfterNamespace : 'true' 60 | AfterStruct : 'true' 61 | AfterUnion : 'true' 62 | BeforeCatch : 'true' 63 | BeforeElse : 'true' 64 | IndentBraces : 'false' 65 | } 66 | ... 67 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/src/four_wheel_steering.cpp: -------------------------------------------------------------------------------- 1 | // NOTE: The contents of this file have been taken largely from the ros_control wiki tutorials 2 | 3 | #include "four_wheel_steering.h" 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | int main(int argc, char **argv) 11 | { 12 | ros::init(argc, argv, "four_wheel_steering"); 13 | ros::NodeHandle nh; 14 | 15 | // This should be set in launch files as well 16 | nh.setParam("/use_sim_time", true); 17 | 18 | FourWheelSteering robot; 19 | ROS_WARN_STREAM("period: " << robot.getPeriod().toSec()); 20 | controller_manager::ControllerManager cm(&robot, nh); 21 | 22 | ros::Publisher clock_publisher = nh.advertise("/clock", 1); 23 | 24 | ros::AsyncSpinner spinner(1); 25 | spinner.start(); 26 | 27 | std::chrono::system_clock::time_point begin = std::chrono::system_clock::now(); 28 | std::chrono::system_clock::time_point end = std::chrono::system_clock::now(); 29 | 30 | ros::Time internal_time(0); 31 | const ros::Duration dt = robot.getPeriod(); 32 | double elapsed_secs = 0; 33 | 34 | while(ros::ok()) 35 | { 36 | begin = std::chrono::system_clock::now(); 37 | 38 | robot.read(); 39 | cm.update(internal_time, dt); 40 | robot.write(); 41 | 42 | end = std::chrono::system_clock::now(); 43 | 44 | elapsed_secs = std::chrono::duration_cast >((end - begin)).count(); 45 | 46 | if (dt.toSec() - elapsed_secs < 0.0) 47 | { 48 | ROS_WARN_STREAM_THROTTLE( 49 | 0.1, "Control cycle is taking to much time, elapsed: " << elapsed_secs); 50 | } 51 | else 52 | { 53 | ROS_DEBUG_STREAM_THROTTLE(1.0, "Control cycle is, elapsed: " << elapsed_secs); 54 | std::this_thread::sleep_for(std::chrono::duration(dt.toSec() - elapsed_secs)); 55 | } 56 | 57 | rosgraph_msgs::Clock clock; 58 | clock.clock = ros::Time(internal_time); 59 | clock_publisher.publish(clock); 60 | internal_time += dt; 61 | } 62 | spinner.stop(); 63 | 64 | return 0; 65 | } 66 | -------------------------------------------------------------------------------- /joint_trajectory_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | joint_trajectory_controller 7 | Controller for executing joint-space trajectories on a group of joints. 8 | 0.22.0 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Adolfo Rodriguez Tsouroukdissian 21 | 22 | catkin 23 | 24 | actionlib 25 | boost 26 | control_toolbox 27 | controller_interface 28 | realtime_tools 29 | roscpp 30 | urdf 31 | 32 | angles 33 | control_msgs 34 | hardware_interface 35 | pluginlib 36 | trajectory_msgs 37 | 38 | angles 39 | control_msgs 40 | hardware_interface 41 | trajectory_msgs 42 | 43 | code_coverage 44 | controller_manager 45 | xacro 46 | rostest 47 | std_msgs 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /effort_controllers/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | effort_controllers 7 | 0.22.0 8 | effort_controllers 9 | 10 | Bence Magyar 11 | Mathias Lüdtke 12 | Enrique Fernandez 13 | 14 | BSD 15 | 16 | https://github.com/ros-controls/ros_controllers/wiki 17 | https://github.com/ros-controls/ros_controllers/issues 18 | https://github.com/ros-controls/ros_controllers 19 | 20 | Vijay Pradeep 21 | 22 | catkin 23 | 24 | control_toolbox 25 | controller_interface 26 | realtime_tools 27 | roscpp 28 | urdf 29 | 30 | angles 31 | control_msgs 32 | hardware_interface 33 | forward_command_controller 34 | pluginlib 35 | std_msgs 36 | 37 | control_msgs 38 | forward_command_controller 39 | hardware_interface 40 | std_msgs 41 | 42 | rostest 43 | controller_manager 44 | joint_state_controller 45 | robot_state_publisher 46 | rosgraph_msgs 47 | sensor_msgs 48 | xacro 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ros_controllers 2 | =============== 3 | 4 | See [ros_control](http://wiki.ros.org/ros_control) and [ros_controllers](http://wiki.ros.org/ros_controllers) documentation on ros.org 5 | 6 | ### Build Status 7 | 8 | Indigo | Kinetic | Lunar | Melodic | Noetic 9 | ------ | ------- | ----- | ------- | ------ 10 | [![Build Status](https://travis-ci.org/ros-controls/ros_controllers.png?branch=indigo-devel)](https://travis-ci.org/ros-controls/ros_controllers) | [![Build Status](https://travis-ci.org/ros-controls/ros_controllers.png?branch=kinetic-devel)](https://travis-ci.org/ros-controls/ros_controllers) | [![Build Status](https://travis-ci.org/ros-controls/ros_controllers.png?branch=kinetic-devel)](https://travis-ci.org/ros-controls/ros_controllers) | [![Build Status](https://travis-ci.org/ros-controls/ros_controllers.png?branch=melodic-devel)](https://travis-ci.org/ros-controls/ros_controllers) | [![Build Status](https://travis-ci.org/ros-controls/ros_controllers.png?branch=noetic-devel)](https://travis-ci.org/ros-controls/ros_controllers) 11 | 12 | ### Branches for source-based installation 13 | 14 | ROS Indigo | ROS Kinetic | ROS Lunar | ROS Melodic 15 | --- | ------------- | ------------- | ------------- 16 | indigo-devel | kinetic-devel | kinetic-devel | melodic-devel 17 | 18 | ## Publication 19 | 20 | If you find this work useful please give credits to the authors by citing: 21 | 22 | * S. Chitta, E. Marder-Eppstein, W. Meeussen, V. Pradeep, A. Rodríguez Tsouroukdissian, J. Bohren, D. Coleman, B. Magyar, G. Raiola, M. Lüdtke and E. Fernandez Perdomo 23 | **"ros_control: A generic and simple control framework for ROS"**, 24 | The Journal of Open Source Software, 2017. ([PDF](http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf)) 25 | 26 | ``` 27 | @article{ros_control, 28 | author = {Chitta, Sachin and Marder-Eppstein, Eitan and Meeussen, Wim and Pradeep, Vijay and Rodr{\'i}guez Tsouroukdissian, Adolfo and Bohren, Jonathan and Coleman, David and Magyar, Bence and Raiola, Gennaro and L{\"u}dtke, Mathias and Fern{\'a}ndez Perdomo, Enrique}, 29 | title = {ros\_control: A generic and simple control framework for ROS}, 30 | journal = {The Journal of Open Source Software}, 31 | year = {2017}, 32 | doi = {10.21105/joss.00456}, 33 | URL = {http://www.theoj.org/joss-papers/joss.00456/10.21105.joss.00456.pdf} 34 | } 35 | ``` 36 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/urdf/chassis.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Gazebo/Grey 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /effort_controllers/src/joint_effort_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * * Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * * Redistributions in binary form must reproduce the above 16 | * copyright notice, this list of conditions and the following 17 | * disclaimer in the documentation and/or other materials provided 18 | * with the distribution. 19 | * * Neither the name of the Willow Garage nor the names of its 20 | * contributors may be used to endorse or promote products derived 21 | * from this software without specific prior written permission. 22 | * 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 | * POSSIBILITY OF SUCH DAMAGE. 35 | *********************************************************************/ 36 | 37 | #include 38 | #include 39 | 40 | template 41 | void forward_command_controller::ForwardCommandController::starting(const ros::Time& time) 42 | { 43 | // Start controller with 0.0 effort 44 | command_buffer_.writeFromNonRT(0.0); 45 | } 46 | 47 | 48 | PLUGINLIB_EXPORT_CLASS(effort_controllers::JointEffortController,controller_interface::ControllerBase) 49 | -------------------------------------------------------------------------------- /joint_trajectory_controller/ros_control_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | The JointTrajectoryController executes joint-space trajectories on a set of joints. 8 | This variant represents trajectory segments as quintic splines and sends commands to a position interface. 9 | 10 | 11 | 12 | 15 | 16 | The JointTrajectoryController executes joint-space trajectories on a set of joints. 17 | This variant represents trajectory segments as quintic splines and sends commands to a velocity interface. 18 | 19 | 20 | 21 | 24 | 25 | The JointTrajectoryController executes joint-space trajectories on a set of joints. 26 | This variant represents trajectory segments as quintic splines and sends commands to an effort interface. 27 | 28 | 29 | 30 | 33 | 34 | The JointTrajectoryController executes joint-space trajectories on a set of joints. 35 | This variant represents trajectory segments as quintic splines and sends commands to an pos_vel interface. 36 | 37 | 38 | 39 | 42 | 43 | The JointTrajectoryController executes joint-space trajectories on a set of joints. 44 | This variant represents trajectory segments as quintic splines and sends commands to an spline interface. 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /velocity_controllers/src/joint_velocity_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * * Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * * Redistributions in binary form must reproduce the above 16 | * copyright notice, this list of conditions and the following 17 | * disclaimer in the documentation and/or other materials provided 18 | * with the distribution. 19 | * * Neither the name of the Willow Garage nor the names of its 20 | * contributors may be used to endorse or promote products derived 21 | * from this software without specific prior written permission. 22 | * 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 | * POSSIBILITY OF SUCH DAMAGE. 35 | *********************************************************************/ 36 | 37 | #include 38 | #include 39 | 40 | template 41 | void forward_command_controller::ForwardCommandController::starting(const ros::Time& time) 42 | { 43 | // Start controller with 0.0 velocity 44 | command_buffer_.writeFromNonRT(0.0); 45 | } 46 | 47 | 48 | PLUGINLIB_EXPORT_CLASS(velocity_controllers::JointVelocityController,controller_interface::ControllerBase) 49 | -------------------------------------------------------------------------------- /effort_controllers/src/joint_group_effort_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * Copyright (c) 2014, Fraunhofer IPA 8 | * All rights reserved. 9 | * 10 | * Redistribution and use in source and binary forms, with or without 11 | * modification, are permitted provided that the following conditions 12 | * are met: 13 | * 14 | * * Redistributions of source code must retain the above copyright 15 | * notice, this list of conditions and the following disclaimer. 16 | * * Redistributions in binary form must reproduce the above 17 | * copyright notice, this list of conditions and the following 18 | * disclaimer in the documentation and/or other materials provided 19 | * with the distribution. 20 | * * Neither the name of the Willow Garage nor the names of its 21 | * contributors may be used to endorse or promote products derived 22 | * from this software without specific prior written permission. 23 | * 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 | * POSSIBILITY OF SUCH DAMAGE. 36 | *********************************************************************/ 37 | 38 | #include 39 | #include 40 | 41 | template 42 | void forward_command_controller::ForwardJointGroupCommandController::starting(const ros::Time& time) 43 | { 44 | // Start controller with 0.0 efforts 45 | commands_buffer_.readFromRT()->assign(n_joints_, 0.0); 46 | } 47 | 48 | 49 | PLUGINLIB_EXPORT_CLASS(effort_controllers::JointGroupEffortController,controller_interface::ControllerBase) 50 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_sphere_wheels.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Gazebo/Green 69 | 70 | 71 | 72 | Gazebo/Purple 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot_square_wheels.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Gazebo/Green 69 | 70 | 71 | 72 | Gazebo/Purple 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /velocity_controllers/src/joint_group_velocity_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * Copyright (c) 2014, Fraunhofer IPA 8 | * All rights reserved. 9 | * 10 | * Redistribution and use in source and binary forms, with or without 11 | * modification, are permitted provided that the following conditions 12 | * are met: 13 | * 14 | * * Redistributions of source code must retain the above copyright 15 | * notice, this list of conditions and the following disclaimer. 16 | * * Redistributions in binary form must reproduce the above 17 | * copyright notice, this list of conditions and the following 18 | * disclaimer in the documentation and/or other materials provided 19 | * with the distribution. 20 | * * Neither the name of the Willow Garage nor the names of its 21 | * contributors may be used to endorse or promote products derived 22 | * from this software without specific prior written permission. 23 | * 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 | * POSSIBILITY OF SUCH DAMAGE. 36 | *********************************************************************/ 37 | 38 | #include 39 | #include 40 | 41 | template 42 | void forward_command_controller::ForwardJointGroupCommandController::starting(const ros::Time& time) 43 | { 44 | // Start controller with 0.0 velocities 45 | commands_buffer_.readFromRT()->assign(n_joints_, 0.0); 46 | } 47 | 48 | 49 | PLUGINLIB_EXPORT_CLASS(velocity_controllers::JointGroupVelocityController,controller_interface::ControllerBase) 50 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_odom_tf_test.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2014, PAL Robotics S.L. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Bence Magyar 29 | 30 | #include "test_common.h" 31 | #include 32 | 33 | // TEST CASES 34 | TEST_F(DiffDriveControllerTest, testNoOdomFrame) 35 | { 36 | // wait for ROS 37 | waitForController(); 38 | 39 | // set up tf listener 40 | tf::TransformListener listener; 41 | ros::Duration(2.0).sleep(); 42 | // check the odom frame doesn't exist 43 | EXPECT_FALSE(listener.frameExists("odom")); 44 | } 45 | 46 | int main(int argc, char** argv) 47 | { 48 | testing::InitGoogleTest(&argc, argv); 49 | ros::init(argc, argv, "diff_drive_odom_tf_test"); 50 | 51 | ros::AsyncSpinner spinner(1); 52 | spinner.start(); 53 | int ret = RUN_ALL_TESTS(); 54 | spinner.stop(); 55 | ros::shutdown(); 56 | return ret; 57 | } 58 | -------------------------------------------------------------------------------- /position_controllers/src/joint_position_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * * Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * * Redistributions in binary form must reproduce the above 16 | * copyright notice, this list of conditions and the following 17 | * disclaimer in the documentation and/or other materials provided 18 | * with the distribution. 19 | * * Neither the name of the Willow Garage nor the names of its 20 | * contributors may be used to endorse or promote products derived 21 | * from this software without specific prior written permission. 22 | * 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 | * POSSIBILITY OF SUCH DAMAGE. 35 | *********************************************************************/ 36 | 37 | #include 38 | #include 39 | #include 40 | #include 41 | 42 | template 43 | void forward_command_controller::ForwardCommandController::starting(const ros::Time& time) 44 | { 45 | // Start controller with current joint position 46 | command_buffer_.writeFromNonRT(joint_.getPosition()); 47 | } 48 | 49 | PLUGINLIB_EXPORT_CLASS(position_controllers::JointPositionController,controller_interface::ControllerBase) 50 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diffbot.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | Gazebo/Green 71 | 72 | 73 | 74 | Gazebo/Purple 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_fail_test.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2013, PAL Robotics S.L. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Paul Mathieu 29 | 30 | #include "test_common.h" 31 | 32 | // TEST CASES 33 | TEST_F(DiffDriveControllerTest, testWrongJointName) 34 | { 35 | // the controller should never be alive 36 | int secs = 0; 37 | while(!isControllerAlive() && ros::ok() && secs < 5) 38 | { 39 | ros::Duration(1.0).sleep(); 40 | secs++; 41 | } 42 | if (!ros::ok()) 43 | FAIL() << "Something went wrong while executing test."; 44 | 45 | // give up and assume controller load failure after 5 seconds 46 | EXPECT_GE(secs, 5); 47 | } 48 | 49 | int main(int argc, char** argv) 50 | { 51 | testing::InitGoogleTest(&argc, argv); 52 | ros::init(argc, argv, "diff_drive_fail_test"); 53 | 54 | ros::AsyncSpinner spinner(1); 55 | spinner.start(); 56 | int ret = RUN_ALL_TESTS(); 57 | spinner.stop(); 58 | ros::shutdown(); 59 | return ret; 60 | } 61 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/urdf/wheel.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Gazebo/Black 13 | 14 | 15 | 16 | 17 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | transmission_interface/SimpleTransmission 59 | 60 | 1 61 | 62 | 63 | VelocityJointInterface 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_fail_test/ackermann_steering_controller_fail_test.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2013, PAL Robotics S.L. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Paul Mathieu 29 | /// \author Masaru Morita 30 | 31 | #include "../common/include/test_common.h" 32 | 33 | // TEST CASES 34 | TEST_F(AckermannSteeringControllerTest, testWrongJointName) 35 | { 36 | // the controller should never be alive 37 | int secs = 0; 38 | while(!isControllerAlive() && secs < 5) 39 | { 40 | ros::Duration(1.0).sleep(); 41 | secs++; 42 | } 43 | // give up and assume controller load failure after 5 seconds 44 | EXPECT_GE(secs, 5); 45 | } 46 | 47 | int main(int argc, char** argv) 48 | { 49 | testing::InitGoogleTest(&argc, argv); 50 | ros::init(argc, argv, "ackermann_steering_controller_fail_test"); 51 | 52 | ros::AsyncSpinner spinner(1); 53 | spinner.start(); 54 | int ret = RUN_ALL_TESTS(); 55 | spinner.stop(); 56 | ros::shutdown(); 57 | return ret; 58 | } 59 | -------------------------------------------------------------------------------- /position_controllers/src/joint_group_position_controller.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * Copyright (c) 2014, Fraunhofer IPA 8 | * All rights reserved. 9 | * 10 | * Redistribution and use in source and binary forms, with or without 11 | * modification, are permitted provided that the following conditions 12 | * are met: 13 | * 14 | * * Redistributions of source code must retain the above copyright 15 | * notice, this list of conditions and the following disclaimer. 16 | * * Redistributions in binary form must reproduce the above 17 | * copyright notice, this list of conditions and the following 18 | * disclaimer in the documentation and/or other materials provided 19 | * with the distribution. 20 | * * Neither the name of the Willow Garage nor the names of its 21 | * contributors may be used to endorse or promote products derived 22 | * from this software without specific prior written permission. 23 | * 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 | * POSSIBILITY OF SUCH DAMAGE. 36 | *********************************************************************/ 37 | 38 | #include 39 | #include 40 | 41 | template 42 | void forward_command_controller::ForwardJointGroupCommandController::starting(const ros::Time& time) 43 | { 44 | // Start controller with current joint positions 45 | std::vector & commands = *commands_buffer_.readFromRT(); 46 | for(unsigned int i=0; i 41 | 42 | namespace effort_controllers 43 | { 44 | 45 | /** 46 | * \brief Joint Effort Controller (torque or force) 47 | * 48 | * This class passes the commanded effort down to the joint. 49 | * 50 | * \section ROS interface 51 | * 52 | * \param type Must be "JointEffortController". 53 | * \param joint Name of the joint to control. 54 | * 55 | * Subscribes to: 56 | * - \b command (std_msgs::Float64) : The joint effort to apply. 57 | */ 58 | typedef forward_command_controller::ForwardCommandController 59 | JointEffortController; 60 | } 61 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/ackermann_steering_controller_odom_tf_test/ackermann_steering_controller_odom_tf_test.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2014, PAL Robotics S.L. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Bence Magyar 29 | /// \author Masaru Morita 30 | 31 | #include "../common/include/test_common.h" 32 | #include 33 | 34 | // TEST CASES 35 | TEST_F(AckermannSteeringControllerTest, testNoOdomFrame) 36 | { 37 | // wait for ROS 38 | while(!isControllerAlive()) 39 | { 40 | ros::Duration(0.1).sleep(); 41 | } 42 | // set up tf listener 43 | tf::TransformListener listener; 44 | ros::Duration(2.0).sleep(); 45 | // check the odom frame doesn't exist 46 | EXPECT_FALSE(listener.frameExists("odom")); 47 | } 48 | 49 | int main(int argc, char** argv) 50 | { 51 | testing::InitGoogleTest(&argc, argv); 52 | ros::init(argc, argv, "ackermann_steering_controller_odom_tf_test"); 53 | 54 | ros::AsyncSpinner spinner(1); 55 | spinner.start(); 56 | int ret = RUN_ALL_TESTS(); 57 | spinner.stop(); 58 | ros::shutdown(); 59 | return ret; 60 | } 61 | -------------------------------------------------------------------------------- /four_wheel_steering_controller/test/urdf/wheel_steered.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | transmission_interface/SimpleTransmission 46 | 47 | PositionJointInterface 48 | 1 49 | 50 | 51 | PositionJointInterface 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /ackermann_steering_controller/test/common/src/ackermann_steering_bot.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2013, PAL Robotics S.L. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Masaru Morita 29 | 30 | // NOTE: The contents of this file have been taken largely from the ros_control wiki tutorials 31 | 32 | // ROS 33 | #include 34 | 35 | // ros_control 36 | #include 37 | 38 | #include "./../include/ackermann_steering_bot.h" 39 | 40 | int main(int argc, char **argv) 41 | { 42 | ros::init(argc, argv, "ackermann_steering_bot"); 43 | ros::NodeHandle nh; 44 | 45 | AckermannSteeringBot robot; 46 | ROS_WARN_STREAM("period: " << robot.getPeriod().toSec()); 47 | controller_manager::ControllerManager cm(&robot, nh); 48 | 49 | ros::Rate rate(1.0 / robot.getPeriod().toSec()); 50 | ros::AsyncSpinner spinner(1); 51 | spinner.start(); 52 | while(ros::ok()) 53 | { 54 | robot.read(); 55 | cm.update(robot.getTime(), robot.getPeriod()); 56 | robot.write(); 57 | rate.sleep(); 58 | } 59 | spinner.stop(); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /position_controllers/include/position_controllers/joint_position_controller.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * * Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * * Redistributions in binary form must reproduce the above 16 | * copyright notice, this list of conditions and the following 17 | * disclaimer in the documentation and/or other materials provided 18 | * with the distribution. 19 | * * Neither the name of the Willow Garage nor the names of its 20 | * contributors may be used to endorse or promote products derived 21 | * from this software without specific prior written permission. 22 | * 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 | * POSSIBILITY OF SUCH DAMAGE. 35 | *********************************************************************/ 36 | 37 | #pragma once 38 | 39 | 40 | #include 41 | #include 42 | 43 | namespace position_controllers 44 | { 45 | 46 | /** 47 | * \brief Joint Position Controller (linear or angular) 48 | * 49 | * This class passes the commanded position down to the joint 50 | * 51 | * \section ROS interface 52 | * 53 | * \param type Must be "JointPositionController". 54 | * \param joint Name of the joint to control. 55 | * 56 | * Subscribes to: 57 | * - \b command (std_msgs::Float64) : The joint position to apply 58 | */ 59 | typedef forward_command_controller::ForwardCommandController 60 | JointPositionController; 61 | } 62 | -------------------------------------------------------------------------------- /rqt_joint_trajectory_controller/resource/double_editor.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | double_editor 4 | 5 | 6 | true 7 | 8 | 9 | 10 | 0 11 | 0 12 | 249 13 | 121 14 | 15 | 16 | 17 | 18 | 0 19 | 0 20 | 21 | 22 | 23 | Form 24 | 25 | 26 | 27 | 28 | 29 | true 30 | 31 | 32 | 33 | 0 34 | 0 35 | 36 | 37 | 38 | 39 | 0 40 | 0 41 | 42 | 43 | 44 | 100 45 | 46 | 47 | Qt::Horizontal 48 | 49 | 50 | false 51 | 52 | 53 | false 54 | 55 | 56 | 57 | 58 | 59 | 60 | true 61 | 62 | 63 | 64 | 0 65 | 0 66 | 67 | 68 | 69 | 70 | 60 71 | 0 72 | 73 | 74 | 75 | 76 | 100 77 | 0 78 | 79 | 80 | 81 | QAbstractSpinBox::UpDownArrows 82 | 83 | 84 | false 85 | 86 | 87 | 6 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /velocity_controllers/include/velocity_controllers/joint_velocity_controller.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2008, Willow Garage, Inc. 5 | * Copyright (c) 2012, hiDOF, Inc. 6 | * Copyright (c) 2013, PAL Robotics, S.L. 7 | * All rights reserved. 8 | * 9 | * Redistribution and use in source and binary forms, with or without 10 | * modification, are permitted provided that the following conditions 11 | * are met: 12 | * 13 | * * Redistributions of source code must retain the above copyright 14 | * notice, this list of conditions and the following disclaimer. 15 | * * Redistributions in binary form must reproduce the above 16 | * copyright notice, this list of conditions and the following 17 | * disclaimer in the documentation and/or other materials provided 18 | * with the distribution. 19 | * * Neither the name of the Willow Garage nor the names of its 20 | * contributors may be used to endorse or promote products derived 21 | * from this software without specific prior written permission. 22 | * 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 | * POSSIBILITY OF SUCH DAMAGE. 35 | *********************************************************************/ 36 | 37 | #pragma once 38 | 39 | 40 | #include 41 | #include 42 | 43 | namespace velocity_controllers 44 | { 45 | 46 | /** 47 | * \brief Joint Velocity Controller (linear or angular) 48 | * 49 | * This class passes the commanded velocity down to the joint 50 | * 51 | * \section ROS interface 52 | * 53 | * \param type Must be "JointVelocityController". 54 | * \param joint Name of the joint to control. 55 | * 56 | * Subscribes to: 57 | * - \b command (std_msgs::Float64) : The joint velocity to apply 58 | */ 59 | typedef forward_command_controller::ForwardCommandController 60 | JointVelocityController; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /effort_controllers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(effort_controllers) 3 | 4 | # Load catkin and all dependencies required for this package 5 | find_package(catkin REQUIRED COMPONENTS 6 | angles 7 | control_msgs 8 | control_toolbox 9 | controller_interface 10 | forward_command_controller 11 | hardware_interface 12 | pluginlib 13 | realtime_tools 14 | roscpp 15 | std_msgs 16 | urdf 17 | ) 18 | 19 | # Declare catkin package 20 | catkin_package( 21 | CATKIN_DEPENDS 22 | control_msgs 23 | control_toolbox 24 | controller_interface 25 | forward_command_controller 26 | hardware_interface 27 | realtime_tools 28 | std_msgs 29 | urdf 30 | LIBRARIES 31 | ${PROJECT_NAME} 32 | INCLUDE_DIRS 33 | include 34 | ) 35 | 36 | 37 | ########### 38 | ## Build ## 39 | ########### 40 | 41 | include_directories(include ${catkin_INCLUDE_DIRS}) 42 | 43 | add_library(${PROJECT_NAME} 44 | src/joint_effort_controller.cpp 45 | src/joint_group_effort_controller.cpp 46 | src/joint_group_position_controller.cpp 47 | src/joint_position_controller.cpp 48 | src/joint_velocity_controller.cpp 49 | ) 50 | 51 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) 52 | 53 | 54 | ############# 55 | ## Testing ## 56 | ############# 57 | 58 | if(CATKIN_ENABLE_TESTING) 59 | find_package(rostest REQUIRED) 60 | find_package(controller_manager REQUIRED) 61 | find_package(rosgraph_msgs REQUIRED) 62 | find_package(sensor_msgs REQUIRED) 63 | 64 | include_directories( 65 | ${controller_manager_INCLUDE_DIRS} 66 | ${rosgraph_msgs_INCLUDE_DIRS} 67 | ${sensor_msgs_INCLUDE_DIRS} 68 | ) 69 | 70 | add_executable(simple_bot_hw test/simple_bot_hw.cpp) 71 | target_link_libraries(simple_bot_hw 72 | ${catkin_LIBRARIES} 73 | ${controller_manager_LIBRARIES} 74 | ) 75 | add_dependencies(tests simple_bot_hw) 76 | 77 | add_rostest_gtest(effort_position_controller_test 78 | test/effort_position_controller.test 79 | test/simple_bot_goto_position.cpp 80 | ) 81 | target_link_libraries( 82 | effort_position_controller_test 83 | ${catkin_LIBRARIES} 84 | ) 85 | endif() 86 | 87 | 88 | ############# 89 | ## Install ## 90 | ############# 91 | 92 | # Install headers 93 | install(DIRECTORY include/${PROJECT_NAME}/ 94 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 95 | ) 96 | 97 | # Install targets 98 | install(TARGETS ${PROJECT_NAME} 99 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 100 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 101 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 102 | ) 103 | 104 | # Install plugins 105 | install(FILES effort_controllers_plugins.xml 106 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 107 | ) 108 | -------------------------------------------------------------------------------- /diff_drive_controller/test/diff_drive_publish_wheel_joint_controller_state_test.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (C) 2018, PAL Robotics. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are met: 6 | // * Redistributions of source code must retain the above copyright notice, 7 | // this list of conditions and the following disclaimer. 8 | // * Redistributions in binary form must reproduce the above copyright 9 | // notice, this list of conditions and the following disclaimer in the 10 | // documentation and/or other materials provided with the distribution. 11 | // * Neither the name of PAL Robotics, Inc. nor the names of its 12 | // contributors may be used to endorse or promote products derived from 13 | // this software without specific prior written permission. 14 | // 15 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19 | // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | // POSSIBILITY OF SUCH DAMAGE. 26 | ////////////////////////////////////////////////////////////////////////////// 27 | 28 | /// \author Jeremie Deray 29 | 30 | #include "test_common.h" 31 | 32 | // TEST CASES 33 | TEST_F(DiffDriveControllerTest, testPublishJointTrajectoryControllerStateTopic) 34 | { 35 | // wait for ROS 36 | waitForController(); 37 | 38 | EXPECT_TRUE(isPublishingJointTrajectoryControllerState()); 39 | 40 | // zero everything before test 41 | geometry_msgs::Twist cmd_vel; 42 | cmd_vel.linear.x = 0.0; 43 | cmd_vel.angular.z = 0.0; 44 | publish(cmd_vel); 45 | ros::Duration(0.1).sleep(); 46 | 47 | cmd_vel.linear.x = 0.1; 48 | publish(cmd_vel); 49 | ros::Duration(0.1).sleep(); 50 | 51 | EXPECT_TRUE(isPublishingJointTrajectoryControllerState()); 52 | } 53 | 54 | int main(int argc, char** argv) 55 | { 56 | testing::InitGoogleTest(&argc, argv); 57 | ros::init(argc, argv, "diff_drive_publish_wheel_joint_controller_state_topic_test"); 58 | 59 | ros::AsyncSpinner spinner(1); 60 | spinner.start(); 61 | int ret = RUN_ALL_TESTS(); 62 | spinner.stop(); 63 | ros::shutdown(); 64 | return ret; 65 | } 66 | --------------------------------------------------------------------------------