首页 > 其他分享 >Franka Robot cmake demo

Franka Robot cmake demo

时间:2024-07-10 11:55:20浏览次数:11  
标签:control Franka cmake 示例 demo motion examples generate

cmake_minimum_required(VERSION 3.4) # 指定 CMake 的最低版本要求为 3.4

project(libfranka-examples CXX) # 定义项目名称为 libfranka-examples,并指定语言为 C++

list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}/../cmake) # 将父目录的 `cmake` 子目录添加到模块路径中

set(CMAKE_CXX_STANDARD 17) # 设置 C++ 标准为 C++17
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 将 C++17 设为必需

if(NOT FRANKA_IS_FOUND) # 检查是否已找到 Franka 库
    find_package(Franka REQUIRED) # 如果没有找到,则尝试查找 Franka 库
endif()
find_package(Eigen3 REQUIRED) # 找到 Eigen3 库,这个库是示例代码所需的
find_package(Poco REQUIRED COMPONENTS Foundation) # 找到 Poco 库,这个库也是示例代码所需的

set(THREADS_PREFER_PTHREAD_FLAG ON) # 指定 Threads 库应该优先使用 pthread 标志
find_package(Threads REQUIRED) # 找到 Threads 库,这个库是一些示例代码所需的

add_library(examples_common STATIC # 创建一个静态库称为 `examples_common`
  examples_common.cpp
)

target_link_libraries(examples_common PRIVATE Franka::Franka Eigen3::Eigen3) # 将 `examples_common` 库链接到 Franka 和 Eigen3 库
target_include_directories(examples_common PUBLIC # 指定 `examples_common` 库的包含目录
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:include>
)
set(EXAMPLES # 定义一个示例程序列表
  cartesian_impedance_control
  communication_test
  echo_robot_state
  force_control
  generate_cartesian_pose_motion
  generate_cartesian_pose_motion_external_control_loop
  generate_cartesian_velocity_motion
  generate_cartesian_velocity_motion_external_control_loop
  generate_consecutive_motions
  generate_elbow_motion
  generate_joint_position_motion
  generate_joint_position_motion_external_control_loop
  generate_joint_velocity_motion
  generate_joint_velocity_motion_external_control_loop
  grasp_object
  joint_impedance_control
  joint_point_to_point_motion
  motion_with_control
  motion_with_control_external_control_loop
  print_joint_poses
  vacuum_object
)

foreach(example ${EXAMPLES}) # 遍历示例程序列表
  add_executable(${example} ${example}.cpp) # 为每个示例程序创建一个可执行文件
  target_include_directories(${example} PUBLIC # 指定每个示例程序的包含目录
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:include>
  )
  target_link_libraries(${example} Franka::Franka examples_common Eigen3::Eigen3) # 将每个示例程序链接到 Franka、`examples_common` 和 Eigen3 库
endforeach()

target_link_libraries(joint_impedance_control Threads::Threads) # 将 `joint_impedance_control` 示例程序链接到 Threads 库
target_link_libraries(motion_with_control Poco::Foundation) # 将 `motion_with_control` 示例程序链接到 Poco 库
target_link_libraries(motion_with_control_external_control_loop Poco::Foundation) # 将 `motion_with_control_external_control_loop` 示例程序链接到 Poco 库

include(GNUInstallDirs) # 包含 GNUInstallDirs 模块,它提供了标准的安装目录
install(TARGETS ${EXAMPLES} # 配置已构建的示例程序的安装
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

 

标签:control,Franka,cmake,示例,demo,motion,examples,generate
From: https://www.cnblogs.com/ai-ldj/p/18293744

相关文章

  • Franka Robot 测试网络性能的示例(communication_test.cpp)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<chrono>#include<iostream>#include<thread>#include<franka/active_control.h>#include<frank......
  • Franka Robot setZeroForceTorque 设置零力矩
    在FrankaEmika机器人中,可以使用setZeroForceTorque()函数来设置机器人的零力矩。这个函数可以让机器人保持在零力矩状态,即不施加任何额外的力矩。这种状态下,机器人关节会保持"放松"的状态,可以被外力轻易地移动。以下是一个示例代码:#include<franka/robot.h>intmain()......
  • Franka Robot setDefaultBehavior的作用
    Franka机器人的setDefaultBehavior()函数是一个非常有用的功能,它可以设置机器人在遇到意外情况时的默认行为。这个函数可以帮助开发者更好地控制机器人的安全性和稳定性。以下是setDefaultBehavior()函数的一些常见用法:安全停止行为可以设置机器人在遇到紧急情况时(如检测......
  • Franka Robot robot.setJointImpedance()和robot.setCartesianImpedance()两个函数有
    robot.setJointImpedance()和robot.setCartesianImpedance()两个函数有以下区别和联系:区别:参考坐标系不同setJointImpedance()是设置每个关节的阻抗参数,以关节坐标系为参考。setCartesianImpedance()是设置机器人末端在笛卡尔空间中的阻抗参数,以笛卡尔坐标系为参考。......
  • Franka demo1 - 输出机器人状态(echo_robot_state)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<iostream>#include<franka/exception.h>#include<franka/robot.h>/***@exampleecho_robot_state.cpp......
  • Franka Robot 模型库
    Franka 机器人模型库提供:所有机器人关节的正向运动学。所有机器人关节的主体和零雅可比矩阵。动态参数:惯性矩阵、科里奥利和离心矢量、重力矢量。请注意,加载模型库后,您可以计算任意机器人状态的运动学和动态参数,而不仅仅是当前状态。您还可以以非实时方式使用模型库,例......
  • Franka机器人中的低通滤波器和速率限制器之间的区别和联系
    Franka机器人中的低通滤波器和速率限制器之间存在以下区别和联系:作用目的:低通滤波器的作用是抑制高频噪声,平滑控制指令,提高系统稳定性。速率限制器的作用是限制关节运动的速度变化率,避免机器人产生过大的加速度和扭矩,保护机械系统。作用对象:低通滤波器作用于控......
  • Franka 内部关节阻抗控制器和内部笛卡尔阻抗控制器的区别
    Franka机器人内部的关节阻抗控制器和笛卡尔阻抗控制器之间的本质区别如下:1.控制空间关节空间vs.笛卡尔空间:关节阻抗控制器工作在关节空间,即以关节角度、关节速度和关节扭矩为控制变量。笛卡尔阻抗控制器工作在笛卡尔空间,即以末端执行器的位置、速度和力作为控制变量。......
  • Franka libfranka 介绍
     libfranka是FCI客户端的C++实现。它处理与Control的网络通信,并提供接口以轻松实现以下功能:执行非实时命令来控制手并配置手臂参数。执行实时命令来运行您自己的1kHz控制循环。读取机器人状态以1kHz的频率获取传感器数据。访问模型库来计算所需的运......
  • Franka Robot 机器人状态专有名词解释
    O_T_EE:末端执行器(EndEffector)在Base坐标系中的位姿。O_T_EE_c:最新指令的末端执行器(EE)在Base坐标系中的位姿。O_T_EE_d:期望末端执行器(EE)在Base坐标系中的位姿。F_T_EE:末端执行器在法兰坐标(flangeframe)中的位姿,一般中间会间隔一个标称末端执行器坐标系,实际安装......