Add initial project structure with CMake configuration, source files, and README documentation for Unitree GO2 Custom Controller
This commit is contained in:
75
CMakeLists.txt
Normal file
75
CMakeLists.txt
Normal 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}
|
||||
)
|
||||
Reference in New Issue
Block a user