Skip to content

Commit 3839e37

Browse files
committed
Change nodes for can be use wih real robot
1 parent 9732864 commit 3839e37

7 files changed

Lines changed: 153 additions & 0 deletions

File tree

CustomRobots/robot_arms/launch/ur3.launch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ def launch_setup(context):
155155
{"ROB_PARAM": "ur3"},
156156
{"EE_PARAM": "robotiq_2f85"},
157157
{"ROB_GROUP": "ur3_arm"},
158+
{"SYNC_REAL_ROBOT": True},
158159
],
159160
)
160161

@@ -175,6 +176,7 @@ def launch_setup(context):
175176
{"use_sim_time": True},
176177
{"ROB_PARAM": "ur3"},
177178
{"ROB_GROUP": "ur3_arm"},
179+
{"SYNC_REAL_ROBOT": True},
178180
],
179181
)
180182

Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ find_package(linkattacher_msgs REQUIRED)
3939
# REQUIRED to -> Execute ACTIONS:
4040
find_package(rclcpp_action REQUIRED)
4141
find_package(std_msgs REQUIRED)
42+
find_package(control_msgs REQUIRED)
43+
find_package(trajectory_msgs REQUIRED)
4244

4345
# REQUIRED to -> Read YAML files:
4446
find_package(yaml-cpp REQUIRED)
@@ -57,10 +59,12 @@ add_executable(
5759
src/mover.cpp
5860
src/movel.cpp
5961
src/movej.cpp
62+
src/trajectory_sender.cpp
6063
src/move.cpp
6164
)
6265
add_executable(
6366
robmove
67+
src/trajectory_sender.cpp
6468
src/robmove.cpp
6569
)
6670
add_executable(
@@ -99,6 +103,8 @@ ament_target_dependencies(
99103
moveit_ros_planning_interface
100104
std_msgs
101105
rclcpp_action
106+
control_msgs
107+
trajectory_msgs
102108
ros2srrc_data
103109
yaml-cpp
104110
ament_index_cpp
@@ -109,6 +115,8 @@ ament_target_dependencies(
109115
moveit_ros_planning_interface
110116
std_msgs
111117
rclcpp_action
118+
control_msgs
119+
trajectory_msgs
112120
ros2srrc_data
113121
)
114122
ament_target_dependencies(
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef ROS2SRRC_EXECUTION_TRAJECTORY_SENDER_HPP
2+
#define ROS2SRRC_EXECUTION_TRAJECTORY_SENDER_HPP
3+
4+
#include <memory>
5+
6+
#include "rclcpp/rclcpp.hpp"
7+
#include "trajectory_msgs/msg/joint_trajectory.hpp"
8+
9+
class TrajectorySender
10+
{
11+
public:
12+
13+
explicit TrajectorySender(
14+
const rclcpp::Node::SharedPtr& node
15+
);
16+
17+
bool send(
18+
const trajectory_msgs::msg::JointTrajectory& trajectory
19+
);
20+
21+
private:
22+
23+
rclcpp::Node::SharedPtr node_;
24+
25+
};
26+
27+
#endif

Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/package.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
<depend>yaml-cpp</depend>
2828
<depend>ament_index_cpp</depend>
2929

30+
<depend>control_msgs</depend>
31+
<depend>trajectory_msgs</depend>
32+
3033
<export>
3134
<build_type>ament_cmake</build_type>
3235
</export>

Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/move.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,21 @@
7272
#include <moveit/robot_trajectory/robot_trajectory.h>
7373
#include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
7474

75+
#include "ros2srrc_execution/trajectory_sender.hpp"
76+
7577
// Declaration of GLOBAL VARIABLES --> ROBOT / END-EFFECTOR / ENVIRONMENT PARAMETERS:
7678
std::string param_ROB = "none";
7779
std::string param_EE = "none";
7880
std::string param_ENV = "none";
7981
std::string param_ROB_GROUP = "none";
82+
bool sync_real_robot = false;
8083

8184
// Declaration of GLOBAL VARIABLES --> MoveIt!2 Interface:
8285
moveit::planning_interface::MoveGroupInterface move_group_interface_ROB;
8386
moveit::planning_interface::MoveGroupInterface move_group_interface_EE;
8487

88+
std::shared_ptr<TrajectorySender> trajectory_sender;
89+
8590
// Declaration of GLOBAL VARIABLES --> JointModelGroup:
8691
const moveit::core::JointModelGroup* joint_model_group_ROB;
8792
const moveit::core::JointModelGroup* joint_model_group_EE;
@@ -114,6 +119,17 @@ class ros2_RobotParam : public rclcpp::Node
114119
RCLCPP_INFO(this->get_logger(),
115120
"ROB_GROUP received -> %s",
116121
param_ROB_GROUP.c_str());
122+
123+
this->declare_parameter("SYNC_REAL_ROBOT", false);
124+
125+
sync_real_robot =
126+
this->get_parameter("SYNC_REAL_ROBOT").as_bool();
127+
128+
RCLCPP_INFO(
129+
this->get_logger(),
130+
"SYNC_REAL_ROBOT -> %s",
131+
sync_real_robot ? "true" : "false"
132+
);
117133
}
118134
private:
119135
};
@@ -432,6 +448,13 @@ class ActionServer : public rclcpp::Node
432448

433449
rt.getRobotTrajectoryMsg(MyPlan.trajectory_);
434450

451+
if (sync_real_robot)
452+
{
453+
trajectory_sender->send(
454+
MyPlan.trajectory_.joint_trajectory
455+
);
456+
}
457+
435458
bool ExecSUCCESS = (move_group_interface_ROB.execute(MyPlan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
436459

437460
if (goal_handle->is_canceling()) {
@@ -543,6 +566,8 @@ int main(int argc, char ** argv)
543566
.automatically_declare_parameters_from_overrides(true)
544567
);
545568

569+
trajectory_sender = std::make_shared<TrajectorySender>(node2);
570+
546571
rclcpp::executors::SingleThreadedExecutor executor;
547572
executor.add_node(node2);
548573
std::thread([&executor]() { executor.spin(); }).detach();

Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robmove.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@
4747
#include <moveit/robot_trajectory/robot_trajectory.h>
4848
#include <geometry_msgs/msg/pose.hpp>
4949

50+
#include "ros2srrc_execution/trajectory_sender.hpp"
51+
5052
// Declaration of GLOBAL VARIABLE --> MoveIt!2 Interface:
5153
moveit::planning_interface::MoveGroupInterface move_group_interface_ROB;
5254

55+
std::shared_ptr<TrajectorySender> trajectory_sender;
56+
5357
// Declaration of GLOBAL VARIABLE --> ROBOT PARAMETER:
5458
std::string param_ROB = "none";
5559
std::string param_ROB_GROUP = "none";
60+
bool sync_real_robot = false;
5661

5762
// Declaration of GLOBAL VARIABLE --> RES:
5863
std::string RES = "none";
@@ -97,6 +102,17 @@ class ActionServer : public rclcpp::Node
97102

98103
this->declare_parameter("ROB_GROUP", "none");
99104

105+
this->declare_parameter("SYNC_REAL_ROBOT", false);
106+
107+
sync_real_robot =
108+
this->get_parameter("SYNC_REAL_ROBOT").as_bool();
109+
110+
RCLCPP_INFO(
111+
this->get_logger(),
112+
"SYNC_REAL_ROBOT -> %s",
113+
sync_real_robot ? "true" : "false"
114+
);
115+
100116
param_ROB_GROUP =
101117
this->get_parameter("ROB_GROUP").as_string();
102118

@@ -206,6 +222,13 @@ class ActionServer : public rclcpp::Node
206222

207223
rt.getRobotTrajectoryMsg(MyPlan.trajectory_);
208224

225+
if (sync_real_robot)
226+
{
227+
trajectory_sender->send(
228+
MyPlan.trajectory_.joint_trajectory
229+
);
230+
}
231+
209232
bool ExecSUCCESS = (move_group_interface_ROB.execute(MyPlan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
210233

211234
if (goal_handle->is_canceling()) {
@@ -260,6 +283,8 @@ int main(int argc, char **argv)
260283
rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)
261284
);
262285

286+
trajectory_sender = std::make_shared<TrajectorySender>(moveit_node);
287+
263288
// Executor para que MoveIt funcione
264289
rclcpp::executors::SingleThreadedExecutor executor;
265290
executor.add_node(moveit_node);
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include "ros2srrc_execution/trajectory_sender.hpp"
2+
3+
TrajectorySender::TrajectorySender(
4+
const rclcpp::Node::SharedPtr& node
5+
)
6+
: node_(node)
7+
{
8+
9+
}
10+
11+
bool TrajectorySender::send(
12+
const trajectory_msgs::msg::JointTrajectory& trajectory
13+
)
14+
{
15+
RCLCPP_INFO(
16+
node_->get_logger(),
17+
"========================================"
18+
);
19+
20+
RCLCPP_INFO(
21+
node_->get_logger(),
22+
"Sending trajectory to real robot"
23+
);
24+
25+
RCLCPP_INFO(
26+
node_->get_logger(),
27+
"Number of joints: %ld",
28+
trajectory.joint_names.size()
29+
);
30+
31+
RCLCPP_INFO(
32+
node_->get_logger(),
33+
"Number of points: %ld",
34+
trajectory.points.size()
35+
);
36+
37+
for (size_t i = 0; i < trajectory.points.size(); ++i)
38+
{
39+
const auto& p = trajectory.points[i];
40+
41+
std::stringstream ss;
42+
43+
ss << "Point " << i << " : ";
44+
45+
for (double q : p.positions)
46+
{
47+
ss << q << " ";
48+
}
49+
50+
RCLCPP_INFO(
51+
node_->get_logger(),
52+
"%s",
53+
ss.str().c_str()
54+
);
55+
}
56+
57+
RCLCPP_INFO(
58+
node_->get_logger(),
59+
"========================================"
60+
);
61+
62+
return true;
63+
}

0 commit comments

Comments
 (0)