1#include "formrobotpilot.h"
2#include "ui_formrobotpilot.h"
4FormRobotPilot::FormRobotPilot(
RoboDK *rdk, QWidget *parent) : QWidget(parent),
15 setAttribute(Qt::WA_DeleteOnClose);
18 setWindowFlags(windowFlags() | Qt::Window);
21 ui->radCartesianTool->click();
27FormRobotPilot::~FormRobotPilot(){
37 if (all_robots.length() == 0){
38 ui->lblRobot->setText(
"Load a robot");
39 RDK->
ShowMessage(
"Select File-Open to load a robot or a RoboDK station",
false);
46 bool robot_is_selected = (
Robot !=
nullptr);
47 if (robot_is_selected) {
48 ui->lblRobot->setText(
"Selected robot:\n" +
Robot->
Name());
50 ui->lblRobot->setText(
"Robot not selected");
52 return robot_is_selected;
58 ui->btnTXn->setText(
"J1-");
59 ui->btnTXp->setText(
"J1+");
60 ui->btnTYn->setText(
"J2-");
61 ui->btnTYp->setText(
"J2+");
62 ui->btnTZn->setText(
"J3-");
63 ui->btnTZp->setText(
"J3+");
64 ui->btnRXn->setText(
"J4-");
65 ui->btnRXp->setText(
"J4+");
66 ui->btnRYn->setText(
"J5-");
67 ui->btnRYp->setText(
"J5+");
68 ui->btnRZn->setText(
"J6-");
69 ui->btnRZp->setText(
"J6+");
72 ui->btnTXn->setText(
"Tx-");
73 ui->btnTXp->setText(
"Tx+");
74 ui->btnTYn->setText(
"Ty-");
75 ui->btnTYp->setText(
"Ty+");
76 ui->btnTZn->setText(
"Tz-");
77 ui->btnTZp->setText(
"Tz+");
78 ui->btnRXn->setText(
"Rx-");
79 ui->btnRXp->setText(
"Rx+");
80 ui->btnRYn->setText(
"Ry-");
81 ui->btnRYp->setText(
"Ry+");
82 ui->btnRZn->setText(
"Rz-");
83 ui->btnRZp->setText(
"Rz+");
85void FormRobotPilot::on_radCartesianReference_clicked(){
89void FormRobotPilot::on_radCartesianTool_clicked()
94void FormRobotPilot::on_radJoints_clicked()
118 double step = sense * ui->spnStep->value();
121 bool is_joint_move = ui->radJoints->isChecked();
124 if (
id >= joints.
Length()){
125 qDebug() <<
"Internal problem: Invalid joint ID";
128 joints.
Data()[id] = joints.
Data()[id] + step;
131 RDK->
ShowMessage(tr(
"The robot can't move to this location"),
false);
135 if (id < 0 || id >= 6){
136 qDebug()<<
"Internal problem: Invalid id provided for an incremental move";
142 for (
int i=0; i<6; i++){
155 bool is_tcp_relative_move = ui->radCartesianTool->isChecked();
156 if (is_tcp_relative_move){
159 pose_robot_new = pose_robot * pose_increment;
166 Mat transformation_axes(pose_robot);
167 transformation_axes.setPos(0, 0, 0);
168 Mat movement_pose_aligned = transformation_axes.inv() * pose_increment * transformation_axes;
169 pose_robot_new = pose_robot * movement_pose_aligned;
174 RDK->
ShowMessage(tr(
"The robot can't move to this location"),
false);
188void FormRobotPilot::on_chkRunOnRobot_clicked(
bool checked){
192 ui->chkRunOnRobot->setChecked(
false);
203 RDK->
ShowMessage(tr(
"Run Mode set to run the real robot. Make sure you are properly connected to the robot (select Connect-Connect Robot)"),
false);
@ ITEM_TYPE_ROBOT
Item of type robot (.robot file)
virtual QString Name()=0
Returns the name of an item. The name of the item is always displayed in the RoboDK station tree.
virtual bool MoveJ(const Item &itemtarget)=0
Add a joint move to a program or move a robot to a target item ("Move Joint" mode)....
virtual Mat Pose()=0
Returns the local position (pose) of an object, target or reference frame. For example,...
virtual bool Connect(const QString &robot_ip="")=0
Connect to a real robot using the corresponding robot driver.
virtual tJoints Joints()=0
Returns the current joints of a robot or the joints of a target. If the item is a cartesian target,...
This class is the iterface to the RoboDK API. With the RoboDK API you can automate certain tasks and ...
@ RUNMODE_RUN_ROBOT
Moves the real robot from the PC (PC is the client, the robot behaves like a server).
@ RUNMODE_SIMULATE
Performs the simulation moving the robot (default)
virtual Item ItemUserPick(const QString &message="Pick one item", int itemtype=-1)=0
Shows a RoboDK popup to select one object from the open RoboDK station. An item type can be specified...
virtual void ShowMessage(const QString &message, bool popup=true)=0
Show a message in RoboDK (it can be blocking or non blocking in the status bar)
virtual void setRunMode(int run_mode=1)=0
Sets the behavior of the RoboDK API. By default, RoboDK shows the path simulation for movement instru...
virtual QList< Item > getItemList(int filter=-1)=0
Returns a list of items (list of names or pointers) of all available items in the currently open stat...
virtual void Render(int flags=RenderComplete)=0
Update the scene.
The Joints class represents a joint position of a robot (robot axes).
int Length() const
Number of joint axes of the robot (or degrees of freedom)
The Matrix4x4 class represents a 4x4 transformation matrix in 3D space.
void FromXYZRPW(const double *xyzwpr)
Calculates this matrix from the position and euler angles ([x,y,z,r,p,w] vector).