WATANABE Aoi 2022-07-12
Merge pull request #12 from HarvestX/features/speed-factor
add speed factor
@6ba3d809820f1aab4c0bcb2cadd36e72e579262d
.vscode/c_cpp_properties.json
--- .vscode/c_cpp_properties.json
+++ .vscode/c_cpp_properties.json
@@ -8,9 +8,9 @@
             "includePath": [
                 "/opt/ros/galactic/include/**",
                 "/usr/include/**",
-                "{workspaceFolder}/p9n_interface/include/**",
-                "{workspaceFolder}/p9n_example/include/**",
-                "{workspaceFolder}/p9n_test/include/**",
+                "${workspaceFolder}/p9n_interface/include/**",
+                "${workspaceFolder}/p9n_example/include/**",
+                "${workspaceFolder}/p9n_test/include/**",
                 "${workspaceFolder}/p9n_node/include/**"
             ],
             "name": "ROS",
.vscode/cspell.json
--- .vscode/cspell.json
+++ .vscode/cspell.json
@@ -13,6 +13,7 @@
     "urdf",
     "bringup",
     "dualsense",
-    "dualshock"
+    "dualshock",
+    "teleop"
   ]
 }
(파일 끝에 줄바꿈 문자 없음)
.vscode/settings.json
--- .vscode/settings.json
+++ .vscode/settings.json
@@ -97,6 +97,8 @@
     "core": "cpp",
     "strstream": "cpp",
     "cfenv": "cpp",
-    "valarray": "cpp"
+    "valarray": "cpp",
+    "any": "cpp",
+    "regex": "cpp"
   }
 }
(파일 끝에 줄바꿈 문자 없음)
p9n_node/include/p9n_node/teleop_twist_joy_node.hpp
--- p9n_node/include/p9n_node/teleop_twist_joy_node.hpp
+++ p9n_node/include/p9n_node/teleop_twist_joy_node.hpp
@@ -28,6 +28,8 @@
 class TeleopTwistJoyNode : public rclcpp::Node
 {
 private:
+  float speed_factor_ = 1.0;
+
   p9n_interface::HW_TYPE hw_type_;
   std::unique_ptr<p9n_interface::PlayStationInterface> p9n_if_;
 
p9n_node/src/teleop_twist_joy_node.cpp
--- p9n_node/src/teleop_twist_joy_node.cpp
+++ p9n_node/src/teleop_twist_joy_node.cpp
@@ -60,20 +60,42 @@
 void TeleopTwistJoyNode::onJoy(sensor_msgs::msg::Joy::ConstSharedPtr joy_msg)
 {
   this->p9n_if_->setJoyMsg(joy_msg);
+
+  if (this->p9n_if_->pressedR1()) {
+    speed_factor_ = speed_factor_ * 1.1;
+    RCLCPP_INFO(
+      this->get_logger(),
+      "Max speed: %.3f", speed_factor_);
+  }
+  if (this->p9n_if_->pressedL1()) {
+    speed_factor_ = speed_factor_ * 0.9;
+    RCLCPP_INFO(
+      this->get_logger(),
+      "Max speed: %.3f", speed_factor_);
+  }
+
+  auto twist = geometry_msgs::msg::Twist();
   if (
     std::abs(this->p9n_if_->tiltedStickLX()) > 1e-2 ||
     std::abs(this->p9n_if_->tiltedStickLY()) > 1e-2)
   {
-    float l_x = this->p9n_if_->tiltedStickLX();
     float l_y = this->p9n_if_->tiltedStickLY();
+    float l_x = this->p9n_if_->tiltedStickLX();
 
-    auto twist = geometry_msgs::msg::Twist();
-    twist.linear.x = l_y;
-    twist.angular.z = l_x;
+    twist.linear.x = speed_factor_ * l_y;
+    twist.angular.z = M_PI * speed_factor_ * l_x;
+
     this->twist_pub_->publish(twist);
+
+    // never wait for chattering for this scheme
+    return;
   } else {
-    using namespace std::chrono_literals;
-    rclcpp::sleep_for(100ms);
+    twist.linear.x = 0.0;
+    twist.angular.z = 0.0;
+    this->twist_pub_->publish(twist);
   }
+
+  using namespace std::chrono_literals;
+  rclcpp::sleep_for(200ms);
 }
-} // namespace p9n_node
+}  // namespace p9n_node
Add a comment
List