SimpleRobot
Разработка платформы:
Целевая платформа: поскольку разработка ведётся на Qt, то программа может быть скомпилирована и запущена на различных платформах:
Основные API: подробная документация доступна по ссылке: doc/html/index.html.
// Перемещение главного плеча на заданный угол
// angle: угол
// speed: скорость от 1 до 100, -1 означает продолжение предыдущего установленного значения движения
// immediate: если true, то сразу достигается указанное положение, speed не действует
bool RotateMasterAbs(float angle, float speed = -1, bool immediate = false);
// Перемещение главного плеча на указанный размер угла
// angle: угол
// speed: скорость от 1 до 100, -1 означает продолжение предыдущего установленного значения движения
// immediate: если true, то сразу достигается указанное положение, speed не действует
bool RotateMaster(float angle, float speed = -1, bool immediate = false);
bool RotateAssistantAbs(float angle, float speed = -1, bool immediate = false);
bool RotateAssistant(float angle, float speed = -1, bool immediate = false);
bool RotateBarAbs(float angle, float speed = -1, bool immediate = false);
bool RotateBar(float angle, float speed = -1, bool immediate = false);
bool MoveBarAbs(float down, float speed = -1, bool immediate = false);
bool MoveBar(float down, float speed = -1, bool immediate = false);
// Указание контролируемой 3D модели данных
void setModel(Model *model);
// Указание контролируемого 3D представления
void setView(View *view);
// Отправка сигнала при завершении действия, обратите внимание, что в режиме немедленного достижения сигнал никогда не отправляется
void setFinishedSignal(bool open);
Простой пример: mainwindow.cpp
include "mainwindow.h"
#include "ui_mainwindow.h"
#include "robot.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
robot = new Robot(); // Получение экземпляра робота
view = robot->getView(); // Получение 3D-представления
control = robot->getControl(); // Получение контроллера робота
this->setCentralWidget(view); // Установка 3D-представления в качестве текущего окна главного вида
connect(control, SIGNAL(actionFinished()),
this, SLOT(onReached())); // Подключение сигнала завершения действия
control->setFinishedSignal(true); // Открытие сигнала завершения действия
}
MainWindow::~MainWindow()
{
delete ui;
}
// Функция обработки нажатия клавиш
void MainWindow::keyPressEvent(QKeyEvent *event)
{
bool immediate = false;
// Если нажата клавиша Shift, то действие выполняется немедленно
if (event->modifiers() == Qt::ShiftModifier) immediate = true;
switch (event->key()) {
case Qt::Key_Left:
view->rotateView(0, -10, 0);
break;
case Qt::Key_Down:
view->rotateView(10, 0, 0);
break;
case Qt::Key_Up:
view->rotateView(-10, 0, 0);
break;
case Qt::Key_Right:
view->rotateView(0, 10, 0);
break;
case Qt::Key_Q:
control->RotateMaster(-40, 100, immediate);
break;
case Qt::Key_A:
control->RotateMaster(40, 100, immediate);
break;
case Qt::Key_W:
control->RotateAssistant(-40, 100, immediate);
break;
case Qt::Key_S:
control->RotateAssistant(40, 100, immediate);
break;
case Qt::Key_E:
control->RotateBar(-40, 100, immediate);
break;
case Qt::Key_D:
control->RotateBar(40, 100, immediate);
break;
case Qt::Key_R:
control->MoveBar(-40, 100, immediate);
break;
case Qt::Key_F:
control->MoveBar(40, 100, immediate);
break;
case Qt::Key_U:
control->RotateMasterAbs(-90, 50, immediate);
break;
case Qt::Key_J:
control->RotateMasterAbs(90, 50, immediate);
break;
case Qt::Key_I:
control->RotateAssistantAbs(-90, 50, immediate);
break;
case Qt::Key_K:
control::RotateAssistantAbs(90, 50, immediate);
break;
case Qt::Key_O:
control->RotateBarAbs(-90, 50, immediate);
break;
case Qt::Key_L:
control->RotateBarAbs(90, 50, immediate);
break;
case Qt::Key_P:
control->MoveBarAbs(40, 50, immediate);
break;
case Qt::Key_Semicolon:
control->MoveBarAbs(0, 50, immediate);
break;
default:
QMainWindow::keyPressEvent(event);
break;
}
}
// Слот для завершения действия
void MainWindow::onReached()
{
qDebug() << "Reached!";
}
Пример использования: после успешной компиляции в QTCreator запустите программу.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )