Vijay Kumar: Robots that fly ... and cooperate
介紹四軸的基本運作原理,四個螺旋槳如何做到前進,後退,旋轉,傾斜,展示多台四軸合作,彈奏音樂
利用四軸平衡桿子,接球,打球,透過手勢控制四軸,螺旋槳故障後的四軸該如何飛行。
自動參數調整
直升機學習順序
問題在於 Devo10 搖桿方向的值剛好介於 1100~1900,但是Mission Planner要求解鎖時,方向按鈕值需大於1900。
有二種方法可以解決
a. 透過搖桿的微調按鈕進行微調,
b. 透過搖桿的控制介面調整比例,將比例由 100 改為 101
[模型選單]->[混控器]->[方向]
$ sudo apt-get install mercurial2. 下載程式碼
$ hg clone https://bitbucket.org/PhracturedBlue/deviation3. 編譯程式
$ cd deviation/src4. 執行程式
$ sudo apt-get install g++
$ sudo apt-get install libfltk1.3-dev
$ make TARGET=emu_devo10
$ ./emu_devo10.elf
模擬器畫面如下
需先安裝 xcode command line tool
$ sudo port -v selfupdate
$ sudo xcode-select --install
接著安裝 fltk
$ cd deviation/src
$ sudo port install fltk-devel
$ ../utils/buiild-osx.sh
註:FLTK(Fast Light Toolki,讀做「fulltick")是一個跨平台的C++GUI工具集,用在UNIX/Linux(X11)、微軟Windows和Mac OS X上。
編譯執行檔
$ make TARGET=emu_devo10 LFLAGS="`fltk-config --ldflags`"
編譯時遇到了一些錯誤,主要原因是因為 gcc 與 clang compiler 所允許的語法不同所致,若能改用gcc compiler應該就沒問題了,針對 clang 的解決方式說明如下:
a. builtin function conflict
a.1 錯誤訊息如下:
In file included from target/emu_devo8/channels.c:15:
./common.h:189:8: error: conflicting types for '__builtin___strlcpy_chk'
/usr/include/secure/_string.h:105:3: note: expanded from macro 'strlcpy' __builtin___strlcpy_chk (dest, src, len, __darwin_obsz (dest))
^
./common.h:189:8: note: '__builtin___strlcpy_chk' is a builtin with type
'unsigned long (char *, const char *, unsigned long, unsigned long)'
/usr/include/secure/_string.h:105:3: note: expanded from macro 'strlcpy' __builtin___strlcpy_chk (dest, src, len, __darwin_obsz (dest))
^
1 error generated.a.2 修改方式
修改 src/Makefile,CFLAGS 加入 -fno-builtin
修改 /Users/liaokuohsun/deviation/src/common.h
#ifdef strlcpy
#undef strlcpy // use our own strlcpy()
size_t strlcpy(char* dst, const char* src, size_t bufsize);
#endif
b. Clang 不支援 nested function,需改寫 nested function
_putc(), _putchw(), assign_int()
c. 改寫下列巨集
- OFFSET(s,v)
- OFFSETS(s,v)
- OFFSET_SRC(s,v)
- OFFSET_BUT(s,v)
- OFFSET_COL(s,v)
- OFFSET_FON(s,v)
d. 需要定義 FLTK_ABI_VERSION
修改 /opt/local/include/FL/Enumerations.H,將下列這行程式碼的註解拿掉e. 更改過後的檔案放在此處,列表如下,有需要可以自行下載比較。
//#define FLTK_ABI_VERSION 10303
src/Makefile
src/common.h
src/std.h
src/config/display.c
src/config/model.c
src/target/common/stm32/printf.c
src/target/common/emu/fltk.h
pseudoTCP(1403,0x7fff7cc17310) malloc: *** error for object 0x100103c10:
incorrect checksum for freed object - object was probably modified after being freed.
一般記憶體出錯的可能原因如下
- you are freeing an object twice,
- you are freeing a pointer that was never allocated
- you are writing through an invalid pointer which previously pointed to an object which was already freed
M3 X 0.5 (外徑 = 3mm ,牙距 = 0.5mm)
鑽孔尺寸 = 3mm - 0.5 = 2.5mm
M5 X 0.8
鑽孔尺寸 = 5mm - 0.8 = 4.2mm
1/8"-40T (外徑 = 1/8" = 3.175mm ,每英寸40牙)
鑽孔尺寸 = 3.175mm - 0.635mm = 2.54mm
螺絲攻上面的標示,就可算出應該鑽多大的孔徑
3/8"-16UNC (外徑 = 3/8" ,16UNC = 美國粗牙每英寸16牙)
3/8" = 25.4 * 3 / 8 = 9.525mm
16UNC牙距 = 25.4 / 16 = 1.5875mm
鑽孔尺寸 = 9.525mm - 1.5875mm = 7.9375mm
所以3分螺絲,鑽孔8mm就可以
XMPP與IMPP、PRIM、SIP(SIMPLE)合稱四大IM協議主流,在此4大協定中,XMPP是最靈活的。
Google Talk 使用開放的 XMPP 協議(原名Jabber),VoIP功能使用 XMPP 擴展的Jingle協議,若要開發一個 P2P 的服務,可以直接參考 Google 的 libjingle source code,其URL為 https://code.google.com/p/webrtc/。
size_t x = ...;
printf("%zu\n", x); // prints as unsigned decimal
printf("%zx\n", x); // prints as hex
printf("%zd\n", x); // prints as signed decimal
size_t x = ...;
printf("%Iu\n", x); // prints as unsigned decimal
use %u or %lu
當 APP 發生問題導致Crash,iOS 會將各個 APP 的 Crash Report 統一儲存,路徑為 /private/var/mobile/Library/Logs/CrashReporter/
Step 1. 建立 SQL bookmark, 將準備當變數的欄位寫成 [VARIABLE],如下:
Step 2. 使用 SQL bookmark 進行查詢,
以上述SQL為例 若變數值為 20140514,則 SQL 會變成
SELECT Count(token) FROM `DeviceToken` WHERE 1若變數值為空,則 SQL 會變成
SELECT Count(token) FROM `DeviceToken` WHERE 1 AND `AddDate` >= '20140514'
參考:http://54.199.200.164/phpmyadmin/Documentation.html#faqbookmark
錄音時,其聲音來源可能有以下兩處,
- 麥克風
- 正在播放的音頻資料(可能來自本地端的檔案,或是遠端的音頻資料)
可以分別選擇不同來源進行錄音,也可以將兩種聲音進行 mix
此 class 繼承 RTSPClient class,並且改寫 createNew(),以及新增一個用來記錄stream狀態的 StreamClientState scs,此處須注意的是 createNew() 修改了最後一個參數的值,固定此值 socketNumToServer=-1。
The goals of this document are to define a set of common terminology for describing the behavior of NATs and to produce a set of requirements on a specific set of behaviors for NATs.
ABR (Average Bit Rate)轉好後的檔案的確降低 bitrate,但轉換後的檔案卻多出了 B-frame,如此可能會造成某些串流播放器播放時的困難。
ffmpeg -i input -c:v libx264 -b:v 256k output.mp4
1. 將 app 設定為 FirstResponder
2. 實作 UIResponder class 定義的 remoteControlReceivedWithEvent: 方法
接收對應的 event 並進行處理,以下列舉幾個 event 當作例子
UIEventSubtypeRemoteControlPlay
UIEventSubtypeRemoteControlPause
UIEventSubtypeRemoteControlStop
UIEventSubtypeRemoteControlTogglePlayPause
IEventSubtypeRemoteControlNextTrack
UIEventSubtypeRemoteControlPreviousTrack
3. 透過 MPNowPlayingInfoCenter defaultCenter 設定鎖屏時顯示的資訊
例如:[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo ];
sudo apt-get install ffmpeg
sudo apt-get install vlc