SHA256
184 lines
3.4 KiB
CMake
184 lines
3.4 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(r1_vision LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
option(BUILD_VISION "Build vision components" ON)
|
|
option(BUILD_VOICE "Build R1 voice assistant" ON)
|
|
|
|
set(UNITREE_SDK2_DIR
|
|
"/home/jvizner/unitree_sdk2"
|
|
CACHE PATH "Path to unitree_sdk2"
|
|
)
|
|
|
|
# ============================================================
|
|
# Unitree SDK2
|
|
# ============================================================
|
|
|
|
if(BUILD_VISION OR BUILD_VOICE)
|
|
|
|
if(NOT EXISTS "${UNITREE_SDK2_DIR}/CMakeLists.txt")
|
|
message(FATAL_ERROR
|
|
"Invalid UNITREE_SDK2_DIR: ${UNITREE_SDK2_DIR}"
|
|
)
|
|
endif()
|
|
|
|
add_subdirectory(
|
|
"${UNITREE_SDK2_DIR}"
|
|
"${CMAKE_BINARY_DIR}/unitree_sdk2"
|
|
EXCLUDE_FROM_ALL
|
|
)
|
|
|
|
endif()
|
|
|
|
# ============================================================
|
|
# Vision
|
|
# ============================================================
|
|
|
|
if(BUILD_VISION)
|
|
|
|
find_package(Eigen3 REQUIRED)
|
|
|
|
find_package(OpenCV REQUIRED COMPONENTS
|
|
core
|
|
imgproc
|
|
highgui
|
|
imgcodecs
|
|
)
|
|
|
|
find_package(pinocchio REQUIRED)
|
|
|
|
add_library(r1_vision_common INTERFACE)
|
|
|
|
target_include_directories(
|
|
r1_vision_common
|
|
INTERFACE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
"${UNITREE_SDK2_DIR}/include"
|
|
)
|
|
|
|
target_link_libraries(
|
|
r1_vision_common
|
|
INTERFACE
|
|
Eigen3::Eigen
|
|
pinocchio::pinocchio
|
|
${OpenCV_LIBS}
|
|
unitree_sdk2
|
|
)
|
|
|
|
target_compile_definitions(
|
|
r1_vision_common
|
|
INTERFACE
|
|
UNITREE_SDK2_DIR="${UNITREE_SDK2_DIR}"
|
|
)
|
|
|
|
add_executable(
|
|
vision_node
|
|
src/vision_node.cc
|
|
)
|
|
|
|
target_link_libraries(
|
|
vision_node
|
|
PRIVATE
|
|
r1_vision_common
|
|
)
|
|
|
|
add_executable(
|
|
r1_hand_calibrate
|
|
src/r1_hand_calibrate.cc
|
|
)
|
|
|
|
target_link_libraries(
|
|
r1_hand_calibrate
|
|
PRIVATE
|
|
r1_vision_common
|
|
)
|
|
|
|
endif()
|
|
|
|
# ============================================================
|
|
# Voice
|
|
# ============================================================
|
|
|
|
if(BUILD_VOICE)
|
|
|
|
find_package(CURL REQUIRED)
|
|
|
|
add_executable(
|
|
r1_voice
|
|
|
|
src/voice_node.cc
|
|
src/stt.cc
|
|
src/llm.cc
|
|
src/tts.cc
|
|
src/conversation.cc
|
|
)
|
|
|
|
add_executable(
|
|
r1_mic_test
|
|
src/r1_mic_test.cc
|
|
)
|
|
|
|
target_include_directories(
|
|
r1_mic_test
|
|
PRIVATE
|
|
"${UNITREE_SDK2_DIR}/include"
|
|
)
|
|
|
|
target_include_directories(
|
|
r1_voice
|
|
PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
"${UNITREE_SDK2_DIR}/include"
|
|
)
|
|
|
|
target_link_libraries(
|
|
r1_voice
|
|
PRIVATE
|
|
unitree_sdk2
|
|
CURL::libcurl
|
|
)
|
|
|
|
endif()
|
|
|
|
# ============================================================
|
|
# Install
|
|
# ============================================================
|
|
|
|
set(INSTALL_TARGETS "")
|
|
|
|
if(BUILD_VISION)
|
|
list(APPEND INSTALL_TARGETS
|
|
vision_node
|
|
r1_hand_calibrate
|
|
)
|
|
endif()
|
|
|
|
if(BUILD_VOICE)
|
|
list(APPEND INSTALL_TARGETS
|
|
r1_voice
|
|
)
|
|
endif()
|
|
|
|
install(
|
|
TARGETS ${INSTALL_TARGETS}
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
|
|
if(BUILD_VISION)
|
|
|
|
install(
|
|
DIRECTORY config/
|
|
DESTINATION share/r1_vision/config
|
|
)
|
|
|
|
install(
|
|
PROGRAMS scripts/yolo_detector.py
|
|
DESTINATION share/r1_vision/scripts
|
|
)
|
|
|
|
endif()
|