Add initial project structure with CMake configuration, source files, and README documentation for Unitree GO2 Custom Controller

This commit is contained in:
2025-09-07 16:43:22 +08:00
parent b2b6ddf245
commit 6acff483dd
16 changed files with 3429 additions and 1 deletions

75
CMakeLists.txt Normal file
View File

@@ -0,0 +1,75 @@
cmake_minimum_required(VERSION 3.16)
project(unitree_go2_custom VERSION 1.0.0)
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Find required packages
find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
# Find unitree_sdk2
set(UNITREE_SDK2_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../unitree_sdk2")
if(NOT EXISTS ${UNITREE_SDK2_PATH})
message(FATAL_ERROR "unitree_sdk2 not found at ${UNITREE_SDK2_PATH}")
endif()
# Add unitree_sdk2 as subdirectory
add_subdirectory(${UNITREE_SDK2_PATH} unitree_sdk2)
# Find MQTT library (Eclipse Paho)
pkg_check_modules(PAHO_MQTT REQUIRED libpaho-mqtt3c)
pkg_check_modules(PAHO_MQTTPP REQUIRED libpaho-mqttpp3)
# Find JSON library
find_package(nlohmann_json REQUIRED)
# Include directories
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
${UNITREE_SDK2_PATH}/include
)
# Source files
set(SOURCES
src/main.cpp
src/mqtt.cpp
src/controller.cpp
src/custom_robot.cpp
src/config.cpp
src/logger.cpp
)
# Create executable with simple name
add_executable(main ${SOURCES})
# Link libraries
target_link_libraries(main
unitree_sdk2
${PAHO_MQTT_LIBRARIES}
${PAHO_MQTTPP_LIBRARIES}
nlohmann_json::nlohmann_json
Threads::Threads
)
# Compiler options
target_compile_options(main PRIVATE
${PAHO_MQTT_CFLAGS_OTHER}
${PAHO_MQTTPP_CFLAGS_OTHER}
)
# Set output directory
set_target_properties(main PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
)
# Install target
install(TARGETS main
RUNTIME DESTINATION bin
)
# Copy config files
install(FILES config/robot_config.json
DESTINATION etc/${PROJECT_NAME}
)