Цей мінімальний приклад використовує libfranka для запиту поточної пози суглобів робота Franka.
franka_q.cpp
#include <franka/robot.h>
#include <franka/robot_state.h>
#include <franka/exception.h>
#include <iostream>
#include <array>
#include <chrono>
#include <iostream>
#include <thread>
#include <iomanip>
using std::cout, std::endl;
int main() {
try {
// Підключитися до робота.
franka::Robot robot("192.168.0.1"); // Замініть на IP-адресу вашого робота.
// Безперервно запитувати та виводити позу робота.
while (true) {
// Отримати поточний стан робота.
franka::RobotState state = robot.readOnce();
// Витягнути та вивести позу кінцевого виконавчого органу.
// Використати фіксовану ширину для вирівнювання всіх стовпців
cout << "q =" << std::fixed << std::setprecision(5);
for (size_t i = 0; i < state.q.size(); i++)
{
cout << state.q.at(i) << " ";
}
cout << endl;
// Додати невелику затримку, щоб уникнути надмірного виводу.
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
} catch (const franka::Exception& ex) {
// Обробити винятки, створені керуванням робота.
std::cerr << "Виняток: " << ex.what() << std::endl;
return -1;
}
return 0;
}Як скомпілювати
За умови, що libfranka встановлено системно, ви можете скомпілювати цей приклад за допомогою:
build_franka_q.sh
g++ -o franka_q franka_q.cpp -lfrankaЗапустіть за допомогою
run_franka_q.sh
./franka_qПриклад виводу
franka_q_output.txt
q =-0.04501 -0.75216 -0.01165 -2.35292 -0.07323 1.57705 0.79462
[...]
Дивіться схожі статті за категоріями:
Robotics
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow