R6 Robot Teach Pendant
cmake_minimum_required(VERSION 3.28)
project(r6botteachpendant VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Core Quick Quick3D Ros2Core)
qt_standard_project_setup()
# Main executable
qt_add_executable(r6botteachpendant
main.cpp
)
file(GLOB_RECURSE LINK_QML_FILES_ABS "${CMAKE_CURRENT_SOURCE_DIR}/Link_*/*.qml")
file(GLOB_RECURSE LINK_MESH_FILES_ABS "${CMAKE_CURRENT_SOURCE_DIR}/Link_*/meshes/*.mesh")
# Mark Theme.qml as singleton
set_source_files_properties(Theme.qml PROPERTIES
QT_QML_SINGLETON_TYPE TRUE
)
qt_add_qml_module(r6botteachpendant
URI R6BotTeachPendant
VERSION 1.0
QML_FILES
Main.qml
R6BotViewModel.qml
R6BotView3D.qml
TFBufferManager.qml
StatusBar.qml
JogPanel.qml
WaypointPanel.qml
ReplayPanel.qml
Theme.qml
JointAxes.qml
Link_0.qml
Link_1.qml
Link_2.qml
Link_3.qml
Link_4.qml
Link_5.qml
Link_6.qml
R6BotModel.qml
RESOURCES
meshes/base_001_mesh.mesh
meshes/link_2_mesh.mesh
meshes/link_1_001_mesh.mesh
meshes/link_3_001_mesh.mesh
meshes/link_4_001_mesh.mesh
meshes/link_5_001_mesh.mesh
meshes/link_6_001_mesh.mesh
jog.svg
waypoint.svg
play.svg
qtquickcontrols2.conf
RESOURCE_PREFIX /
NO_RESOURCE_TARGET_PATH
)
# TF is consumed through QtRos2.Transforms (FrameTransformer), which wraps
# tf2_ros in C++, so no tf2_msgs QML module import is needed here.
qt_ros2_configure_target(r6botteachpendant
CAPABILITIES PUBLISHER SUBSCRIBER
MODULES QtRos2TrajectoryMessages
)
target_link_libraries(r6botteachpendant PRIVATE
Qt6::Quick
Qt6::Quick3D
)
install(TARGETS r6botteachpendant
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)