mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 01:50:46 +02:00
Fixed order of starting and stopping controllers
This commit is contained in:
@@ -30,11 +30,11 @@
|
||||
<rosparam file="$(find ur_modern_driver)/config/ur5_controllers.yaml" command="load"/>
|
||||
|
||||
<!-- spawn controller manager -->
|
||||
<node name="ros_control_controller_manager" pkg="controller_manager" type="spawner" respawn="false"
|
||||
output="screen" args="joint_state_controller force_torque_sensor_controller position_based_position_trajectory_controller" />
|
||||
<node name="ros_control_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
|
||||
output="screen" args="joint_state_controller force_torque_sensor_controller velocity_based_position_trajectory_controller" />
|
||||
<!-- load other controller -->
|
||||
<node name="ros_control_controller_manager" pkg="controller_manager" type="controller_manager" respawn="false"
|
||||
output="screen" args="load velocity_based_position_trajectory_controller" />
|
||||
output="screen" args="load position_based_position_trajectory_controller" />
|
||||
|
||||
<!-- Convert joint states to /tf tranforms -->
|
||||
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>
|
||||
|
||||
@@ -9,39 +9,39 @@
|
||||
* ----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "ur_modern_driver/du_output.h"
|
||||
#include "ur_modern_driver/do_output.h"
|
||||
|
||||
void print_debug(std::string inp) {
|
||||
#ifdef ROS_BUILD
|
||||
ROS_DEBUG(inp);
|
||||
ROS_DEBUG(inp.c_str());
|
||||
#else
|
||||
printf("DEBUG: %s\n", inp.c_str());
|
||||
#endif
|
||||
}
|
||||
void print_info(std::string inp) {
|
||||
#ifdef ROS_BUILD
|
||||
ROS_INFO(inp);
|
||||
ROS_INFO(inp.c_str());
|
||||
#else
|
||||
printf("INFO: %s\n", inp.c_str());
|
||||
#endif
|
||||
}
|
||||
void print_warning(std::string inp) {
|
||||
#ifdef ROS_BUILD
|
||||
ROS_WARN(inp);
|
||||
ROS_WARN(inp.c_str());
|
||||
#else
|
||||
printf("WARNING: %s\n", inp.c_str());
|
||||
#endif
|
||||
}
|
||||
void print_error(std::string inp) {
|
||||
#ifdef ROS_BUILD
|
||||
ROS_ERROR(inp);
|
||||
ROS_ERROR(inp.c_str());
|
||||
#else
|
||||
printf("ERROR: %s\n", inp.c_str());
|
||||
#endif
|
||||
}
|
||||
void print_fatal(std::string inp) {
|
||||
#ifdef ROS_BUILD
|
||||
ROS_FATAL(inp);
|
||||
ROS_FATAL(inp.c_str());
|
||||
ros::shutdown();
|
||||
#else
|
||||
printf("FATAL: %s\n", inp.c_str());
|
||||
|
||||
@@ -257,7 +257,6 @@ void UrDriver::uploadProg() {
|
||||
cmd_str += "end\n";
|
||||
|
||||
rt_interface_->addCommandToQueue(cmd_str);
|
||||
|
||||
UrDriver::openServo();
|
||||
}
|
||||
|
||||
|
||||
@@ -211,6 +211,7 @@ bool UrHardwareInterface::canSwitch(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// we can always stop a controller
|
||||
return true;
|
||||
}
|
||||
@@ -218,21 +219,6 @@ bool UrHardwareInterface::canSwitch(
|
||||
void UrHardwareInterface::doSwitch(
|
||||
const std::list<hardware_interface::ControllerInfo>& start_list,
|
||||
const std::list<hardware_interface::ControllerInfo>& stop_list) {
|
||||
for (std::list<hardware_interface::ControllerInfo>::const_iterator controller_it =
|
||||
start_list.begin(); controller_it != start_list.end();
|
||||
++controller_it) {
|
||||
if (controller_it->hardware_interface
|
||||
== "hardware_interface::VelocityJointInterface") {
|
||||
velocity_interface_running_ = true;
|
||||
ROS_DEBUG("Starting velocity interface");
|
||||
}
|
||||
if (controller_it->hardware_interface
|
||||
== "hardware_interface::PositionJointInterface") {
|
||||
position_interface_running_ = true;
|
||||
robot_->uploadProg();
|
||||
ROS_DEBUG("Starting position interface");
|
||||
}
|
||||
}
|
||||
for (std::list<hardware_interface::ControllerInfo>::const_iterator controller_it =
|
||||
stop_list.begin(); controller_it != stop_list.end();
|
||||
++controller_it) {
|
||||
@@ -249,6 +235,21 @@ void UrHardwareInterface::doSwitch(
|
||||
ROS_DEBUG("Stopping position interface");
|
||||
}
|
||||
}
|
||||
for (std::list<hardware_interface::ControllerInfo>::const_iterator controller_it =
|
||||
start_list.begin(); controller_it != start_list.end();
|
||||
++controller_it) {
|
||||
if (controller_it->hardware_interface
|
||||
== "hardware_interface::VelocityJointInterface") {
|
||||
velocity_interface_running_ = true;
|
||||
ROS_DEBUG("Starting velocity interface");
|
||||
}
|
||||
if (controller_it->hardware_interface
|
||||
== "hardware_interface::PositionJointInterface") {
|
||||
position_interface_running_ = true;
|
||||
robot_->uploadProg();
|
||||
ROS_DEBUG("Starting position interface");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user