協同產品設計實習

STAGE2-BG1

小組成員 :40823208408232454082324640823251

堆高機

Why 為何設計此產品:

可以幫助人將重物搬到定位;希望物品實現量產時能快速且準確的將產品運送到各個有需求的地方。

What 產品設計時想實現甚麼功能:

是一台可以實現遠端控制方向及前桿臂可舉起重物之堆高機。

動機

How 如何完成產品設計:

透過每一位組員分工採取協同的方式對產品進行修正與補償,如果遇到問題將其寫進個人網誌中並與組員討論使其解決。

When 什麼時候進行:

利用每個禮拜五上課的時間如有問題互相幫助,平日則利用群組聯絡的方式實現討論及修正。

Where 在哪裡討論:

1.8樓電腦教室

2.Line群組:stage2-bg1討論

3.gitter:stage2-bg1

Who 組員分工:

40823208:網頁編輯、revael設計

40823245:CoppeliaSim模擬

40823246:機構設計、CoppeliaSim模擬

40823251:網頁編輯、PDF製作

構造原理

透過前方兩支支撐桿載運物品,並利用滑軌裝置實現抬升及下降的動作,輪子可轉向用以達到目的地。

零件圖介紹

載貨支撐架

透過前方支撐架將物品做抬升及下降的動作增加雙滑軌使其與零件齒輪發生轉動,解決上升搖晃問題。

車輪

可進行轉彎及前進的動作,帶動整部機械的核心轉軸。

外車殼

推桿及控制方向彙整在此車殼中。

底盤車架

提供前方滑軌剛性之支撐架。

齒輪轉軸

為了使支撐架能產生更加平穩的作動故新增齒輪使其相互咬合。

COPPELIASIM程式模擬

第一版 最初版本

問題:由於前輪之連動轉彎機構無法正確同步走位,故其改之。

第二版修正內容:前輪簡化設計連桿機構

問題:支撐桿升降卡頓,且測試旋轉軸設置在外。

新增內容:新增可愛假人模擬乘坐

第三版 修正內容:修正圖檔,添加攝像機

問題:單一攝像模組無法環顧四方,故需添加其他攝像模組。

第四版 雙攝像頭

第五版 新增可遙控裝置

第六版 (最終版)新增雙滑軌設計

目的:由於原先為一滑軌作動,故支撐架抬升時會導致無法固定在定點位,此次改版新增了雙滑軌加上齒輪作咬合使其控制時更加平穩

程式碼


            function sysCall_init() 
                left_front_handle= sim.getObjectHandle('left_joint')
                left_back_handle= sim.getObjectHandle('left_joint')
                right_back_handle= sim.getObjectHandle('right_joint')
                right_front_handle= sim.getObjectHandle('right_joint')
                gear_up_handle= sim.getObjectHandle('gear_joint')
                gear_down_handle= sim.getObjectHandle('gear_joint')
                MaxVel=20
                MaxVel_gear=30
                leftvelocity=0
                rightvelocity=0
                upvelocity=0
                dVel=10;
                dVel_gear_up=30;
                dVel_gear_dwon=20;
                a=13;
                --sim.setJointTargetVelocity(left_front_handle,leftvelocity)
                sim.setJointTargetVelocity(left_back_handle,leftvelocity)
                sim.setJointTargetVelocity(right_back_handle,rightvelocity)
                sim.setJointTargetVelocity(gear_down_handle,upvelocity)
                --sim.setJointTargetVelocity(right_front_handle,rightvelocity)
            end
             
            function sysCall_actuation() 
                message,auxiliaryData=sim.getSimulatorMessage()
                while message~=-1 do
                    if (message==sim.message_keypress) then
                        if (auxiliaryData[1]==32) then
                            leftvelocity=0
                            rightvelocity=0
                            upvelocity=0
                            sim.setJointForce(left_front_handle, 0)
                            sim.setJointForce(left_back_handle, 0)
                            sim.setJointForce(right_back_handle, 0)
                            sim.setJointForce(right_front_handle, 0)
                            sim.setJointForce(gear_up_handle, 0)
                            sim.setJointForce(gear_down_handle, 0)
                            break
                        else
                            --sim.setJointForce(left_front_handle, 10000)
                            sim.setJointForce(left_back_handle, 10000)
                            sim.setJointForce(right_back_handle, 10000)
                            sim.setJointForce(gear_down_handle, 10000)
                            --sim.setJointForce(right_front_handle, 10000)
                        end
                        if (auxiliaryData[1]==119) then
                            -- w key
                 
                            leftvelocity=leftvelocity+a
                            rightvelocity=rightvelocity+dVel
                        end
                        if (auxiliaryData[1]==115) then
                            -- s key
                            leftvelocity=(leftvelocity+rightvelocity)/2
                            rightvelocity=leftvelocity
                            leftvelocity=leftvelocity-dVel
                            rightvelocity=rightvelocity-dVel
                        end
                        if (auxiliaryData[1]==97) then
                            -- a key
                            leftvelocity=leftvelocity-dVel
                            rightvelocity=rightvelocity+dVel
                        end
                        if (auxiliaryData[1]==100) then
                            -- d key
                            leftvelocity=leftvelocity+dVel
                            rightvelocity=rightvelocity-dVel
                        end
                        if (auxiliaryData[1]==100) then
                            -- d key
                            leftvelocity=leftvelocity+dVel
                            rightvelocity=rightvelocity-dVel
                        end
                        if (auxiliaryData[1]==2008) then
                            -- down key
                            upvelocity=upvelocity+dVel_gear_dwon
                        end
                        if (auxiliaryData[1]==2007) then
                            -- up key
                            upvelocity=upvelocity-dVel_gear_up
                        end
                         
                    end
                    message,auxiliaryData=sim.getSimulatorMessage()
                end
                 
                if leftvelocity>MaxVel then
                    leftvelocity=MaxVel
                end
                if leftvelocity<-MaxVel then
                    leftvelocity=-MaxVel
                end
                 
                if rightvelocity>MaxVel then
                            rightvelocity=MaxVel
                end
                if rightvelocity<-MaxVel then
                            rightvelocity=-MaxVel
                end
                if upvelocity>MaxVel_gear then
                                upvelocity=MaxVel_gear
                end
                if upvelocity<-MaxVel_gear then
                                upvelocity=-MaxVel_gear
                end
                 
                --sim.setJointTargetVelocity(left_front_handle,leftvelocity)
                sim.setJointTargetVelocity(left_back_handle,leftvelocity)
                sim.setJointTargetVelocity(right_back_handle,rightvelocity)
                sim.setJointTargetVelocity(gear_down_handle,upvelocity)
                --sim.setJointTargetVelocity(right_front_handle,rightvelocity)
                 
            end
                

最終模擬影片

Heroku 建立

測試人員:40823245

1.登入heroku,以s學號辦app,建立第一個app (https://s學號.herokuapp.com)

2.載heroku,放置data裡 3.將start丟入白窗修改路徑

程式

4.重啟後測試是否能執行heroku.exe

5.到小黑窗輸入heroku version

有上面回應就是可以
6.進到tmp>stage2-bg1(自己組)

7.輸入git remote add heroku https://git.heroku.com/s40823245.git

可以在.git裡面的config看到

8.若資料夾裡不是最新的版本要先git pull

9.然後打git push heroku

就能在https://s學號.herokuapp.com看到stage2-bg1的網站

heroku指令

在黑窗打指令登錄heroku---heroku login -i

輸入剛剛創heroku帳號的email、輸入heroku密碼

heroku教學影片

心得

原先我們所選擇要做的主題為轉子引擎,但由於始終無法找到有效的解決辦法去改善轉子滑動的問題,經過小組會議決定透過引擎的想法去做延伸;故聯想到堆高機,可做抬升及下降運動且可模擬輪子的移動;測試時也遇到了許多大大小小的問題,但經過和組員的協同去對作品進行改善使其完成式一件非常開心的事。

PDF

參考資料

堆高機

1. https://www.taifork.com.tw/product/category1 2.https://static.iyp.tw/39646/products/photooriginal-1756552-BKkBY.jpg 3.http://www.taiwankomatsu.tw/web/about/about.jsp?cp_no=CP1543769191951

Heroku

http://mde.tw/wcm2021/content/Heroku-%E5%AF%A6%E4%BD%9C.html