Files
lzwc-terminal-unitreeGo2/include/controller.hpp

59 lines
1.4 KiB
C++

#pragma once
#include <memory>
#include <atomic>
#include <nlohmann/json.hpp>
#include <unitree/robot/go2/sport/sport_client.hpp>
#include <unitree/robot/go2/obstacles_avoid/obstacles_avoid_client.hpp>
#include <unitree/robot/go2/video/video_client.hpp>
#include <unitree/robot/go2/vui/vui_client.hpp>
#include <unitree/robot/channel/channel_subscriber.hpp>
#include <unitree/idl/go2/SportModeState_.hpp>
namespace custom {
class Controller {
public:
explicit Controller(const std::string& networkInterface);
~Controller();
bool initialize();
bool start();
bool stop();
bool isRunning() const { return running_; }
// Sport
bool StandUp();
bool StandDown();
bool Sit();
bool Lie();
bool Damp();
bool RecoveryStand();
bool StopMove();
bool BalanceStand();
bool Dance1();
bool Dance2();
bool Hello();
// Obstacle
bool SwitchSet(bool enable);
bool SwitchGet(bool& enable);
bool UseRemoteCommandFromApi(bool isRemoteCommandsFromApi);
bool MoveToAbsolutePosition(float x, float y, float yaw);
bool MoveToIncrementPosition(float x, float y, float yaw);
private:
std::unique_ptr<unitree::robot::go2::SportClient> sportClient_;
std::unique_ptr<unitree::robot::go2::ObstaclesAvoidClient> obstacleClient_;
std::atomic<bool> running_;
std::atomic<bool> initialized_;
std::string networkInterface_;
};
} // namespace custom