Skip to main content

Home/ Robotics/ 「單」晶片控制多組 PWMs
York Jong

「單」晶片控制多組 PWMs - 160 views

embedded motor pwm

started by York Jong on 28 May 07
  • York Jong
     
    作者: ykjiang (York) 看板: Robotics
    標題: 「單」晶片控制多組 PWMs
    時間: Sun Dec 10 01:58:02 2006


    有興趣的話,可以參考看看傳統 uC 製造多組 PWM 的方法:
    http://www.robofun.net/forum/viewthread.php?tid=529&extra=page%3D1

    它這個例子是用來控制兩組 dc motor 。

    類似的概念,要控制多組 servo 問題也不大:
    以幾 MHz 的 clock 來產生多個 ms 級的 PWM 控制,不會有太大問題。

    基本概念就是用一個 timer ,在其 ISR 內累計多組 PWM 的
    total cycle 並和 duty cycle 比較後據以切換 GPIO 的 Hi/Low...

    虛擬碼如下:

     
    0: // ...
    1:
    2: void interrupt TimerISR_for_PWM()
    3: {
    4: // ...
    5:
    6: for (i=0; i
    7: if (cycle[i] < DutyCycle[i])
    8: PWM[i] = HI;
    9: else
    10: PWM[i] = LOW;
    11:
    12: ++cycle[i];
    13: cycle[i] %= Period[i];
    14: }
    15: }
    16:
    17: // ...


    ※ 引述《happosai (八方齋)》之銘言:
    > 雖然有打廣告的嫌疑,不過這顆 FPPA 用來做機器人
    > 真的很容易上手,下面是一些範例:
    > http://chamberplus.myweb.hinet.net/fppa_sa4.htm
    > http://chamberplus.myweb.hinet.net/fppa_sa7.htm
    > http://chamberplus.myweb.hinet.net/fppa_sa8.htm
    > 用兩顆CPU就可以控制9組PWM訊號,所以保守估計是
    > 總共可以控制 9 * 4 = 36 組 PWM!除此之外可以
    > 留一兩顆做通訊,這樣就可以用高速 DSP 或是 ARM
    > 做機械視覺,然後控制的部分交給 FPPA,就可以做出很
    > 複雜的機器人了...:)
    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From:203.70.78.126 》──┘
    --
  • York Jong
     
    作者: MasterChang (我愛ASM) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Sun Dec 10 16:21:33 2006

    ※ 引述《ykjiang (York)》之銘言:
    > 相較之下, FPPA 雖不必動用 timer ,但其對 PWM 的 period
    > 要用到「週期計算」的技巧,得用 assmbly 的角度,估算每個
    > instruction 在 run time 要佔用多少 machine cycles 。
    > 換句話說,在無法使用 timer 時, FFPA 這種多處理機的作法
    > ,在實務上就顯得很必要。
    > timer 對 "single" chip 來說,是個很必要的發明,許多乍看
    > 之下需要 multi-processor 來處理的場合,都可以利用 timer
    > ,輔以 single-interrupt-driven 的架構,而解決泰半。

    嗯,基本上還是得在程式上調教。FFPA有他的硬體優勢。從我注意到FPPA的
    出現到現在,除了Chamber大在他的網頁上也很多應用外, 事實上真的要讓
    我去導入這種產品,說實話很難!(主觀意見)。加上在8、16bits 的uC應用
    ,以PWM為例,很多公司的uC都有內建PWM 模組,設定完後直接硬體產生 。
    是否要這樣辛苦去維護產生 PWM的程式碼?在數位類比混合應用,沒有AD的
    週邊我就懶了。

    用timer中斷分配工作需要導入RTOS的觀念,一旦用到RTOS ,除非觸發時隔
    對於每個task的及時性要求能滿足。不然還是FPPA解決是比較恰當,不過現
    在FPGA導入software IP 之後,FPPA似乎只剩低階應用的這塊,而這塊,各
    家uC的開發環境發展成熟度又高於FPPA,即使這東西硬體架構優良,我仍然
    不會推薦我的雇主們使用這solution。

    例如dsPIC30F6010A就有8組Output Compare可以產生8通道的PWM信號以及 8
    channel 專門給馬達控制用的PWM模組以及QEI介面,分擔uC本身的工作,主
    程式只要設定好,這些PWM產就由硬體負擔,核心程式可以進行Fuzzy或是PID
    這些需要花時間計算的工作,以及透過外部類比感測器(加速規?..等)的信
    號經過A/D 轉換pass給uC作其他的調整或是計算的參數。當然!若只是要控
    制DC Servo,那用那個uC就不重要了(反正PWM頻率才50Hz)

    上面的例子。51 或FPPA能辦到嗎?當然可以!只是效益/成本比較下,誰合
    算還要再case by case去計算!
  • York Jong
     
    作者: ykjiang (York) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Sun Dec 10 17:01:44 2006

    前述用 timer 中斷產生多組 PWM 的作法,預設就不該和 RTOS 混用,
    否則會產生你提的問題。

    更嚴謹地說,這種用法要求整個系統只能有一個中斷,也就是產生 PWM
    的這個 timer 。所以才稱為 single-interrupt-driven 的架構。

    其原理跟《Patterns for Time Triggered Embedded Systems》中提出
    的 kernel 是類似的。

    如果這稱得上 multi-tasking 的話,應該歸類到 co-operative 式的多
    工。


    ※ 引述《MasterChang (我愛ASM)》之銘言:
    > 嗯,基本上還是得在程式上調教。FFPA有他的硬體優勢。從我注意到FPPA的
    > 出現到現在,除了Chamber大在他的網頁上也很多應用外, 事實上真的要讓
    > 我去導入這種產品,說實話很難!(主觀意見)。加上在8、16bits 的uC應用
    > ,以PWM為例,很多公司的uC都有內建PWM 模組,設定完後直接硬體產生 。
    > 是否要這樣辛苦去維護產生 PWM的程式碼?在數位類比混合應用,沒有AD的
    > 週邊我就懶了。
    > 用timer中斷分配工作需要導入RTOS的觀念,一旦用到RTOS ,除非觸發時隔
    > 對於每個task的及時性要求能滿足。不然還是FPPA解決是比較恰當,不過現
    > 在FPGA導入software IP 之後,FPPA似乎只剩低階應用的這塊,而這塊,各
    > 家uC的開發環境發展成熟度又高於FPPA,即使這東西硬體架構優良,我仍然
    > 不會推薦我的雇主們使用這solution。
    > 例如dsPIC30F6010A就有8組Output Compare可以產生8通道的PWM信號以及 8
    > channel 專門給馬達控制用的PWM模組以及QEI介面,分擔uC本身的工作,主
    > 程式只要設定好,這些PWM產就由硬體負擔,核心程式可以進行Fuzzy或是PID
    > 這些需要花時間計算的工作,以及透過外部類比感測器(加速規?..等)的信
    > 號經過A/D 轉換pass給uC作其他的調整或是計算的參數。當然!若只是要控
    > 制DC Servo,那用那個uC就不重要了(反正PWM頻率才50Hz)
    > 上面的例子。51 或FPPA能辦到嗎?當然可以!只是效益/成本比較下,誰合
    > 算還要再case by case去計算!
  • York Jong
     
    作者: MasterChang (我愛ASM) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Sun Dec 10 23:37:24 2006

    ※ 引述《ykjiang (York)》之銘言:
    > 前述用 timer 中斷產生多組 PWM 的作法,預設就不該和 RTOS 混用,
    > 否則會產生你提的問題。

    所以我說要Case by Case的去計算評估。

    用Timer中斷產生的多組PWM,您提供鏈結中,PWM寬度是用軟體Delay產
    生,在Delay()呼叫時,什麼工作都不用作了。PWM只有2通道,PWM頻率
    是91Hz,所以在產生寬度中需要耗費多少uC資源?其實大部分是被軟體
    Delay吃掉了。這個你可以透過KeilC51的資源檢視器來作簡單的觀察。

    透過RTOS的協助你可以確認透過RTOS管理的Delay 的精度,比如你有一
    個RTOS管理的Delayms(10);你就可以知道他會Delay 10ms然後誤差是多
    少Ticks。如果這個誤差不會影響到RC馬達的控制( 比如1ms和1.01ms的
    差異)那就可以放心用。而不是像軟體Dealy一樣, Delay一被呼叫,其
    他工作得停擺。

    不過這種東西,還是用硬體完成比較好。因為不管怎樣就是要吃為數不
    少的CPU資源。若uC只作這工作,那就不用擔心。 但是通常通訊介面跑
    不掉(總要控制DC馬達速度吧?或是RC馬達的角度...^_^)

    > 更嚴謹地說,這種用法要求整個系統只能有一個中斷,也就是產生 PWM
    > 的這個 timer 。所以才稱為 single-interrupt-driven 的架構。
    > 其原理跟《Patterns for Time Triggered Embedded Systems》中提出
    > 的 kernel 是類似的。
    > 如果這稱得上 multi-tasking 的話,應該歸類到 co-operative 式的多
    > 工。

    不管是協同式多工還是優先權式多工,回應時間的及時性是比較需要考
    慮,只要能符合你的case所要求的及時性,用那個都應該可以。

    由於本人不是資訊本科出身的,對於OS的瞭解也是到幾年前自己真的照
    uC/OS II的書的教學流程試著寫一個很陽春型51用的RTOS,加上去Trace
    FreeRTOS 的source code,並且把別人Port到PIC上的code 好好的花時
    間追完,才想說對RTOS總算有一點點感覺,真的覺得還是要一邊看書,
    一邊實作,才能真正對RTOS得到書中沒有提到的經驗。而且這比 Linux
    好追多了...呵呵。
    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From:211.74.242.156 》──┘
    --
    推 ykjiang:現在才發現它用 delay 的方式來造 PWM 寬度 :p [12/11]
    → ykjiang:所以我在前述虛擬碼提供的作法應該比較恰當 :) [12/11]
    → happosai:我用FPPA軟體造出10us的精度,這要用RTOS就很難了 [12/11]
    → happosai:甚至可以達到5us,做到0.5度的精度(遙控飛機用伺服馬達) [12/11]
    推 happosai:而且訊號穩定不受干擾,因為完全沒用到中斷,呵呵~ [12/11]
    推 happosai:其實FPPA就是一種硬體化的RTOS,反而跟P4雙核心的觀念不同 [12/11]
    推 ykjiang:這也是我在 18 篇提的 timer 法的明顯限制, [12/12]
    → ykjiang:要提高精度,就得加快 clock... [12/12]
    → ykjiang:更精確地講,要縮短 tick 的間隔,但還是有個極限。 [12/12]
    → happosai:這也是我在RTOS那篇文章講的重點 [12/13]
    → happosai:假如核心數夠多,基本上RTOS並不是必備的東西 [12/13]
    → happosai:chamber老大常講假如先發明多核心就不會發明中斷了...:Q [12/13]
    推 happosai:再提一下servo本身就有+/-10度的誤差,所以1度比誤差還小 [12/13]
    推 ykjiang:推 chamber 大那句話,雖覺得有點言過其實,但值得深思 [12/13]
    推 ykjiang:突然打通任督二脈,現在的我,完全贊成 Chamber 的說法。 [01/25]
    → ykjiang:過陣子找個時間,好好研究一下 FPPA [01/25]
    → ykjiang:我還不確定 FPPA 的指令,可否用來實現剛剛這個想法。 [01/25]
  • York Jong
     
    作者: happosai (八方齋) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Sun Dec 10 23:52:18 2006

    ※ 引述《MasterChang (我愛ASM)》之銘言:
    > ※ 引述《ykjiang (York)》之銘言:
    > > 相較之下, FPPA 雖不必動用 timer ,但其對 PWM 的 period
    > > 要用到「週期計算」的技巧,得用 assmbly 的角度,估算每個
    > > instruction 在 run time 要佔用多少 machine cycles 。
    > > 換句話說,在無法使用 timer 時, FFPA 這種多處理機的作法
    > > ,在實務上就顯得很必要。
    > > timer 對 "single" chip 來說,是個很必要的發明,許多乍看
    > > 之下需要 multi-processor 來處理的場合,都可以利用 timer
    > > ,輔以 single-interrupt-driven 的架構,而解決泰半。
    > 嗯,基本上還是得在程式上調教。FFPA有他的硬體優勢。從我注意到FPPA的
    > 出現到現在,除了Chamber大在他的網頁上也很多應用外, 事實上真的要讓
    > 我去導入這種產品,說實話很難!(主觀意見)。加上在8、16bits 的uC應用
    > ,以PWM為例,很多公司的uC都有內建PWM 模組,設定完後直接硬體產生 。
    > 是否要這樣辛苦去維護產生 PWM的程式碼?在數位類比混合應用,沒有AD的
    > 週邊我就懶了。

    其實用 FPPA 產生 PWM 訊號一點都不難,因為那一顆CPU就只負責
    產生PWM訊號,講白一點都是死迴圈,真正 update PWM 是另外一顆
    負責,所以程式寫起來很輕鬆,因為我正好剛寫完XD

    我同事之前連8051也沒學過,也是很快就上手了,更不用說
    各位有經驗的大大...^^

    > 用timer中斷分配工作需要導入RTOS的觀念,一旦用到RTOS ,除非觸發時隔
    > 對於每個task的及時性要求能滿足。不然還是FPPA解決是比較恰當,不過現
    > 在FPGA導入software IP 之後,FPPA似乎只剩低階應用的這塊,而這塊,各
    > 家uC的開發環境發展成熟度又高於FPPA,即使這東西硬體架構優良,我仍然
    > 不會推薦我的雇主們使用這solution。

    已經有廠商採用了,抱歉BBS上我不能透露太多,而且國內外有興趣的公司
    非常多。找個時間到新竹跟Chamber 聊聊,或許大大您會有不同的看法...:)

    現在比較欠缺的就是 C compiler,不過話說回來8051 & PIC 用 asm 寫的
    人也很多,這一點到是見人見智

    > 例如dsPIC30F6010A就有8組Output Compare可以產生8通道的PWM信號以及 8
    > channel 專門給馬達控制用的PWM模組以及QEI介面,分擔uC本身的工作,主
    > 程式只要設定好,這些PWM產就由硬體負擔,核心程式可以進行Fuzzy或是PID
    > 這些需要花時間計算的工作,以及透過外部類比感測器(加速規?..等)的信
    > 號經過A/D 轉換pass給uC作其他的調整或是計算的參數。當然!若只是要控
    > 制DC Servo,那用那個uC就不重要了(反正PWM頻率才50Hz)
    > 上面的例子。51 或FPPA能辦到嗎?當然可以!只是效益/成本比較下,誰合
    > 算還要再case by case去計算!

    FPPA 有點逆向思考的味道,現在的主流-SoC 大家都是依照專案需要
    找一顆週邊符合需要的uC來用,但是 FPPA 卻是用軟體造週邊,用堆積木
    的方式組合。不過講成本的話 FPPA 一定比 PIC 低,用硬體作週邊 gate
    count 變多 IC 成本增高,當然也會賣貴一點,而且還會有庫存的問題,
    買太多用不完怎麼辦?或者要是沒多久 phase-out 怎麼辦?這可能都是要
    考量的問題...
  • York Jong
     
    作者: MasterChang (我愛ASM) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Mon Dec 11 01:08:23 2006

    ※ 引述《happosai (八方齋)》之銘言:
    > 已經有廠商採用了,抱歉BBS上我不能透露太多,而且國內外有興趣的公司
    > 非常多。找個時間到新竹跟Chamber 聊聊,或許大大您會有不同的看法...:)
    > 現在比較欠缺的就是 C compiler,不過話說回來8051 & PIC 用 asm 寫的
    > 人也很多,這一點到是見人見智

    這樣公司的態度似乎不太OPEN。呵呵....開玩笑的。
    因為FPPA的資訊除了Chamber大的網頁,現在連應廣的網站我也
    找不到了...Orz

    > FPPA 有點逆向思考的味道,現在的主流-SoC 大家都是依照專案需要
    > 找一顆週邊符合需要的uC來用,但是 FPPA 卻是用軟體造週邊,用堆積木
    > 的方式組合。不過講成本的話 FPPA 一定比 PIC 低,用硬體作週邊 gate
    > count 變多 IC 成本增高,當然也會賣貴一點,而且還會有庫存的問題,
    > 買太多用不完怎麼辦?或者要是沒多久 phase-out 怎麼辦?這可能都是要
    > 考量的問題...

    uC這種東西根據case應用不同,誰優誰劣其實說不準。
    專案開發及後續維護成本,不是光比uC單價是否便宜,事實上量大
    就便宜、維護容易就會便宜、開發環境單純就會便宜、開發期程短
    也會便宜,導入時程短也會便宜,週邊效益高也會便宜... 等變數
    滿多的。

    專案成本要把「人」、「時」、「資金」放在一起看才比較反應的
    出來真正成本。所以我很主觀的會講不會推薦雇主用這個整體風險
    評估較高的選項。畢竟要賣產品的公司,如果資訊不容易取得,資
    訊不透明,那要用的意願就降低了。再作專案評估時,貴公司產品
    的風險評估指數就不好看了。

    好像有點講FPPA的壞話...見諒。
    不過我真的很想用國產品,也期待FPPA的後續發展。能不能建議貴
    公司把網站充實一下,連東西都看不到,我就不會很想去問。老是
    靠Chamber大撐場也太辛苦囉!!^_^

    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From: 211.74.242.156 》──┘
    --
    推 ykjiang:賣 chip 跟賣糖果一樣,要以量取勝 :) [12/11]
    → MasterChang:推一樓的糖果論.... [12/11]
    推 happosai: http://www.padauk.com.tw/padauk/ [12/11]
    推 happosai:我上次也有轉給ykjiang看,不過連不上去 [12/11]
    → happosai:不是資訊不公開,而是網頁外包公司實在是@#$!@$# [12/11]
    推 happosai:有興趣可以把mail給我,我可以寄一些資料過去...^^ [12/11]
    → ykjiang:還是連不進去耶 =.=" [12/11]
    推 happosai:不過話說回來的確不少人是看了他的網站有興趣跑來公司談 [12/11]
    → happosai:application note已經累積不少篇了,相信近期就能公開 [12/11]
    → happosai:今天請示過chamber老大有些東西可以先給各位瞧瞧 [12/11]
    推 happosai:有興趣可以找我要...:D [12/11]
  • York Jong
     
    作者: ykjiang (York) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Mon Dec 11 02:44:45 2006

    ※ 引述《happosai (八方齋)》之銘言:
    > 其實用 FPPA 產生 PWM 訊號一點都不難,因為那一顆CPU就只負責
    > 產生PWM訊號,講白一點都是死迴圈,真正 update PWM 是另外一顆
    > 負責,所以程式寫起來很輕鬆,因為我正好剛寫完XD
    > 我同事之前連8051也沒學過,也是很快就上手了,更不用說
    > 各位有經驗的大大...^^

    雖然單就每一小程式片段,都不難,
    但以整個系統來看,複雜度就會增加很多,
    這也是現在軟體發展急需解決的問題。

    > FPPA 有點逆向思考的味道,現在的主流-SoC 大家都是依照專案需要
    > 找一顆週邊符合需要的uC來用,但是 FPPA 卻是用軟體造週邊,用堆積木
    > 的方式組合。不過講成本的話 FPPA 一定比 PIC 低,用硬體作週邊 gate
    > count 變多 IC 成本增高,當然也會賣貴一點,而且還會有庫存的問題,
    > 買太多用不完怎麼辦?或者要是沒多久 phase-out 怎麼辦?這可能都是要
    > 考量的問題...

    我比較欣賞的也是 FPPA 這種軟體造週邊、堆積木組合的概念。
    不過這方面最好能有方便的開發環境支持,把積木備妥,等人來堆 :)
    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From:61.59.233.45 》──┘
    --
    推 MasterChang:happosai說有IDE和ICE了,只是不知道價錢漂不漂亮... [12/11]
    → MasterChang:參考文件只有chamber大的網站....加把勁!!^_^ [12/11]
    推 happosai:外國客戶也是在叫網路上都找不到公司的資訊...囧 [12/11]
    → happosai:所以真的要慎選網頁外包公司...= = [12/11]
    推 happosai:價錢絕對讓您滿意~XD [12/11]
  • York Jong
     
    作者: Jie (御筆丹青悅蘭芳) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Mon Dec 11 22:21:14 2006

    ※ 引述《happosai (八方齋)》之銘言:
    > ※ 引述《MasterChang (我愛ASM)》之銘言:
    > 現在比較欠缺的就是 C compiler,不過話說回來8051 & PIC 用 asm 寫的
    51?? 可以用sdcc compiler
    不過有點濫 因為有SIZE限制
    另外他也不會把整個calling path的 stack會不會超過51可用的
    <假設只有256 bytes>.
    這是很久以前有玩過的 也許現在都FIXED了
    另外關於motor control 其實比較有技術性的在於
    系統的精度控制 而精度控制本身跟介質摩擦/數位精度/馬達本身輸出
    gear ratio/gain/belt 等等機電系統所造成PWM於系統中呈現的非線性控制比較難

    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From:220.135.131.242 》──┘
    --
    推 ykjiang: 51 最好的 compiler 是 Keil C ,不過這是要錢的... [12/12]
    推 ykjiang:要解決雜訊問題,無論軟、硬體,都有很多眉角可以玩 :) [12/12]
    → happosai:順便一提FPPA本身已經具備超強抗雜訊能力 [12/13]
    → happosai:這也是為甚麼chamber有辦法設計出CDI點火器 [12/13]
  • York Jong
     
    作者: ykjiang (York) 看板: Robotics
    標題: Re: 「單」晶片控制多組 PWMs
    時間: Wed Dec 13 00:17:04 2006

    ※ 引述《happosai (八方齋)》之銘言:
    > 其實用 FPPA 產生 PWM 訊號一點都不難,因為那一顆CPU就只負責
    > 產生PWM訊號,講白一點都是死迴圈,真正 update PWM 是另外一顆
    > 負責,所以程式寫起來很輕鬆,因為我正好剛寫完XD
    > 我同事之前連8051也沒學過,也是很快就上手了,更不用說
    > 各位有經驗的大大...^^

    我相信你們是採用類似下列虛擬碼的作法:
     
    0: // PWM software delay version (for servo)
    1: // ...
    2: int main()
    3: {
    4: // ...
    5: for (;;) {
    6: for (i=0; i


    類似的作法比較是為 servo 這類的控制訊號量身訂做的。

    其 pulse width 的精度(precision)較高,
    但產生的 PWM 不夠一般化:

    1. 其要求每個 PWM 的 Period 都要一樣,
    2. 在 duty cycle 太大時,可控制的 PWM 組數減少。

    話說回來, uC 原本來就是用在量身訂做的場合 :)

    --
    ┌─────◆程式設計樂園◆─────┐
    │ CSZone.kkcity.com.tw │
    └──《From:203.70.105.134 》──┘
    --
    → ykjiang:嗯,過陣子較閒時,再把這幾種方法整理整理 :) [12/13]
    推 happosai:組數變小到不一定,要看週期的長度 [12/13]
    → happosai:因為最近也寫完一個PWM LED的範例,他的pulse width就 [12/13]
    → happosai:很大(相對於週期) [12/13]
    → happosai:真正決定組數要把核心頻率與PWM週期考慮進去 [12/13]
    推 happosai:假如要在一顆核心裡產生不同週期的PWM的確是個挑戰 [12/13]
    → ykjiang:PWM用在LED跟DC motor類似,都用來調整功率(有效電壓) [12/13]
    → ykjiang:限制條件就是 PERIOD - INNATE_DELAY - pulse_delay >= 0 [12/14]
    → ykjiang:而 INNATE_DELAY 則視核心頻率及 code 最佳化情形來給定 [12/14]
    → ykjiang:今天作了簡單的整理 http://tinyurl.com/yhj3tv [12/16]

To Top

Start a New Topic » « Back to the Robotics group