33 const std::string
SCRIPT_FILE =
"resources/external_control.urscript";
34 const std::string
OUTPUT_RECIPE =
"examples/resources/rtde_output_recipe.txt";
35 const std::string
INPUT_RECIPE =
"examples/resources/rtde_input_recipe.txt";
42 void SendTrajectory(
const std::vector<vector6d_t>& p_p,
const std::vector<vector6d_t>& p_v,
43 const std::vector<vector6d_t>& p_a,
const std::vector<double>& time,
bool use_spline_interpolation_)
45 assert(p_p.size() == time.size());
50 for (
size_t i = 0; i < p_p.size() && p_p.size() == time.size() && p_p[i].size() == 6; i++)
53 if (!use_spline_interpolation_)
55 g_my_driver->writeTrajectoryPoint(p_p[i],
false, time[i]);
60 if (p_v.size() == time.size() && p_a.size() == time.size() && p_v[i].size() == 6 && p_a[i].size() == 6)
62 g_my_driver->writeTrajectorySplinePoint(p_p[i], p_v[i], p_a[i], time[i]);
65 else if (p_v.size() == time.size() && p_v[i].size() == 6)
67 g_my_driver->writeTrajectorySplinePoint(p_p[i], p_v[i], time[i]);
71 g_my_driver->writeTrajectorySplinePoint(p_p[i], time[i]);
82 std::cout <<
"\033[1;32mProgram running: " << std::boolalpha << program_running <<
"\033[0m\n" << std::endl;
91 std::string report =
"?";
105 std::cout <<
"\033[1;32mTrajectory report: " << report <<
"\033[0m\n" << std::endl;
108 int main(
int argc,
char* argv[])
116 robot_ip = std::string(argv[1]);
136 std::string robotModeRunning(
"RUNNING");
163 std::unique_ptr<ToolCommSetup> tool_comm_setup;
164 const bool HEADLESS =
true;
178 std::unique_ptr<rtde_interface::DataPackage> data_pkg =
g_my_driver->getDataPackage();
186 std::string error_msg =
"Did not find 'actual_q' in data sent from robot. This should not happen!";
187 throw std::runtime_error(error_msg);
191 const unsigned number_of_points = 5;
192 const double s_pos[number_of_points] = { 4.15364583e-03, 4.15364583e-03, -1.74088542e-02, 1.44817708e-02, 0.0 };
193 const double s_vel[number_of_points] = { -2.01015625e-01, 4.82031250e-02, 1.72812500e-01, -3.49453125e-01,
195 const double s_acc[number_of_points] = { 2.55885417e+00, -4.97395833e-01, 1.71276042e+00, -5.36458333e-02,
197 const double s_time[number_of_points] = { 1.0000000e+00, 4.00000000e+00, 8.00100000e+00, 1.25000000e+01,
205 URCL_LOG_ERROR(
"Could not send joint command. Is the robot in remote control?");
209 std::vector<vector6d_t> p, v, a;
210 std::vector<double> time;
212 unsigned int joint_to_control = 5;
213 for (
unsigned i = 0; i < number_of_points; ++i)
216 p_i[joint_to_control] = s_pos[i];
220 v_i[joint_to_control] = s_vel[i];
224 a_i[joint_to_control] = s_acc[i];
227 time.push_back(s_time[i]);
236 std::unique_ptr<rtde_interface::DataPackage> data_pkg =
g_my_driver->getDataPackage();
243 std::string error_msg =
"Did not find 'actual_q' in data sent from robot. This should not happen!";
244 throw std::runtime_error(error_msg);
250 URCL_LOG_ERROR(
"Could not send joint command. Is the robot in remote control?");
265 std::unique_ptr<rtde_interface::DataPackage> data_pkg =
g_my_driver->getDataPackage();
272 std::string error_msg =
"Did not find 'actual_q' in data sent from robot. This should not happen!";
273 throw std::runtime_error(error_msg);
279 URCL_LOG_ERROR(
"Could not send joint command. Is the robot in remote control?");
290 URCL_LOG_ERROR(
"Could not send joint command. Is the robot in remote control?");
const std::string INPUT_RECIPE
int main(int argc, char *argv[])
#define URCL_LOG_ERROR(...)
This is the main class for interfacing the driver.
TrajectoryResult
Types for encoding trajectory execution result.
std::unique_ptr< DashboardClient > g_my_dashboard
const std::string OUTPUT_RECIPE
Represents command to start a new trajectory.
Set when trajectory forwarding is active.
void SendTrajectory(const std::vector< vector6d_t > &p_p, const std::vector< vector6d_t > &p_v, const std::vector< vector6d_t > &p_a, const std::vector< double > &time, bool use_spline_interpolation_)
const std::string SCRIPT_FILE
const std::string CALIBRATION_CHECKSUM
void setLogLevel(LogLevel level)
Set log level this will disable messages with lower log level.
Aborted due to error during execution.
void handleRobotProgramState(bool program_running)
bool g_trajectory_running(false)
const std::string DEFAULT_ROBOT_IP
vector6d_t g_joint_positions
std::unique_ptr< UrDriver > g_my_driver
This class is a wrapper around the dashboard server.
std::array< double, 6 > vector6d_t
void handleTrajectoryState(control::TrajectoryResult state)
#define URCL_LOG_INFO(...)