在上一篇文章中,我們建議在本項目中使用Arduino UNO。但是,在使用UNO時我遇到了一個問題:它沒有足夠的SRAM記憶體來進行逆運動學模型正常運行時所需的所有計算。這些計算大多數是用浮點數來完成的。每個數位在使用時將佔用4個位元組的記憶體,是整型的兩倍。雖然看起來不多,但是UNO只有2kB的RAM,其中一些還會被全域變數佔用。如果我們為所有全域變數和其他區域變數保留0.5kB,那麼將剩下1.5kB的可用記憶體,這僅能供384個浮點數佔用。384可能看起來挺多,但是對於1K模型所產生的資料量是不夠的(請閱讀下面的“演算法”部分找到相關原因)。所以我們必須想辦法獲取更大的記憶體。
實現該目的最簡單的辦法是將UNO更改為MEGA。MEGA和UNO是相容的,所以對於原理圖不用進行修改。另外,使用MEGA不僅可以為計算部分獲取四倍多的RAM,還意味著將有八倍以上的快閃記憶體可用於我們的程式存儲。我們很可能不會所有都用到,但是有更大的預留空間總是好的。以下是改進後的Fritzing原理圖,如果您使用的是Arduino MEGA最新版本 (Rev 3),更換的過程很簡單,跟斷開UNO之後連接MEGA的過程一樣。下面示意圖以供參考。
現在,我們來探究一些物理原理、所用到的大量數學知識以及少量代碼。