optimize code
This commit is contained in:
@@ -117,7 +117,10 @@ void CerebellumNode::ConfigureArmHooks()
|
||||
SkillManager::ActionHookOptions<interfaces::action::Arm> hooks;
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::Arm::Goal goal{};
|
||||
(void)TryParseCallPayload<interfaces::action::Arm::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::Arm::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
|
||||
RCLCPP_INFO(this->get_logger(), "[%s]Received Arm goal: body_id=%d, data_type=%d, data_length=%d, command_id=%ld, frame_time_stamp=%ld, data_array=",
|
||||
skill_name.c_str(), goal.body_id, goal.data_type, goal.data_length, goal.command_id, goal.frame_time_stamp);
|
||||
@@ -132,7 +135,7 @@ void CerebellumNode::ConfigureArmHooks()
|
||||
goal.frame_time_stamp = this->get_clock()->now().nanoseconds();
|
||||
|
||||
if (goal.data_type == ARM_COMMAND_TYPE_POSE_DIRECT_MOVE) {
|
||||
if (goal.data_length == 14 && goal.data_array.size() == 14) {
|
||||
if (goal.data_length == POSE_DIMENSION*2 && goal.data_array.size() == POSE_DIMENSION*2) {
|
||||
if (goal.body_id == LEFT_ARM) {
|
||||
goal.data_array = {goal.data_array[0], goal.data_array[1], goal.data_array[2],
|
||||
goal.data_array[3], goal.data_array[4], goal.data_array[5], goal.data_array[6]};
|
||||
@@ -140,10 +143,10 @@ void CerebellumNode::ConfigureArmHooks()
|
||||
goal.data_array = {goal.data_array[7], goal.data_array[8], goal.data_array[9],
|
||||
goal.data_array[10], goal.data_array[11], goal.data_array[12], goal.data_array[13]};
|
||||
}
|
||||
goal.data_length = POSE_DIMENSION;
|
||||
}
|
||||
goal.data_length = POSE_DIMENSION;
|
||||
} else {
|
||||
if (goal.data_length == 12 && goal.data_array.size() == 12) {
|
||||
} else if (goal.data_type == ARM_COMMAND_TYPE_ANGLE_DIRECT_MOVE) {
|
||||
if (goal.data_length == USED_ARM_DOF*2 && goal.data_array.size() == USED_ARM_DOF*2) {
|
||||
if (goal.body_id == LEFT_ARM) {
|
||||
goal.data_array = {goal.data_array[0], goal.data_array[1], goal.data_array[2],
|
||||
goal.data_array[3], goal.data_array[4], goal.data_array[5]};
|
||||
@@ -151,9 +154,8 @@ void CerebellumNode::ConfigureArmHooks()
|
||||
goal.data_array = {goal.data_array[6], goal.data_array[7], goal.data_array[8], goal.data_array[9],
|
||||
goal.data_array[10], goal.data_array[11]};
|
||||
}
|
||||
goal.data_length = USED_ARM_DOF;
|
||||
}
|
||||
goal.data_length = USED_ARM_DOF;
|
||||
goal.data_type = ARM_COMMAND_TYPE_ANGLE_DIRECT_MOVE;
|
||||
}
|
||||
|
||||
RCLCPP_INFO(this->get_logger(), "[%s] Control params: body_id=%d, data_type=%d, data_length=%d, command_id=%ld, frame_time_stamp=%ld, data_array=[%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f]",
|
||||
@@ -218,7 +220,10 @@ void CerebellumNode::ConfigureHandControlHooks()
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::HandControl::Goal goal{};
|
||||
// Plan A: per-call YAML overrides
|
||||
(void)TryParseCallPayload<interfaces::action::HandControl::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::HandControl::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
const std::string param = "hand_control.target_pose";
|
||||
if (!this->has_parameter(param)) {
|
||||
this->declare_parameter<std::vector<double>>(param, {0.0, 0.0, 0.0});
|
||||
@@ -275,7 +280,10 @@ void CerebellumNode::ConfigureMoveWaistHooks()
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::MoveWaist::Goal goal{};
|
||||
// Plan A: load per-call YAML payload into goal if present
|
||||
(void)TryParseCallPayload<interfaces::action::MoveWaist::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::MoveWaist::Goal>(skill_name, goal)) {
|
||||
RCLCPP_INFO(this->get_logger(), "Loaded MoveWaist goal from YAML payload");
|
||||
return goal;
|
||||
}
|
||||
|
||||
RCLCPP_INFO(this->get_logger(), "[%s] move_pitch_degree: %f, move_yaw_degree: %f",
|
||||
skill_name.c_str(), goal.move_pitch_degree, goal.move_yaw_degree);
|
||||
@@ -288,7 +296,7 @@ void CerebellumNode::ConfigureMoveWaistHooks()
|
||||
const std::shared_ptr<const interfaces::action::MoveWaist::Feedback> & feedback) {
|
||||
if (!feedback) {return;}
|
||||
//TODO
|
||||
|
||||
(void)skill_name;
|
||||
};
|
||||
hooks.on_result = [this](
|
||||
const std::string & skill_name,
|
||||
@@ -326,7 +334,10 @@ void CerebellumNode::ConfigureMoveLegHooks()
|
||||
SkillManager::ActionHookOptions<interfaces::action::MoveLeg> hooks;
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::MoveLeg::Goal goal{};
|
||||
(void)TryParseCallPayload<interfaces::action::MoveLeg::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::MoveLeg::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
return goal;
|
||||
};
|
||||
hooks.on_feedback = [this](
|
||||
@@ -335,7 +346,7 @@ void CerebellumNode::ConfigureMoveLegHooks()
|
||||
const std::shared_ptr<const interfaces::action::MoveLeg::Feedback> & feedback) {
|
||||
if (!feedback) {return;}
|
||||
//TODO
|
||||
|
||||
(void)skill_name;
|
||||
};
|
||||
hooks.on_result = [this](
|
||||
const std::string & skill_name,
|
||||
@@ -374,7 +385,10 @@ void CerebellumNode::ConfigureMoveWheelHooks()
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::MoveWheel::Goal goal{};
|
||||
// Plan A: per-call YAML overrides
|
||||
(void)TryParseCallPayload<interfaces::action::MoveWheel::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::MoveWheel::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
|
||||
return goal;
|
||||
};
|
||||
@@ -384,7 +398,7 @@ void CerebellumNode::ConfigureMoveWheelHooks()
|
||||
const std::shared_ptr<const interfaces::action::MoveWheel::Feedback> & feedback) {
|
||||
if (!feedback) {return;}
|
||||
//TODO
|
||||
|
||||
(void)skill_name;
|
||||
};
|
||||
hooks.on_result = [this](
|
||||
const std::string & skill_name,
|
||||
@@ -423,7 +437,10 @@ void CerebellumNode::ConfigureMoveHomeHooks()
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::MoveHome::Goal goal{};
|
||||
// Plan A: per-call YAML overrides (even though goal is empty)
|
||||
(void)TryParseCallPayload<interfaces::action::MoveHome::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::MoveHome::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
|
||||
return goal;
|
||||
};
|
||||
@@ -433,7 +450,7 @@ void CerebellumNode::ConfigureMoveHomeHooks()
|
||||
const std::shared_ptr<const interfaces::action::MoveHome::Feedback> & feedback) {
|
||||
if (!feedback) {return;}
|
||||
//TODO
|
||||
|
||||
(void)skill_name;
|
||||
};
|
||||
hooks.on_result = [this](
|
||||
const std::string & skill_name,
|
||||
@@ -564,7 +581,10 @@ void CerebellumNode::ConfigureCameraTakePhotoHooks()
|
||||
SkillManager::ActionHookOptions<interfaces::action::CameraTakePhoto> hooks;
|
||||
hooks.make_goal = [this](const std::string & skill_name) {
|
||||
interfaces::action::CameraTakePhoto::Goal goal{};
|
||||
(void)TryParseCallPayload<interfaces::action::CameraTakePhoto::Goal>(skill_name, goal);
|
||||
if (!TryParseCallPayload<interfaces::action::CameraTakePhoto::Goal>(skill_name, goal)) {
|
||||
RCLCPP_ERROR(this->get_logger(), "Failed to parse call payload for skill %s", skill_name.c_str());
|
||||
return goal;
|
||||
}
|
||||
return goal;
|
||||
};
|
||||
hooks.on_result = [this](
|
||||
@@ -1211,7 +1231,7 @@ bool CerebellumNode::ExecuteBilateralArmAction(
|
||||
const std::shared_ptr<rclcpp_action::ServerGoalHandle<interfaces::action::ExecuteBtAction>> & goal_handle,
|
||||
std::string & detail)
|
||||
{
|
||||
RCLCPP_INFO(this->get_logger(), "[Arm] send two goals: body_id=1 and body_id=0");
|
||||
RCLCPP_INFO(this->get_logger(), "[Arm] send two goals: body_id=1 and body_id=0, index=%d, total_skills=%d", index, total_skills);
|
||||
|
||||
std::atomic<bool> finished1{false}, finished2{false};
|
||||
bool ok1 = false, ok2 = false;
|
||||
@@ -1551,7 +1571,8 @@ bool CerebellumNode::ValidateAndParseGoal(
|
||||
}
|
||||
std::ostringstream oss; oss << "[ExecuteBtAction] Received goal calls=[";
|
||||
for (size_t i = 0; i < goal->calls.size(); ++i) {
|
||||
if (i) oss << ','; oss << goal->calls[i].name;
|
||||
if (i) oss << ',';
|
||||
oss << goal->calls[i].name;
|
||||
}
|
||||
oss << "] (count=" << goal->calls.size() << ")";
|
||||
RCLCPP_INFO(logger, "%s", oss.str().c_str());
|
||||
|
||||
@@ -322,6 +322,7 @@ void processTransition(
|
||||
statechart::transition<Ev, Dst> *, std::shared_ptr<SmaccStateInfo> & sourceState)
|
||||
{
|
||||
// RCLCPP_INFO_STREAM(getLogger(),"GOTCHA");
|
||||
(void)sourceState;
|
||||
}
|
||||
|
||||
template <typename Ev>
|
||||
@@ -329,6 +330,7 @@ void processTransition(
|
||||
statechart::custom_reaction<Ev> *, std::shared_ptr<SmaccStateInfo> & sourceState)
|
||||
{
|
||||
// RCLCPP_INFO_STREAM(getLogger(),"GOTCHA");
|
||||
(void)sourceState;
|
||||
}
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user