43#include <control_msgs/msg/joint_jog.hpp>
44#include <geometry_msgs/msg/pose_stamped.hpp>
45#include <geometry_msgs/msg/twist_stamped.hpp>
63const int NUM_COMMANDS = 10;
72 auto joint_jog_publisher = servo_test_node_->create_publisher<control_msgs::msg::JointJog>(
73 "/servo_node/delta_joint_cmds", rclcpp::SystemDefaultsQoS());
76 auto request = std::make_shared<moveit_msgs::srv::ServoCommandType::Request>();
77 request->command_type = moveit_msgs::srv::ServoCommandType::Request::JOINT_JOG;
78 auto response = switch_input_client_->async_send_request(request);
79 ASSERT_EQ(response.get()->success,
true);
81 ASSERT_NE(state_count_, 0);
83 control_msgs::msg::JointJog jog_cmd;
85 jog_cmd.header.frame_id =
"panda_link0";
86 jog_cmd.joint_names.resize(7);
87 jog_cmd.velocities.resize(7);
88 jog_cmd.joint_names = {
"panda_joint1",
"panda_joint2",
"panda_joint3",
"panda_joint4",
89 "panda_joint5",
"panda_joint6",
"panda_joint7" };
91 std::fill(jog_cmd.velocities.begin(), jog_cmd.velocities.end(), 0.0);
93 jog_cmd.velocities[6] = 0.5;
96 while (rclcpp::ok() && count < NUM_COMMANDS)
98 jog_cmd.header.stamp = servo_test_node_->now();
99 joint_jog_publisher->publish(jog_cmd);
101 rclcpp::sleep_for(std::chrono::milliseconds(100));
104 ASSERT_GE(traj_count_, NUM_COMMANDS);
107 RCLCPP_INFO_STREAM(servo_test_node_->get_logger(),
"Status after jointjog: " <<
static_cast<size_t>(status));
111 int traj_count_before = traj_count_;
112 jog_cmd.velocities.pop_back();
113 jog_cmd.header.stamp = servo_test_node_->now();
114 joint_jog_publisher->publish(jog_cmd);
115 rclcpp::sleep_for(std::chrono::milliseconds(100));
117 jog_cmd.velocities.push_back(1.0);
118 jog_cmd.velocities.push_back(1.0);
119 jog_cmd.header.stamp = servo_test_node_->now();
120 joint_jog_publisher->publish(jog_cmd);
121 rclcpp::sleep_for(std::chrono::milliseconds(100));
125 ASSERT_EQ(traj_count_, traj_count_before);
127 RCLCPP_INFO_STREAM(servo_test_node_->get_logger(),
"Status after invalid jointjog: " <<
static_cast<size_t>(status));
132 waitForJointStates();
134 auto twist_publisher = servo_test_node_->create_publisher<geometry_msgs::msg::TwistStamped>(
135 "/servo_node/delta_twist_cmds", rclcpp::SystemDefaultsQoS());
137 auto request = std::make_shared<moveit_msgs::srv::ServoCommandType::Request>();
138 request->command_type = moveit_msgs::srv::ServoCommandType::Request::TWIST;
139 auto response = switch_input_client_->async_send_request(request);
140 ASSERT_EQ(response.get()->success,
true);
142 ASSERT_NE(state_count_, 0);
144 geometry_msgs::msg::TwistStamped twist_cmd;
145 twist_cmd.header.frame_id =
"panda_link0";
146 twist_cmd.twist.linear.x = 0.0;
147 twist_cmd.twist.linear.y = 0.0;
148 twist_cmd.twist.linear.z = 0.0;
149 twist_cmd.twist.angular.x = 0.0;
150 twist_cmd.twist.angular.y = 0.0;
151 twist_cmd.twist.angular.z = 0.5;
154 while (rclcpp::ok() && count < NUM_COMMANDS)
156 twist_cmd.header.stamp = servo_test_node_->now();
157 twist_publisher->publish(twist_cmd);
159 rclcpp::sleep_for(std::chrono::milliseconds(100));
162 ASSERT_GE(traj_count_, NUM_COMMANDS);
165 RCLCPP_INFO_STREAM(servo_test_node_->get_logger(),
"Status after twist: " <<
static_cast<size_t>(status));
171 waitForJointStates();
173 auto pose_publisher = servo_test_node_->create_publisher<geometry_msgs::msg::PoseStamped>(
174 "/servo_node/pose_target_cmds", rclcpp::SystemDefaultsQoS());
176 auto request = std::make_shared<moveit_msgs::srv::ServoCommandType::Request>();
177 request->command_type = moveit_msgs::srv::ServoCommandType::Request::POSE;
178 auto response = switch_input_client_->async_send_request(request);
179 ASSERT_EQ(response.get()->success,
true);
181 geometry_msgs::msg::PoseStamped pose_cmd;
182 pose_cmd.header.frame_id =
"panda_link0";
184 pose_cmd.pose.position.x = 0.2;
185 pose_cmd.pose.position.y = -0.2;
186 pose_cmd.pose.position.z = 0.6;
187 pose_cmd.pose.orientation.x = 0.7071;
188 pose_cmd.pose.orientation.y = -0.7071;
189 pose_cmd.pose.orientation.z = 0.0;
190 pose_cmd.pose.orientation.w = 0.0;
192 ASSERT_NE(state_count_, 0);
195 while (rclcpp::ok() && count < NUM_COMMANDS)
197 pose_cmd.header.stamp = servo_test_node_->now();
198 pose_publisher->publish(pose_cmd);
200 rclcpp::sleep_for(std::chrono::milliseconds(100));
203 ASSERT_GE(traj_count_, NUM_COMMANDS);
206 RCLCPP_INFO_STREAM(servo_test_node_->get_logger(),
"Status after pose: " <<
static_cast<size_t>(status));
214 rclcpp::init(argc, argv);
215 ::testing::InitGoogleTest(&argc, argv);
216 int result = RUN_ALL_TESTS();
TEST_F(BulletCollisionDetectionTester, DISABLED_ContinuousCollisionSelf)
Continuous self collision checks are not supported yet by the bullet integration.
int main(int argc, char **argv)