cmvr-es/src/devices/robot/controller/abstractcontroller.h

44 lines
1.2 KiB
C
Raw Normal View History

2025-10-24 09:51:14 +08:00
//
// Created by linbo on 2025/10/23.
//
2025-10-29 16:26:15 +08:00
#pragma once
2025-10-24 09:51:14 +08:00
#include <curl/curl.h>
#include "rapidxml/xml_parser.h"
2025-10-24 17:06:17 +08:00
#include "jsoncpp/json/json.h"
2025-10-24 09:51:14 +08:00
namespace cmvr::device
{
2025-10-24 14:37:17 +08:00
enum ControllerState
{
ControllerState_Idle, //默认
ControllerState_Executing, //正在执行命令
ControllerState_Switching //命令被中断,正在切换
};
2025-10-24 09:51:14 +08:00
class AbstractController
{
public:
2025-10-24 14:37:17 +08:00
explicit AbstractController(const XmlNode& cfg);
virtual ~AbstractController();
[[nodiscard]] ControllerState getState() const {return state_;}
2025-10-29 16:26:15 +08:00
//此处的Json中应该包含目标电机信息电机idcanGroupId等其他必要参数用以确定是调用哪个can实例发送消息
// 还要包含操作内容,比如要执行的是直接控制每个电机位置,还是指定末端关节位置
/*
{canGroupId:"",motors:[{"joint_name":"","id":""},{"joint_name":"","id":""}]}
**/
2025-10-24 17:06:17 +08:00
virtual void call(const Json::Value& json) = 0;
2025-10-24 14:37:17 +08:00
2025-10-29 16:26:15 +08:00
virtual void interrupt() = 0;
2025-10-24 14:37:17 +08:00
virtual void stop() = 0;
2025-10-24 14:44:45 +08:00
protected:
2025-10-24 14:37:17 +08:00
ControllerState state_;
2025-10-29 16:26:15 +08:00
double defaultSpeed_;
double defaultAcc_;
2025-10-24 09:51:14 +08:00
};
}