diff --git a/src/brain/config/bt_carry_boxes.xml b/src/brain/config/bt_carry_boxes.xml
new file mode 100644
index 0000000..aeb49a3
--- /dev/null
+++ b/src/brain/config/bt_carry_boxes.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/brain/config/robot_skills.yaml b/src/brain/config/robot_skills.yaml
index d286849..5dec7b0 100644
--- a/src/brain/config/robot_skills.yaml
+++ b/src/brain/config/robot_skills.yaml
@@ -16,6 +16,18 @@
interfaces:
- Arm.action
+- name: WaistControl
+ version: 1.0.0
+ description: "腰部控制"
+ interfaces:
+ - WaistControl.action
+
+- name: CameraTakePhoto
+ version: 1.0.0
+ description: "相机拍照"
+ interfaces:
+ - CameraTakePhoto.action
+
- name: HandControl
version: 1.0.0
description: "手部控制"
diff --git a/src/brain/include/brain/skill_manager.hpp b/src/brain/include/brain/skill_manager.hpp
index c27dbe6..b06f5e2 100644
--- a/src/brain/include/brain/skill_manager.hpp
+++ b/src/brain/include/brain/skill_manager.hpp
@@ -22,6 +22,8 @@
#include "interfaces/action/arm.hpp"
#include "interfaces/action/slam_mode.hpp"
#include "nav2_msgs/action/navigate_to_pose.hpp"
+#include "interfaces/action/camera_take_photo.hpp"
+#include "interfaces/action/waist_control.hpp"
namespace brain
{
@@ -360,6 +362,20 @@ struct SkillActionTrait
static std::string message(const interfaces::action::HandControl::Result & r) {return r.message;}
};
template<>
+struct SkillActionTrait
+{
+ static constexpr const char * skill_name = "CameraTakePhoto";
+ static bool success(const interfaces::action::CameraTakePhoto::Result & r) {return r.success;}
+ static std::string message(const interfaces::action::CameraTakePhoto::Result & r) {return r.message;}
+};
+template<>
+struct SkillActionTrait
+{
+ static constexpr const char * skill_name = "WaistControl";
+ static bool success(const interfaces::action::WaistControl::Result & r) {return r.success;}
+ static std::string message(const interfaces::action::WaistControl::Result & r) {return r.message;}
+};
+template<>
struct SkillActionTrait
{
static constexpr const char * skill_name = "LegControl";
@@ -419,7 +435,9 @@ using SkillActionTypes = std::tuple<
interfaces::action::LegControl,
interfaces::action::VisionGraspObject,
interfaces::action::SlamMode,
- nav2_msgs::action::NavigateToPose
+ nav2_msgs::action::NavigateToPose,
+ interfaces::action::CameraTakePhoto,
+ interfaces::action::WaistControl
>;
/**
diff --git a/src/brain/src/cerebellum_node.cpp b/src/brain/src/cerebellum_node.cpp
index c9e59dd..7e68178 100644
--- a/src/brain/src/cerebellum_node.cpp
+++ b/src/brain/src/cerebellum_node.cpp
@@ -75,9 +75,9 @@ CerebellumNode::CerebellumNode(const rclcpp::NodeOptions & options)
skill_manager_ = std::make_unique(this, action_clients_.get(), nullptr);
DeclareAndLoadParameters();
+ LoadSkillsFile();
ConfigureActionHooks();
ConfigureServiceHooks();
- LoadSkillsFile();
SetupStatsTimerAndPublisher();
SetupExecuteBtServer();
diff --git a/src/brain/src/cerebrum_node.cpp b/src/brain/src/cerebrum_node.cpp
index d353b42..b3c0935 100644
--- a/src/brain/src/cerebrum_node.cpp
+++ b/src/brain/src/cerebrum_node.cpp
@@ -82,7 +82,7 @@ struct UpdatingFlagGuard
*/
CerebrumNode::CerebrumNode(const rclcpp::NodeOptions & options)
: rclcpp::Node("cerebrum_node", options),
- bt_config_file_path_(ament_index_cpp::get_package_share_directory("brain") + std::string("/config/bt_vision_grasp.xml"))
+ bt_config_file_path_(ament_index_cpp::get_package_share_directory("brain") + std::string("/config/bt_carry_boxes.xml"))
{
InitializeRegistries();
DeclareParameters();
diff --git a/src/brain/src/skill_manager.cpp b/src/brain/src/skill_manager.cpp
index 5669304..1217c23 100644
--- a/src/brain/src/skill_manager.cpp
+++ b/src/brain/src/skill_manager.cpp
@@ -25,6 +25,8 @@
#include "interfaces/srv/map_load.hpp"
#include "interfaces/action/arm.hpp"
#include "nav2_msgs/action/navigate_to_pose.hpp"
+#include "interfaces/action/waist_control.hpp"
+#include "interfaces/action/camera_take_photo.hpp"
using interfaces::action::ArmSpaceControl;
using interfaces::action::Arm;
@@ -32,6 +34,8 @@ using interfaces::action::HandControl;
using interfaces::action::LegControl;
using interfaces::action::VisionGraspObject;
using interfaces::srv::VisionObjectRecognition;
+using interfaces::action::CameraTakePhoto;
+using interfaces::action::WaistControl;
namespace brain
{
@@ -173,6 +177,12 @@ void SkillManager::register_interfaces_(const SkillSpec & s)
{"HandControl", [this](const std::string & topic, const std::string & internal_skill) {
register_action_client_default("HandControl", topic, internal_skill);
}},
+ {"WaistControl", [this](const std::string & topic, const std::string & internal_skill) {
+ register_action_client_default("WaistControl", topic, internal_skill);
+ }},
+ {"CameraTakePhoto", [this](const std::string & topic, const std::string & internal_skill) {
+ register_action_client_default("CameraTakePhoto", topic, internal_skill);
+ }},
{"LegControl", [this](const std::string & topic, const std::string & internal_skill) {
register_action_client_default("LegControl", topic, internal_skill);
}},