Платы CopterControl, CC3D, LibrePilot, Revolution от OpenPilot
но при старте CC всегда в Manual.
5 входных каналов - минимальное условие для запуска модуля ManualControl, а значит и всех от него зависимых.
однако стабилизация камеры работает всегда независимо от “есть сигнал/нет сигнала”, эту фишку я советовал SkyWorker-у для юзанья CC вместе с Ikarus-ом, и вроде как у него все получилось. попытайте его насчет способа подключения.
там эти опенпайлоты сидят в какой-то комнатке и все вместе дружно рассовывают все по пакетикам и коробочкам?
этим занимался один человек, dankers. в штаты отсылал проверенные платы без прошивки (из-за каких-то дурацких законов), в остальные страны с последней “официальной” прошивкой, по особым просьбам прошивал последние на тот момент. магазины точно так же получали платы только через него.
В случае обнаружения бага, если придется переделывать дизайн платы, думаю для этого.
Багу в дизайне уже давно выловили, так как этот дизайн они тестируют уже месяца 2 а может и больше
этим занимался один человек, dankers. в штаты отсылал проверенные платы без прошивки (из-за каких-то дурацких законов), в остальные страны с последней “официальной” прошивкой, по особым просьбам прошивал последние на тот момент. магазины точно так же получали платы только через него.
А ну теперь все понятно. Я то думал у них на широкую ногу там все поставлено…
Вот интересно, если эта плата комерчески интересна, то почему сейчас её нет у Китайских продавцов?
На таобао видел полную копию судя по фоткам, но там все на китайском и нифига не понятно что именно они хотят. Мне думается в китае на внутреннем рынке есть.
В очередной раз образовалось немножко свободного времени, повторил издевательства над гексой.
Прошивка: fw_coptercontrol-20120201-213a915f
Сбросил все настройки,
выставил горизонт, откалибровал регуляторы
файл с настройками в uav_data.zip
При запуске коптер старается убежать
Увеличил Ki (на inner и outer loop) до 0,002
В поведении коптера ничего не изменилось, тогда решился на отчаянные меры, поставил его перпендикулярно земле, и дал армингу.
Шестикрылое животное, нехотя, почихивая но начала взлетать практически ровно. Я был в шоке от своего открытия, затем я попытался повторить тоже самое но уже на камеру, и у меня практически получилось,
а теперь вопрос, а что это было?
имхо стандартное поведение на малом газу, надо дать ему взлететь, поддайте газу
а теперь вопрос, а что это было?
Да нормально все, СС главное оторвать от земли подальше, а там он сам со стабилизацией справиться, и будет вести себя отлично.
Смелее газу на отрыв, при этом стиками выправить положение, поднять на 1-1,5 метра и редкими движениями стиков просто подправлять положение аппарата.
Да, и для испытаний гексы помещение маловато, лучше убрать эти громоздкие “треники” и смело идти на улицу, на какую-нибудь полянку побольше. Результат не заставит себя ждать - сами удивитесь как СС может летать.
Незнаю, у меня впринципе трёшка, и псевдоCC на муратовских гирах, но при взлёте (медленном) только по курсу провернутся желает, а в стороны не тягается…
5 входных каналов - минимальное условие для запуска модуля ManualControl, а значит и всех от него зависимых.
однако стабилизация камеры работает всегда независимо от “есть сигнал/нет сигнала”, эту фишку я советовал SkyWorker-у для юзанья CC вместе с Ikarus-ом, и вроде как у него все получилось. попытайте его насчет способа подключения.
Короче говоря - сделал с помощью трюка вход на выход. В первый раз не получилось из-за того что в Input были разные каналы (6й вход на 6й выход подключен). Когда в Input установил ролл, питч, газ, руддер + flightmode - пока не назначил на все эти моменты канал - армед не включался. Вплоть до flightmode.
Теперь flightmode успешно срабатывает и на старте CC в Stabilized.
Помог A*Morale …openpilot.org/…/10978-how-to-start-cc-in-flightmo… уточнением “- configure all the input as PWM/Channel 6.”
Незнаю, у меня впринципе трёшка, и псевдоCC на муратовских гирах, но при взлёте (медленном) только по курсу провернутся желает, а в стороны не тягается…
Подобное я заметил в случае если на трёхе пропы одного вращения. Один проп ставим на обратное вращение и трёха себя ведёт стабильно без неконтролируемых поворотов.
этим занимался один человек, dankers.
Абсолютли! Данкерс ЛИЧНО проверял каждую плату! Все потому что гиры шли партиями с браком, потому Отец проекта сам все тестил чтобы никому не досталась плата с мертвой гирой или акселем. За что ему спасибо огромное.
кроме заказа плат, их прошивки и проверки, рассылки по всему миру и прочей фигни у людей еще и личная жизнь есть
Вот вот. Проект то не коммерческий, не забывайте 😉
с гирами вообще какаято странная картина … инвенсенс их делает уже не первый год … соответственно их покупают и ставят в свои изделия многие разработчики … если бы у всех были такие проблемы как у опенпилотов , то инвенсенс давно-бы разорился … притом это одни из самых древних , простых , аналоговых гир …
даже после тщательного тестирования , у многих пользователей современем возникали проблемы с гирами … притом восновном с ISZ-500 … я их каждый раз заказываю чуть больше чем IDG-500 и их забирают для замены в СС … нужно будет попробовать купить еще ISZ-505 и попробовать впаять вместо 500й , они вроде как на замену сделаны …
лично мне еще ниразу не попаласЪ бракованная 500 гира , да и купившие у меня пока не жаловалисЪ … может сборщику СС просто попаласЪ неудачная партия с браком … ХЗ …
нужно будет попробовать купить еще ISZ-505 и попробовать впаять вместо 500й
Если будет положительный опыт - отпишитесь плиз! Хочется гиры получше на СС, если есть им прямая замена - было бы отлично…
Помогите с кодом. Собрал прошивку на линуксе.
Теперь хочу добавить в нее термокомпенсацию.
--- a/flight/Modules/Attitude/attitude.c
+++ b/flight/Modules/Attitude/attitude.c
@@ -215,11 +215,18 @@ static void updateSensors(AttitudeRawData * attitudeRaw)
return;
}
+ // use temp sensor
+ float compensation = (gyro[0] - GYRO_NEUTRAL) * 0.1;
+ // write a value to monitor in the GSC
+ attitudeRaw->magnetometers[0] = compensation * 100;
// First sample is temperature
- attitudeRaw->gyros[ATTITUDERAW_GYROS_X] = -(gyro[1] - GYRO_NEUTRAL) * gyroGain;
- attitudeRaw->gyros[ATTITUDERAW_GYROS_Y] = (gyro[2] - GYRO_NEUTRAL) * gyroGain;
- attitudeRaw->gyros[ATTITUDERAW_GYROS_Z] = -(gyro[3] - GYRO_NEUTRAL) * gyroGain;
+ float tc1 = 1.0;
+ float tc2 = 0.5;
+ float tc3 = 1.0;
+ attitudeRaw->gyros[0] = -(gyro[1] - GYRO_NEUTRAL - compensation * tc1) * gyroGain;
+ attitudeRaw->gyros[1] = (gyro[2] - GYRO_NEUTRAL - compensation * tc2) * gyroGain;
+ attitudeRaw->gyros[2] = -(gyro[3] - GYRO_NEUTRAL - compensation * tc3) * gyroGain;
int32_t x = 0;
int32_t y = 0;
Но мой синтаксис отличается от Dmitry(HikeR)
Вот мой, я закоментил гиры и добавил термокопенсацию ручками. Ссори я ламер в программировании.
/**
* Get an update from the sensors
* @param[in] attitudeRaw Populate the UAVO instead of saving right here
* @return 0 if successfull, -1 if not
*/
static int32_t updateSensors(AccelsData * accels, GyrosData * gyros)
{
struct pios_adxl345_data accel_data;
float gyro[4];
// Only wait the time for two nominal updates before setting an alarm
if(xQueueReceive(gyro_queue, (void * const) gyro, UPDATE_RATE * 2) == errQUEUE_EMPTY) {
AlarmsSet(SYSTEMALARMS_ALARM_ATTITUDE, SYSTEMALARMS_ALARM_ERROR);
return -1;
}
// Do not read raw sensor data in simulation mode
if (GyrosReadOnly() || AccelsReadOnly())
return 0;
// No accel data available
if(PIOS_ADXL345_FifoElements() == 0)
return -1;
// First sample is temperature
//gyros->x = -(gyro[1] - GYRO_NEUTRAL) * gyroGain;
//gyros->y = (gyro[2] - GYRO_NEUTRAL) * gyroGain;
//gyros->z = -(gyro[3] - GYRO_NEUTRAL) * gyroGain;
static void updateSensors(AttitudeRawData * attitudeRaw)
return;
}
// use temp sensor
float compensation = (gyro[0] - GYRO_NEUTRAL) * 0.1;
// write a value to monitor in the GSC
attitudeRaw->magnetometers[0] = compensation * 100;
// First sample is temperature
float tc1 = 1.0;
float tc2 = 0.5;
float tc3 = 1.0;
attitudeRaw->gyros[0] = -(gyro[1] - GYRO_NEUTRAL - compensation * tc1) * gyroGain;
attitudeRaw->gyros[1] = (gyro[2] - GYRO_NEUTRAL - compensation * tc2) * gyroGain;
attitudeRaw->gyros[2] = -(gyro[3] - GYRO_NEUTRAL - compensation * tc3) * gyroGain;
int32_t x = 0;
int32_t y = 0;
int32_t z = 0;
uint8_t i = 0;
uint8_t samples_remaining;
Теперь прошивка не собирается.
А где скачать оригинал прошивки (закомпиленый вариант термокомпенсации)? Точнее ткните в пост/ссылку, плиз 😃.
А где скачать оригинал прошивки (закомпиленый вариант термокомпенсации)? Точнее ткните в пост/ссылку, плиз 😃.
Теперь прошивка не собирается.
в файле патча знак “минус” в начале строки означает удаленную строчку, знак “плюс” — добавленную. у вас же какой-то ужас получился, это раз.
в текущей прошивке значения акселя, гироскопа и магнетометра из одного объекта attitudeRaw разнесли по трем отдельным, это два. причем магнетометр в CopterControl-е теперь вобще не используется (экономия памяти), поэтому оперативно следить за значением компенсации сходу не получится.
просто “на посмотреть” можно сделать так:
вместо этого кусочка
// First sample is temperature
gyros->x = -(gyro[1] - GYRO_NEUTRAL) * gyroGain;
gyros->y = (gyro[2] - GYRO_NEUTRAL) * gyroGain;
gyros->z = -(gyro[3] - GYRO_NEUTRAL) * gyroGain;
вставить такой
// First sample is temperature
float compensation = (gyro[0] - GYRO_NEUTRAL) * 0.1;
float tc1 = 1.0;
float tc2 = 0.5;
float tc3 = 1.0;
attitudeRaw->gyros[0] = -(gyro[1] - GYRO_NEUTRAL - compensation * tc1) * gyroGain;
attitudeRaw->gyros[1] = (gyro[2] - GYRO_NEUTRAL - compensation * tc2) * gyroGain;
attitudeRaw->gyros[2] = -(gyro[3] - GYRO_NEUTRAL - compensation * tc3) * gyroGain;
и ничего больше не менять (кроме подбора коэффициентов tc(1,2,3) и пересборки/перезаливки).
Спасибо Дмитрий, попробую сегодня.
Не получаеться
стандартный конфиг, вывод
root@debian:/home/pnm/1/OpenPilot# make coptercontrolmake[1]: Nothing to be done for `first'.
- OpenPilot UAVObject Generator -
Done: processed 59 XML files and generated 59 objects with no ID collisions. Total size of the data fields is 2016 bytes.
generating flight code
FWINFO build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
root@debian:/home/pnm/1/OpenPilot#
Изменил,
// First sample is temperature
// gyros->x = -(gyro[1] - GYRO_NEUTRAL) * gyroGain;
// gyros->y = (gyro[2] - GYRO_NEUTRAL) * gyroGain;
// gyros->z = -(gyro[3] - GYRO_NEUTRAL) * gyroGain;
float compensation = (gyro[0] - GYRO_NEUTRAL) * 0.1;
float tc1 = 1.0;
float tc2 = 0.5;
float tc3 = 1.0;
attitudeRaw->gyros[0] = -(gyro[1] - GYRO_NEUTRAL - compensation * tc1) * gyroGain;
attitudeRaw->gyros[1] = (gyro[2] - GYRO_NEUTRAL - compensation * tc2) * gyroGain;
attitudeRaw->gyros[2] = -(gyro[3] - GYRO_NEUTRAL - compensation * tc3) * gyroGain;
int32_t x = 0;
int32_t y = 0;
вывод
root@debian:/home/pnm/1/OpenPilot# make coptercontrolmake[1]: Nothing to be done for `first'.
- OpenPilot UAVObject Generator -
Done: processed 59 XML files and generated 59 objects with no ID collisions. Total size of the data fields is 2016 bytes.
generating flight code
CC flight/Modules/Attitude/attitude.c
../Modules/Attitude/attitude.c: In function 'updateSensors':
../Modules/Attitude/attitude.c:291:2: error: 'attitudeRaw' undeclared (first use in this function)
../Modules/Attitude/attitude.c:291:2: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [/home/pnm/1/OpenPilot/build/fw_coptercontrol/attitude.o] Error 1
make: *** [fw_coptercontrol_opfw] Error 2
root@debian:/home/pnm/1/OpenPilot#
Вот так прокатило
gyros->x = -(gyro[1] - GYRO_NEUTRAL - compensation * tc1) * gyroGain;
gyros->y = (gyro[2] - GYRO_NEUTRAL - compensation * tc2) * gyroGain;
gyros->z = -(gyro[3] - GYRO_NEUTRAL - compensation * tc3) * gyroGain;
Короче залил я прошивку))) Снес bootloader, rescue не видит плату. Без JTAG не восстановить bootloader?
можно восстановить через компорт …
нужен или аппаратный порт с переходником ±12=>3.3 вольта или USB=>COM желательно на FT232 или CP210х … на всяких PL23хх ака шнурки от моболок успех негарантирован …
wiki.openpilot.org/…/Firmware+Recovery+on+Windows
можно восстановить через компорт …
нужен или аппаратный порт с переходником ±12=>3.3 вольта или USB=>COM желательно на FT232 или CP210х … на всяких PL23хх ака шнурки от моболок успех негарантирован …
wiki.openpilot.org/…/Firmware+Recovery+on+Windows
Есть PL23, попробую на выходных.
error: ‘attitudeRaw’ undeclared
мой косяк, сам ведь и писал что этого объекта больше нет.
Снес bootloader
зачем???
зачем???
После загрузки прошивки, плата не загрузилась.