mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 18:10:47 +02:00
Added the servoj gain and servoj lookahead time as a parameter at launch time. Resolves #47
This commit is contained in:
@@ -50,6 +50,8 @@ private:
|
|||||||
double servoj_time_;
|
double servoj_time_;
|
||||||
bool executing_traj_;
|
bool executing_traj_;
|
||||||
double firmware_version_;
|
double firmware_version_;
|
||||||
|
double servoj_lookahead_time_;
|
||||||
|
double servoj_gain_;
|
||||||
public:
|
public:
|
||||||
UrRealtimeCommunication* rt_interface_;
|
UrRealtimeCommunication* rt_interface_;
|
||||||
UrCommunication* sec_interface_;
|
UrCommunication* sec_interface_;
|
||||||
@@ -58,7 +60,7 @@ public:
|
|||||||
std::condition_variable& msg_cond, std::string host,
|
std::condition_variable& msg_cond, std::string host,
|
||||||
unsigned int reverse_port = 50007, double servoj_time = 0.016, unsigned int safety_count_max =
|
unsigned int reverse_port = 50007, double servoj_time = 0.016, unsigned int safety_count_max =
|
||||||
12, double max_time_step = 0.08, double min_payload = 0.,
|
12, double max_time_step = 0.08, double min_payload = 0.,
|
||||||
double max_payload = 1.);
|
double max_payload = 1., double servoj_lookahead_time=0.03, double servoj_gain=300.);
|
||||||
bool start();
|
bool start();
|
||||||
void halt();
|
void halt();
|
||||||
|
|
||||||
@@ -91,6 +93,8 @@ public:
|
|||||||
void setMinPayload(double m);
|
void setMinPayload(double m);
|
||||||
void setMaxPayload(double m);
|
void setMaxPayload(double m);
|
||||||
void setServojTime(double t);
|
void setServojTime(double t);
|
||||||
|
void setServojLookahead(double t);
|
||||||
|
void setServojGain(double g);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Load hardware interface -->
|
<!-- Load hardware interface -->
|
||||||
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="screen" launch-prefix="$(arg launch_prefix)">
|
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="log" launch-prefix="$(arg launch_prefix)">
|
||||||
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
||||||
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
||||||
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
||||||
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
||||||
<param name="use_ros_control" type="bool" value="True"/>
|
<param name="use_ros_control" type="bool" value="True"/>
|
||||||
|
<param name="servoj_gain" type="double" value="750" />
|
||||||
<arg name="prefix" value="$(arg prefix)" />
|
<arg name="prefix" value="$(arg prefix)" />
|
||||||
</node>
|
</node>
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Load hardware interface -->
|
<!-- Load hardware interface -->
|
||||||
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="screen" launch-prefix="$(arg launch_prefix)">
|
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="log" launch-prefix="$(arg launch_prefix)">
|
||||||
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
||||||
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
||||||
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
||||||
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
||||||
<param name="use_ros_control" type="bool" value="True"/>
|
<param name="use_ros_control" type="bool" value="True"/>
|
||||||
|
<param name="servoj_gain" type="double" value="750" />
|
||||||
<arg name="prefix" value="$(arg prefix)" />
|
<arg name="prefix" value="$(arg prefix)" />
|
||||||
</node>
|
</node>
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Load hardware interface -->
|
<!-- Load hardware interface -->
|
||||||
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="screen" launch-prefix="$(arg launch_prefix)">
|
<node name="ur_hardware_interface" pkg="ur_modern_driver" type="ur_driver" output="log" launch-prefix="$(arg launch_prefix)">
|
||||||
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
<param name="robot_ip_address" type="str" value="$(arg robot_ip)"/>
|
||||||
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
<param name="min_payload" type="double" value="$(arg min_payload)"/>
|
||||||
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
<param name="max_payload" type="double" value="$(arg max_payload)"/>
|
||||||
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
<param name="max_velocity" type="double" value="$(arg max_velocity)"/>
|
||||||
<param name="use_ros_control" type="bool" value="True"/>
|
<param name="use_ros_control" type="bool" value="True"/>
|
||||||
|
<param name="servoj_gain" type="double" value="750" />
|
||||||
<arg name="prefix" value="$(arg prefix)" />
|
<arg name="prefix" value="$(arg prefix)" />
|
||||||
</node>
|
</node>
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ UrDriver::UrDriver(std::condition_variable& rt_msg_cond,
|
|||||||
std::condition_variable& msg_cond, std::string host,
|
std::condition_variable& msg_cond, std::string host,
|
||||||
unsigned int reverse_port, double servoj_time,
|
unsigned int reverse_port, double servoj_time,
|
||||||
unsigned int safety_count_max, double max_time_step, double min_payload,
|
unsigned int safety_count_max, double max_time_step, double min_payload,
|
||||||
double max_payload) :
|
double max_payload, double servoj_lookahead_time, double servoj_gain) :
|
||||||
REVERSE_PORT_(reverse_port), maximum_time_step_(max_time_step), minimum_payload_(
|
REVERSE_PORT_(reverse_port), maximum_time_step_(max_time_step), minimum_payload_(
|
||||||
min_payload), maximum_payload_(max_payload), servoj_time_(
|
min_payload), maximum_payload_(max_payload), servoj_time_(
|
||||||
servoj_time) {
|
servoj_time), servoj_lookahead_time_(servoj_lookahead_time), servoj_gain_(servoj_gain) {
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
struct sockaddr_in serv_addr;
|
struct sockaddr_in serv_addr;
|
||||||
int n, flag;
|
int n, flag;
|
||||||
@@ -182,8 +182,8 @@ bool UrDriver::uploadProg() {
|
|||||||
cmd_str += "\t\t\telif state == SERVO_RUNNING:\n";
|
cmd_str += "\t\t\telif state == SERVO_RUNNING:\n";
|
||||||
|
|
||||||
if (sec_interface_->robot_state_->getVersion() >= 3.1)
|
if (sec_interface_->robot_state_->getVersion() >= 3.1)
|
||||||
sprintf(buf, "\t\t\t\tservoj(q, t=%.4f, lookahead_time=0.03)\n",
|
sprintf(buf, "\t\t\t\tservoj(q, t=%.4f, lookahead_time=%.4f, gain=%.0f)\n",
|
||||||
servoj_time_);
|
servoj_time_, servoj_lookahead_time_, servoj_gain_);
|
||||||
else
|
else
|
||||||
sprintf(buf, "\t\t\t\tservoj(q, t=%.4f)\n", servoj_time_);
|
sprintf(buf, "\t\t\t\tservoj(q, t=%.4f)\n", servoj_time_);
|
||||||
cmd_str += buf;
|
cmd_str += buf;
|
||||||
@@ -358,3 +358,25 @@ void UrDriver::setServojTime(double t) {
|
|||||||
servoj_time_ = 0.008;
|
servoj_time_ = 0.008;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void UrDriver::setServojLookahead(double t){
|
||||||
|
if (t > 0.03) {
|
||||||
|
if (t < 0.2) {
|
||||||
|
servoj_lookahead_time_ = t;
|
||||||
|
} else {
|
||||||
|
servoj_lookahead_time_ = 0.2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
servoj_lookahead_time_ = 0.03;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void UrDriver::setServojGain(double g){
|
||||||
|
if (g > 100) {
|
||||||
|
if (g < 2000) {
|
||||||
|
servoj_gain_ = g;
|
||||||
|
} else {
|
||||||
|
servoj_gain_ = 2000;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
servoj_gain_ = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public:
|
|||||||
as_(nh_, "follow_joint_trajectory",
|
as_(nh_, "follow_joint_trajectory",
|
||||||
boost::bind(&RosWrapper::goalCB, this, _1),
|
boost::bind(&RosWrapper::goalCB, this, _1),
|
||||||
boost::bind(&RosWrapper::cancelCB, this, _1), false), robot_(
|
boost::bind(&RosWrapper::cancelCB, this, _1), false), robot_(
|
||||||
rt_msg_cond_, msg_cond_, host, reverse_port), io_flag_delay_(0.05), joint_offsets_(
|
rt_msg_cond_, msg_cond_, host, reverse_port, 0.03, 300), io_flag_delay_(0.05), joint_offsets_(
|
||||||
6, 0.0) {
|
6, 0.0) {
|
||||||
|
|
||||||
std::string joint_prefix = "";
|
std::string joint_prefix = "";
|
||||||
@@ -158,6 +158,20 @@ public:
|
|||||||
}
|
}
|
||||||
robot_.setServojTime(servoj_time);
|
robot_.setServojTime(servoj_time);
|
||||||
|
|
||||||
|
double servoj_lookahead_time = 0.03;
|
||||||
|
if (ros::param::get("~servoj_lookahead_time", servoj_lookahead_time)) {
|
||||||
|
sprintf(buf, "Servoj_lookahead_time set to: %f [sec]", servoj_lookahead_time);
|
||||||
|
print_debug(buf);
|
||||||
|
}
|
||||||
|
robot_.setServojLookahead(servoj_lookahead_time);
|
||||||
|
|
||||||
|
double servoj_gain = 300.;
|
||||||
|
if (ros::param::get("~servoj_gain", servoj_gain)) {
|
||||||
|
sprintf(buf, "Servoj_gain set to: %f [sec]", servoj_gain);
|
||||||
|
print_debug(buf);
|
||||||
|
}
|
||||||
|
robot_.setServojGain(servoj_gain);
|
||||||
|
|
||||||
//Base and tool frames
|
//Base and tool frames
|
||||||
base_frame_ = joint_prefix + "base_link";
|
base_frame_ = joint_prefix + "base_link";
|
||||||
tool_frame_ = joint_prefix + "tool0_controller";
|
tool_frame_ = joint_prefix + "tool0_controller";
|
||||||
|
|||||||
Reference in New Issue
Block a user