Friday, October 10, 2014

Compiling ical calendar manager on Ubuntu 14.04 and tcl-tk 8.6


I like to use ical calendar manager by Sanjay Ghemawat. It is an old program, maintained and loved by a small group of users.

EDIT: See below for Ubuntu 18.04.

After upgrading to Ubuntu 14.04, I wanted to install ical. The version at the time of writing is 3.0.2, from: https://launchpad.net/ical-tcl. Unfortunately it does not compile for a stock 14.04, there are a few problems:

1. It does not recognize tcl-tk 8.6 which comes with Ubuntu 14.04. Edit "configure.ac" so that it does:
Find the following lines and add version 8.6 so it looks like this:
AC_CHECKING(Tcl/Tk installation)
#legal_tk_versions="8.5 8.4 8.3 8.2 8.0 4.9 4.8 4.7 4.6 4.5 4.4 4.3 4.2 4.1"
#legal_tcl_versions="8.5 8.4 8.3 8.2 8.0 7.9 7.8 7.7 7.6 7.5"
legal_tk_versions="8.6 8.5 8.4 8.3 8.2 8.0 4.9 4.8 4.7 4.6 4.5 4.4 4.3 4.2 4.1"
legal_tcl_versions="8.6 8.5 8.4 8.3 8.2 8.0 7.9 7.8 7.7 7.6 7.5"

2. It fails to find some libraries and headers. This is a matter of installing them or adding symlinks, notably: tcl8.6-dev and tk 8.6-dev.

3. Extra arguments are required when running the "configure" script (not all are necessary, but it does not hurt):
./configure --with-tclsh=/usr/bin/tclsh8.6 --with-tclconfig=/usr/lib/tcl8.6 --with-tkconfig=/usr/lib/tk8.6  CXXFLAGS='-g -O2 -I/usr/include/tcl8.6'

4. It cannot find libtk8.6.so and its tcl counterpart. They are not where ical expects them to be. This can be hacked with some symbolic links (ugly solution, but it works):
ln -s /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk8.6.so
ln -s /usr/lib/x86_64-linux-gnu/libtcl8.6.so /usr/lib/libtcl8.6.so

 5. Finally, make fails with the error:  'Tcl_Interp' has no member named 'result'
Some searching came up with the solution: http://askubuntu.com/questions/372480/tcl-error-while-installing-wordnet. Essentially, it is necessary to modify the "tcl.h" file (you must copy this file over from: /usr/include/tcl8.6/tcl.h to the ical source directory):

Just under the lines:
#ifndef _TCL
#define _TCL

add:
#define USE_INTERP_RESULT 1

Ubuntu 18.04 new error(!): It is possible to install TCL/TK 8.6 for Ubuntu 18.04. You need to do the same fixes as above. Additionally, there is a new error:

In file included from main.C:27:0:
bitmaps/left.xbm:7:50: error: narrowing conversion of ‘128’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]


Go to the directory "bitmaps"
There are bitmap files there. Unfortunately, the bitmaps are all defined as
"static char". This prevents them to have values greater than 127 (which would map to negative values).

Solution: Edit each file and change the lines (around line 3) that look like:
 static char ical_bits[] = {
to:
static unsigned char ical_bits[] = {
Do the same change to each .xbm file in the directory.


This finally fixed all the errors and I could start using ical again. Hope this helps somebody.

PS: After the modifications for Ubuntu 18.04, I also noticed that there is a new version of ical; 3.3, which has fixed (probably all of) the errors above.

Wednesday, April 9, 2014

Ev Yapımı Mini Dörtrotor Yenilikler

Ev Yapımı Mini Dörtrotor Yenilikler

Daha önce yaptığım mini dörtrotor hakkında bir yazı yazmıştım. Bu dörtrotourn iki önemli problemi vardı. Birincisi kaldırma kuvvetinin az oluşu ikincisi de uçuş süresinin kısa oluşu.

Kaldırma kuvvetinin az olması konusunda pervanelerden hoşnut olmadığımı yazmıştım ama uygun pervane de bulamamıştım. Kullandığım pervaneler 5x4.5 yani fazla yüksek hatveliydi. Sonunda buradaki pervanelerden aldım. Her ne kadar yorumlar pervanelerin kalitesiz olduğunu ve balanslarının da kötü olduğunu söylese de elimde varolanlar da pek iyi değildi. Gelen pervaneler aslında oldukça iyi çıktı hem de çok ucuz. Balans yapmadan doğrudan kullanabildim. Birdenbire dörtrotorun uçuşu çok daha güçlü ve kararlı hale geldi.
Yeni pervaneleriyle dörtrotor.
 Ancak yeni pervanelerin deliği motor şaftlarından biraz daha küçük. Bunları zorlayarak motor şaftına geçirebilirdim belki ama kırılma ve uçuşta çıkma riski olduğundan mevcut motor adaptörüne uydurmaya çalıştım. Adaptörün ortasındaki deliğe bir kürdan taktım. Pervanenin deliğine göre kürdanı yonttum. Pervaneyi geçirdim ve lastikle sabitledim. Öncelikle uygun boyda 'o-ring' aradım ama bulamadım. Sonra uygun boyda paket lastiği aradım ama onu da bulamadım. Normal lastikler çok uzun ve kat kat yapınca sığmıyor. Sonunda bir muayene eldiveninin parmaklarını enine keserek görünen mavi lastik halkaları elde ettim. Bunlardan her pervaneye 3-4 tane koyarak uygun bir şekilde tutturabildim. Bir sorun ihtimali, motorların denge sağlamak için anlık hızlanma ve yavaşlamalarına cevap veremeyip dengenin bozulmasına neden olma ihtimalleriydi ancak çok dengeli bir uçuş verdiler. Arıza yoksa tamir etme kuralına göre o günden sonra dokunmadım, sadece arada kontrol ediyorum. Günün birinde sorun yaşarsam, bulduğum kaliteli kauçuk lastikleri takacağım.

Sıra ikinci sorunda. Kullandığım 900mAh 2S batarya sadece 3-4 dakikalık uçuş süresi verebiliyor ancak şarj ettiğimde bunun en fazla 300mAh kadarı doluyor ve uçuşun sonuna doğru dörtrotor denge sağlamakta güçlük çekiyordu. Bu sorunlar hep motorların yeterince yüksek hıza ulaşamadığına işaret ediyor. Yani çözüm 2S yerine 3S batarya kullanmak. Bir arkadaşıma yurtdışından 800mAh civarında 3S LiPo batarya ısmarladım, o da getirdi sağolsun. Ancak 800mAh bulamayıp 1200mAh getirmiş. Eski batarya 46g ağırlıktayken, yeni batarya 90g ağırlıktaydı. Yani 2 katı. Bu bataryayı kaldırıp kaldırmayacağı biraz şüpheliydi. 

Ancak teraziede deneyince 3S batarya için:
  • 300g uçuş ağırlığı
  • 400g kaldırma kuvveti ve
  • Tam gazda 11A akım ölçtüm.
Bu rakamlar fena görünmüyor. Bir tek sorun uçuşta motorların yüksek akımdan dolayı ısınması olabilirdi. Ancak 7 dakikalık uçuş sonrasında motorlarda ısınma görmedim. Bataryanın da 7 dakika sonunda sadece 580mAh eksilmiş olduğunu gördüm, yani bu dörtrotor 3S batarya ile kendini buldu diyebilirim... 
3S batarya


Son olarak, bu dörtrotorda JR 3810 kumandamın yerine Turnigy 9X kumandayı kullanmak istiyordum. JR kumandanın gaz kolu tırtıklı olduğundan gazı tam istediğim noktada tutamıyorum o nedenle havada durdurmak zor oluyordu. 

Kullandığım Multiwii kontrol bilgisayarının bütün kanalları tek tel üzerinden okuma özelliği olmasına rağmen Turnigy alıcılarında bu özelliği olan ve hafif bir alıcı bulamadım. Bu gerekli bir özellik yoksa her kanal için tek tek Multiwiiye kablo bağlantısı yapmak gerekli. Kullanmak istediğim 6 kanal için buminik maknanın üzerinde büyük bir kablo salatası anlamına geliyor.

Ben de burada yazıldığı gibi bir alıcıyı kendim yapmaya karar verdim. Gereken iki önemli parça var, Arduino Promini ve "XL7105 Wireless Module". İkisi de Dealextreme veya benzeri yerlerde toplam 10 USD civarında bir fiyata satılıyor. Arduıno promini üzerindeki LEDi başka bir bacağa almak için küçük bir ameliyat lazım. Ama yukarıdaki linkteki açıklamaları takip ederek tek tel üzerinden bağlanabilen hafif ve özel bir alıcı yapmak mümkün. Sonuçtan çok memnunum, kumanda son derece güvenilir ve kusursuz çalışıyor. 
Bize yakın seloteyple tutturulmuş minik paket tek telli alıcı.

Ev Yapımı Dört Rotor Yenilikler

Ev Yapımı Dörtrotor Yenilikler

2013'te yaptığım dörtrotor hakkında bilgi vermiş, üzerine nasıl kamera bağladığımı anlatmıştım. Kamera çekimleri gösterdi ki uçuşta fazla yalpa yapıyor ve bu nedenle çekimler seyretmesi zor oluyordu. Bunu düzeltmenin iki yolu var. Birincisi kontrol parametrelerine girip kontrol kazancını yükseltmek (yani PID değerlerini arttırmak). Bu şekilde yalpa azaltılabilse de bunun iki sakıncası var. Birincisi kararsızlığın sınırına daha yaklaştırıyoruz (yani stabilitenin bozulması mümkün). İkincisi de kontrol kazancı arttırılınca aslında motorların hızları daha sık değiştirilip bu nedenle batarya ömrünün azalmasına neden olabiliriz.

Ben de biraz daha zahmetli ancak avantajlı olduğuna inandığım başka bir yöntemi seçtim. 2013 yılının Aralık ayında dörtrotorun kollarını uzattım. Motorlar dörtrotorun ağırlığının ömnemli bir oranını oluşturduğu için de merkez etrafındaki  dönme momentini arttırmış oldum ve bu sayede aynı kontrol kazançları ile daha kararlı bir uçuş elde etmek mümkün oldu. Aşağıdaki resimde uzatılmış kolları ile dörtrotorun yeni fotografları var. Yanındaki Gaui 330S ile karşılaştırabilirsiniz.

Kolları uzatılmış dörtrotor, karşılaştırma için eski Gaui 330s ile brlikte
Yeni halinin kollarının uzunluğu (rotor merkezinden çapraz rotor merkezine)  595mm, eski haliyle 325mm'ydi. Bu şekliyle uçuş yaptığımda yalpalamanın gerçekten azaldığını gördüm. videolar incelendiğide dikey eksen etrafında titreşimler oluşmaya başladığı anlaşılıyor. Yani dümen kanalındaki kazancın azaltılması bile lazım. Yeni kollar eski kollara göre daha ınce alüminyum profilden yapıldı. Eski profiller 10x20mm iken,  yeni profiller 12x12mm. Daha uzun olmasına rağmen kollarda eğilme veya uçuşta titreşim (flutter) görülmedi. Uçuş ağırlığında bir artış olmadı.

Sonuç: Eğer dörtrotorunuzda kontrolu daha kuvvetlendirmek istiyorsanız bunun bir yolu da motor kollarını uzatmak. Böylece hem dörtrotorun dönme momentini arttırıyoruz, hem de motorlarin moment kolunu uzatarak kontrol etkisini arttırmış oluyoruz.