Browse Source

Merge branch 'master' of git@pixhawk.ethz.ch:qgroundcontrol

QGC4.4
lm 15 years ago
parent
commit
69addca746
  1. 20
      parameters_alpha.txt
  2. 28
      parameters_bravo.txt
  3. BIN
      patterns/0.bmp
  4. BIN
      patterns/1.bmp
  5. BIN
      patterns/2.bmp
  6. BIN
      patterns/3.bmp
  7. BIN
      patterns/4.bmp
  8. BIN
      patterns/5.bmp
  9. BIN
      patterns/6.bmp
  10. BIN
      patterns/7.bmp
  11. BIN
      patterns/8.bmp
  12. BIN
      patterns/9.bmp
  13. BIN
      patterns/a.bmp
  14. BIN
      patterns/b.bmp
  15. BIN
      patterns/c.bmp
  16. BIN
      patterns/d.bmp
  17. BIN
      patterns/e.bmp
  18. BIN
      patterns/f.bmp
  19. BIN
      patterns/g.bmp
  20. BIN
      patterns/h.bmp
  21. BIN
      patterns/i.bmp
  22. BIN
      patterns/j.bmp
  23. BIN
      patterns/k.bmp
  24. BIN
      patterns/l.bmp
  25. BIN
      patterns/m.bmp
  26. BIN
      patterns/n.bmp
  27. BIN
      patterns/o.bmp
  28. BIN
      patterns/p.bmp
  29. BIN
      patterns/q.bmp
  30. BIN
      patterns/r.bmp
  31. BIN
      patterns/s.bmp
  32. BIN
      patterns/t.bmp
  33. BIN
      patterns/u.bmp
  34. BIN
      patterns/v.bmp
  35. BIN
      patterns/w.bmp
  36. BIN
      patterns/x.bmp
  37. BIN
      patterns/y.bmp
  38. BIN
      patterns/z.bmp
  39. 8
      src/uas/PxQuadMAV.cc
  40. 2
      src/uas/UASInterface.h
  41. 154
      src/ui/ObjectDetectionView.cc
  42. 30
      src/ui/ObjectDetectionView.h
  43. 45
      src/ui/ObjectDetectionView.ui
  44. 9
      waypoints-final-pole-racing.txt
  45. 20
      waypoints_A0_circlev2.txt

20
parameters_alpha.txt

@ -23,18 +23,20 @@ @@ -23,18 +23,20 @@
42 200 GYRO_OFFSET_X 29760
42 200 GYRO_OFFSET_Y 29860
42 200 GYRO_OFFSET_Z 29877
42 200 MIX_OFFSET 1
42 200 MIX_OFFSET 0
42 200 MIX_POSITION 0
42 200 MIX_POS_YAW 0
42 200 MIX_REMOTE 1
42 200 MIX_REMOTE 0
42 200 MIX_Z_POSITION 0
42 200 PID_ATT_AWU 0.3
42 200 PID_ATT_D 30
42 200 PID_ATT_I 60
42 200 PID_ATT_LIM 100
42 200 PID_ATT_P 90
42 200 PID_POS_AWU 5
42 200 PID_POS_D 2
42 200 PID_POS_I 0.4
42 200 PID_POS_LIM 0.2
42 200 PID_POS_P 1.8
42 200 PID_POS_Z_AWU 3
42 200 PID_POS_Z_D 0.2
@ -44,16 +46,18 @@ @@ -44,16 +46,18 @@
42 200 PID_YAWPOS_AWU 1
42 200 PID_YAWPOS_D 1
42 200 PID_YAWPOS_I 0.1
42 200 PID_YAWPOS_LIM 2
42 200 PID_YAWPOS_P 5
42 200 PID_YAWSPEED_D 0
42 200 PID_YAWSPEED_I 10
42 200 PID_YAWSPEED_P 30
42 200 PID_YAWSPEED_I 5
42 200 PID_YAWSPEED_P 15
42 200 PID_YAWSPE_AWU 1
42 200 PID_YAWSPE_LIM 50
42 200 POS_SP_ACCEPT 1
42 200 POS_SP_X 1.75
42 200 POS_SP_Y 0.5
42 200 POS_SP_YAW 0
42 200 POS_SP_Z 0
42 200 POS_SP_X 1.09
42 200 POS_SP_Y 0.527403
42 200 POS_SP_YAW 1.57763
42 200 POS_SP_Z -0.7
42 200 POS_TIMEOUT 1e+06
42 200 RC_NICK_CHAN 1
42 200 RC_ROLL_CHAN 2

28
parameters_bravo.txt

@ -20,21 +20,23 @@ @@ -20,21 +20,23 @@
42 200 DEBUG_4 0
42 200 DEBUG_5 0
42 200 DEBUG_6 0
42 200 GYRO_OFFSET_X 29830
42 200 GYRO_OFFSET_Y 29990
42 200 GYRO_OFFSET_Z 29440
42 200 MIX_OFFSET 1
42 200 GYRO_OFFSET_X 29884
42 200 GYRO_OFFSET_Y 29943
42 200 GYRO_OFFSET_Z 29479
42 200 MIX_OFFSET 0
42 200 MIX_POSITION 0
42 200 MIX_POS_YAW 0
42 200 MIX_REMOTE 1
42 200 MIX_REMOTE 0
42 200 MIX_Z_POSITION 0
42 200 PID_ATT_AWU 0.3
42 200 PID_ATT_D 10
42 200 PID_ATT_I 10
42 200 PID_ATT_P 40
42 200 PID_ATT_I 20
42 200 PID_ATT_LIM 100
42 200 PID_ATT_P 55
42 200 PID_POS_AWU 5
42 200 PID_POS_D 2
42 200 PID_POS_I 0.25
42 200 PID_POS_LIM 0.2
42 200 PID_POS_P 1.7
42 200 PID_POS_Z_AWU 3
42 200 PID_POS_Z_D 0.2
@ -44,16 +46,18 @@ @@ -44,16 +46,18 @@
42 200 PID_YAWPOS_AWU 1
42 200 PID_YAWPOS_D 1
42 200 PID_YAWPOS_I 0.1
42 200 PID_YAWPOS_LIM 2
42 200 PID_YAWPOS_P 5
42 200 PID_YAWSPEED_D 0
42 200 PID_YAWSPEED_I 10
42 200 PID_YAWSPEED_P 30
42 200 PID_YAWSPEED_I 5
42 200 PID_YAWSPEED_P 15
42 200 PID_YAWSPE_AWU 1
42 200 PID_YAWSPE_LIM 50
42 200 POS_SP_ACCEPT 1
42 200 POS_SP_X 1.75
42 200 POS_SP_Y 0.5
42 200 POS_SP_X 1.1
42 200 POS_SP_Y 1.1
42 200 POS_SP_YAW 0
42 200 POS_SP_Z -0.7
42 200 POS_SP_Z -0.8
42 200 POS_TIMEOUT 1e+06
42 200 RC_NICK_CHAN 1
42 200 RC_ROLL_CHAN 2

BIN
patterns/0.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
patterns/1.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
patterns/2.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
patterns/3.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
patterns/4.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
patterns/5.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
patterns/6.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
patterns/7.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
patterns/8.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
patterns/9.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
patterns/a.bmp

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

After

Width:  |  Height:  |  Size: 69 KiB

BIN
patterns/b.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
patterns/c.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
patterns/d.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
patterns/e.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
patterns/f.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
patterns/g.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
patterns/h.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
patterns/i.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
patterns/j.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
patterns/k.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
patterns/l.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
patterns/m.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
patterns/n.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
patterns/o.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
patterns/p.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
patterns/q.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
patterns/r.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
patterns/s.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
patterns/t.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
patterns/u.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
patterns/v.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
patterns/w.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
patterns/x.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
patterns/y.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
patterns/z.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

8
src/uas/PxQuadMAV.cc

@ -49,9 +49,11 @@ void PxQuadMAV::receiveMessage(LinkInterface* link, mavlink_message_t message) @@ -49,9 +49,11 @@ void PxQuadMAV::receiveMessage(LinkInterface* link, mavlink_message_t message)
b.resize(256);
mavlink_msg_pattern_detected_get_file(&message, (int8_t*)b.data());
b.append('\0');
QString path = QString(b);
emit detectionReceived(uasId, path, 0, 0, 0, 0, 0, 0, 0, 0, mavlink_msg_pattern_detected_get_confidence(&message), detected.detected);
emit letterDetected(uasId, path, detected.confidence, detected.detected);
QString name = QString(b);
if (detected.type == 0)
emit patternDetected(uasId, name, detected.confidence, detected.detected);
else if (detected.type == 1)
emit letterDetected(uasId, name, detected.confidence, detected.detected);
}
break;
case MAVLINK_MSG_ID_WATCHDOG_HEARTBEAT:

2
src/uas/UASInterface.h

@ -290,7 +290,7 @@ signals: @@ -290,7 +290,7 @@ signals:
void waypointReached(UASInterface* uas, int id);
void autoModeChanged(bool autoMode);
void parameterChanged(int uas, int component, QString parameterName, float value);
void detectionReceived(int uasId, QString patternPath, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, double confidence, bool detected);
void patternDetected(int uasId, QString patternPath, float confidence, bool detected);
void letterDetected(int uasId, QString letter, float confidence, bool detected);
/**
* @brief The battery status has been updated

154
src/ui/ObjectDetectionView.cc

@ -26,6 +26,7 @@ This file is part of the PIXHAWK project @@ -26,6 +26,7 @@ This file is part of the PIXHAWK project
* @brief List of detected objects
* @author Benjamin Knecht <mavteam@student.ethz.ch>
* @author Lorenz Meier <mavteam@student.ethz.ch>
* @author Fabian Landau <mavteam@student.ethz.ch>
*
*/
@ -37,13 +38,15 @@ This file is part of the PIXHAWK project @@ -37,13 +38,15 @@ This file is part of the PIXHAWK project
#include "GAudioOutput.h"
#include <QDebug>
#include <QMap>
#include "MG.h"
ObjectDetectionView::ObjectDetectionView(QString folder, QWidget *parent) :
QWidget(parent),
patternList(),
patternCount(),
letterList(),
letterTimer(),
uas(NULL),
patternFolder(folder),
separator(" "),
@ -51,6 +54,8 @@ ObjectDetectionView::ObjectDetectionView(QString folder, QWidget *parent) : @@ -51,6 +54,8 @@ ObjectDetectionView::ObjectDetectionView(QString folder, QWidget *parent) :
{
m_ui->setupUi(this);
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setUAS(UASInterface*)));
letterTimer.start(1000);
connect(&letterTimer, SIGNAL(timeout()), this, SLOT(decreaseLetterTime()));
}
ObjectDetectionView::~ObjectDetectionView()
@ -74,91 +79,108 @@ void ObjectDetectionView::setUAS(UASInterface* uas) @@ -74,91 +79,108 @@ void ObjectDetectionView::setUAS(UASInterface* uas)
//if (this->uas == NULL && uas != NULL)
//{
this->uas = uas;
connect(uas, SIGNAL(detectionReceived(int, QString, int, int, int, int, int, int, int, int, double, bool)), this, SLOT(newDetection(int,QString,int,int,int,int,int,int,int,int,double,bool)));
connect(uas, SIGNAL(letterDetected(int,QString,float,bool)), this, SLOT(newLetter(int,QString,float,bool)));
connect(uas, SIGNAL(patternDetected(int, QString, float, bool)), this, SLOT(newPattern(int, QString, float, bool)));
connect(uas, SIGNAL(letterDetected(int, QString, float, bool)), this, SLOT(newLetter(int, QString, float, bool)));
//}
}
void ObjectDetectionView::newLetter(int uasId, QString letter, float confidence, bool detected)
void ObjectDetectionView::newPattern(int uasId, QString patternPath, float confidence, bool detected)
{
// Emit audio message on detection
if (detected) GAudioOutput::instance()->say("System " + QString::number(uasId) + " detected letter " + letter);
m_ui->nameLabel->setText(letter);
m_ui->imageLabel->setText(letter);
}
if (detected)
{
if (!patternList.contains(patternPath))
{
// Emit audio message on detection
if (detected) GAudioOutput::instance()->say("System " + QString::number(uasId) + " detected pattern " + QString(patternPath.split("/").last()).split(".").first());
void ObjectDetectionView::newDetection(int uasId, QString patternPath, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, double confidence, bool detected)
{
Q_UNUSED(x1);
Q_UNUSED(y1);
Q_UNUSED(x2);
Q_UNUSED(y2);
Q_UNUSED(x3);
Q_UNUSED(y3);
Q_UNUSED(x4);
Q_UNUSED(y4);
newDetection(uasId, patternPath, confidence, detected);
patternList.insert(patternPath, Pattern(patternPath, confidence));
}
else
{
Pattern pattern = patternList.value(patternPath);
if (confidence > pattern.confidence)
pattern.confidence = confidence;
++pattern.count;
patternList.insert(patternPath, pattern);
}
// set list items
QList<Pattern> templist;
foreach (Pattern pattern, patternList)
templist.push_back(pattern);
qSort(templist);
m_ui->listWidget->clear();
foreach (Pattern pattern, templist)
m_ui->listWidget->addItem(pattern.name + separator + "(" + QString::number(pattern.count) + ")" + separator + QString::number(pattern.confidence));
// load image
QString filePath = MG::DIR::getSupportFilesDirectory() + "/" + patternFolder + "/" + patternPath.split("/").last();
QPixmap image = QPixmap(filePath);
if (image.width() > image.height())
image = image.scaledToWidth(m_ui->imageLabel->width());
else
image = image.scaledToHeight(m_ui->imageLabel->height());
m_ui->imageLabel->setPixmap(image);
// set textlabel
QString patternName = patternPath.split("/").last(); // Remove preceding folder names
patternName = patternName.split(".").first(); // Remove file ending
m_ui->nameLabel->setText("Pattern: " + patternName);
}
}
void ObjectDetectionView::newDetection(int uasId, QString patternPath, float confidence, bool detected)
void ObjectDetectionView::newLetter(int uasId, QString letter, float confidence, bool detected)
{
Q_UNUSED(confidence);
if (detected)
{
if (patternList.contains(patternPath))
if (!letterList.contains(letter))
{
//qDebug() << "REDETECTED";
QList<QAction*> actions = m_ui->listWidget->actions();
// Find action and update it
foreach (QAction* act, actions)
{
qDebug() << "ACTION";
if (act->text().trimmed().split(separator).first() == patternPath)
{
int count = patternCount.value(patternPath);
patternCount.insert(patternPath, count);
act->setText(patternPath + separator + "(#" + QString::number(count) + ")" + separator + QString::number(confidence));
}
}
QString filePath = MG::DIR::getSupportFilesDirectory() + "/" + patternFolder + "/" + patternPath.split("/").last();
qDebug() << "Loading:" << filePath;
QPixmap image = QPixmap(filePath);
image = image.scaledToWidth(m_ui->imageLabel->width());
m_ui->imageLabel->setPixmap(image);
QString patternName = patternPath.split("//").last(); // Remove preceding folder names
patternName = patternName.split(".").first(); // Remove file ending
// Emit audio message on detection
if (detected) GAudioOutput::instance()->say("System " + QString::number(uasId) + " detected letter " + letter);
// Set name and label
m_ui->nameLabel->setText(patternName);
letterList.insert(letter, Pattern(letter, 0));
}
else
{
// Emit audio message on detection
if (detected) GAudioOutput::instance()->say("System " + QString::number(uasId) + " detected pattern " + QString(patternPath.split("/").last()).split(".").first());
Pattern pattern = letterList.value(letter);
pattern.confidence = 0;
++pattern.count;
letterList.insert(letter, pattern);
}
patternList.insert(patternPath, confidence);
patternCount.insert(patternPath, 1);
updateLetterList();
QString filePath = MG::DIR::getSupportFilesDirectory() + "/" + patternFolder + "/" + patternPath.split("/").last();
// display letter
m_ui->letterLabel->setText(letter);
qDebug() << "Loading:" << filePath;
QPixmap image = QPixmap(filePath);
QIcon ico(image);
QAction* act = new QAction(ico, patternPath + separator + "(#" + QString::number(1) + ")" + separator + QString::number(confidence), this);
connect(act, SIGNAL(triggered()), this, SLOT(takeAction()));
//m_ui->listWidget->addAction(act);
m_ui->listWidget->addItem(patternPath + separator + "(#" + QString::number(1) + ")" + separator + QString::number(confidence));
//m_ui->listWidget->addItem(patternPath + " " + QString::number(confidence));
image = image.scaledToWidth(m_ui->imageLabel->width());
m_ui->imageLabel->setPixmap(image);
QString patternName = patternPath.split("//").last(); // Remove preceding folder names
patternName = patternName.split(".").first(); // Remove file ending
// set textlabel
m_ui->nameLabel->setText("Letter: " + letter);
}
}
// Set name and label
m_ui->nameLabel->setText(patternName);
qDebug() << "IMAGE SET" << patternFolder + "/" + patternPath;
}
void ObjectDetectionView::decreaseLetterTime()
{
foreach (Pattern pattern, letterList)
{
pattern.confidence -= 1;
letterList.insert(pattern.name, pattern);
}
updateLetterList();
}
void ObjectDetectionView::updateLetterList()
{
// set list items
QList<Pattern> templist;
foreach (Pattern pattern, letterList)
templist.push_back(pattern);
qSort(templist);
m_ui->letterListWidget->clear();
foreach (Pattern pattern, templist)
m_ui->letterListWidget->addItem(pattern.name + separator + "(" + QString::number(pattern.count) + ")" + separator + QString::number(pattern.confidence));
}
void ObjectDetectionView::takeAction()

30
src/ui/ObjectDetectionView.h

@ -26,6 +26,7 @@ This file is part of the PIXHAWK project @@ -26,6 +26,7 @@ This file is part of the PIXHAWK project
* @brief List of detected objects
* @author Benjamin Knecht <mavteam@student.ethz.ch>
* @author Lorenz Meier <mavteam@student.ethz.ch>
* @author Fabian Landau <mavteam@student.ethz.ch>
*
*/
@ -47,8 +48,21 @@ namespace Ui { @@ -47,8 +48,21 @@ namespace Ui {
class ObjectDetectionView : public QWidget {
Q_OBJECT
Q_DISABLE_COPY(ObjectDetectionView)
public:
explicit ObjectDetectionView(QString folder="patterns", QWidget *parent = 0);
struct Pattern
{
Pattern() : name(QString()), confidence(0.0f), count(0) {}
Pattern(QString name, float confidence) : name(name), confidence(confidence), count(1) {}
bool operator<(const Pattern& other) const { return this->confidence > other.confidence; } // this comparison is intentionally wrong to sort the QList from highest confidence to lowest
QString name;
float confidence;
unsigned int count;
};
public:
explicit ObjectDetectionView(QString folder="patterns", QWidget *parent = 0);
virtual ~ObjectDetectionView();
/** @brief Resize widget contents */
@ -58,17 +72,19 @@ public slots: @@ -58,17 +72,19 @@ public slots:
/** @brief Set the UAS this view is currently associated to */
void setUAS(UASInterface* uas);
/** @brief Report new detection */
void newDetection(int uasId, QString patternPath, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, double confidence, bool detected);
void newPattern(int uasId, QString patternPath, float confidence, bool detected);
void newLetter(int uasId, QString letter, float confidence, bool detected);
void newDetection(int uasId, QString patternPath, float confidence, bool detected);
void decreaseLetterTime();
void updateLetterList();
/** @brief Accept an internal action, update name and preview image label */
void takeAction();
protected:
virtual void changeEvent(QEvent *e);
QMap<QString, double> patternList; ///< The detected patterns
QMap<QString, unsigned int> patternCount; ///< Number of detections per pattern
UASInterface* uas; ///< The monitored UAS
QMap<QString, Pattern> patternList; ///< The detected patterns with their confidence and detection count
QMap<QString, Pattern> letterList; ///< The detected letters with their confidence and detection count
QTimer letterTimer; ///< A timer to "forget" old letters
UASInterface* uas; ///< The monitored UAS
QString patternFolder; ///< The base folder where pattern images are stored in
const QString separator;

45
src/ui/ObjectDetectionView.ui

@ -7,17 +7,20 @@ @@ -7,17 +7,20 @@
<x>0</x>
<y>0</y>
<width>246</width>
<height>396</height>
<height>403</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout" columnstretch="10,10" columnminimumwidth="0,0">
<item row="0" column="0" colspan="2">
<widget class="QListWidget" name="listWidget"/>
</item>
<item row="1" column="0">
<item row="1" column="0" colspan="2">
<widget class="QListWidget" name="letterListWidget"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="imageLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@ -36,7 +39,39 @@ @@ -36,7 +39,39 @@
</property>
</widget>
</item>
<item row="2" column="0">
<item row="2" column="1">
<widget class="QLabel" name="letterLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>10</horstretch>
<verstretch>10</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>2</width>
<height>2</height>
</size>
</property>
<property name="baseSize">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">font: 72pt;
color: white;</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="nameLabel">
<property name="text">
<string>No objects recognized</string>

9
waypoints-final-pole-racing.txt

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
0 1.60066 0.497923 -0.7 -0.156858 1 1 0.15 2000
1 0.973377 0.691139 -0.7 -0.0664193 1 0 0.15 2000
2 0.646637 1.57225 -0.7 6.26573 1 0 0.15 2000
3 0.659852 2.39951 -0.7 -0.0549587 1 0 0.15 2000
4 1.41441 2.8804 -0.7 -0.0258336 1 0 0.15 2000
5 2.33563 2.90308 -0.7 -0.0621037 1 0 0.15 2000
6 2.76383 2.04368 -0.7 -0.0381553 1 0 0.15 2000
7 2.73091 1.05595 -0.7 -0.0520457 1 0 0.15 2000
8 1.73409 0.599043 0 6.26573 1 0 0.15 2000

20
waypoints_A0_circlev2.txt

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
0 1.75 0.5 -0.7 0 1 1 0.3 10000
1 0.95 0.5 -0.7 0 1 0 0.3 2000
2 0.5 1.5 -0.7 0 1 0 0.3 2000
3 0.5 2.8 -0.7 0 1 0 0.3 2000
4 1.75 2.8 -0.7 0 1 0 0.3 2000
5 2.8 2.8 -0.7 0 1 0 0.3 2000
6 2.8 1.75 -0.7 0 1 0 0.3 2000
7 2.8 0.7 -0.7 0 1 0 0.3 2000
8 1.75 0.5 -0.7 0 1 0 0.3 2000
9 1.75 0.5 0 0 0 0 0.3 2000
0 1.75 0.5 -0.7 0 1 1 0.15 10000
1 0.95 0.5 -0.7 0 1 0 0.15 2000
2 0.5 1.5 -0.7 0 1 0 0.15 2000
3 0.5 2.8 -0.7 0 1 0 0.15 2000
4 1.75 2.8 -0.7 0 1 0 0.15 2000
5 2.8 2.8 -0.7 0 1 0 0.15 2000
6 2.8 1.75 -0.7 0 1 0 0.15 2000
7 2.8 0.7 -0.7 0 1 0 0.15 2000
8 1.75 0.5 -0.7 0 1 0 0.15 2000
9 1.75 0.5 0 0 0 0 0.15 2000

Loading…
Cancel
Save