servo control

This commit is contained in:
acki
2024-12-06 12:24:54 -05:00
parent 58212b0e49
commit 692abf10b5
3 changed files with 18 additions and 1 deletions

View File

@@ -9,6 +9,7 @@
#include <sensor_msgs/msg/joy.hpp>
#include <modelec_interface/msg/servo_mode.hpp>
#include <modelec_interface/msg/pca9685_servo.hpp>
#include <modelec_interface/srv/new_servo_motor.hpp>
#include <modelec/utils.hpp>
namespace Modelec {
@@ -45,6 +46,7 @@ namespace Modelec {
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr arduino_publisher_;
rclcpp::Publisher<std_msgs::msg::Empty>::SharedPtr clear_pca_publisher_;
rclcpp::Publisher<modelec_interface::msg::PCA9685Servo>::SharedPtr pca9685_publisher_;
rclcpp::Client<modelec_interface::srv::NewServoMotor>::SharedPtr client_;
void CheckButton(const sensor_msgs::msg::Joy::SharedPtr msg);
void CheckAxis(const sensor_msgs::msg::Joy::SharedPtr msg);

View File

@@ -6,7 +6,7 @@ namespace Modelec {
publisher_ = this->create_publisher<modelec_interface::msg::PCA9685Servo>("servo_control", 10);
client_ = this->create_client<modelec_interface::srv::NewServoMotor>("add_servo");
for (int pin : {PINCE_1_PIN, PINCE_2_PIN, PINCE_3_PIN}) {
for (int pin : {PINCE_1_PIN, PINCE_2_PIN, PINCE_3_PIN, ARM_1_PIN, ARM_2_PIN}) {
auto request = std::make_shared<modelec_interface::srv::NewServoMotor::Request>();
request->pin = pin;
auto res = client_->async_send_request(request);

View File

@@ -16,6 +16,21 @@ namespace Modelec {
clear_pca_publisher_ = this->create_publisher<std_msgs::msg::Empty>("clear_pca9685", 10);
pca9685_publisher_ = this->create_publisher<modelec_interface::msg::PCA9685Servo>("servo_control", 10);
client_ = this->create_client<modelec_interface::srv::NewServoMotor>("add_servo");
for (auto servo : solarPannelServos) {
auto request = std::make_shared<modelec_interface::srv::NewServoMotor::Request>();
request->pin = servo.pin;
auto res = client_->async_send_request(request);
if (rclcpp::spin_until_future_complete(this->get_node_base_interface(), res) == rclcpp::FutureReturnCode::SUCCESS) {
if (!res.get()->success) {
RCLCPP_ERROR(this->get_logger(), "Failed to add servo on pin %d", servo.pin);
}
} else {
RCLCPP_ERROR(this->get_logger(), "Service call failed");
}
}
}
void ControllerListener::joy_callback(const sensor_msgs::msg::Joy::SharedPtr msg)