<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 可視化遠(yuǎn)程遙控移動(dòng)機(jī)械手設(shè)計(jì)與實(shí)現(xiàn)

          可視化遠(yuǎn)程遙控移動(dòng)機(jī)械手設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2015-03-04 來(lái)源:網(wǎng)絡(luò) 收藏

            2.1移動(dòng)單片機(jī)軟件實(shí)現(xiàn)

          本文引用地址:http://www.ex-cimer.com/article/270440.htm

            移動(dòng)的控制核心為ATmega128L單片機(jī),其內(nèi)部通過(guò)時(shí)鐘產(chǎn)生變換PWM來(lái)控制4個(gè)DC電機(jī)旋轉(zhuǎn)從而實(shí)現(xiàn)的移動(dòng)。同時(shí)內(nèi)部有兩個(gè)UART串口,分別與OMAP4430通信的藍(lán)牙串口和控制AX-12馬達(dá)旋轉(zhuǎn)的串口。其軟件流程如下:

            1)寄存器初始化:包括初始化時(shí)鐘定時(shí)器、端口輸入輸出初始化、設(shè)置LED控制寄存器等

            2)打開(kāi)藍(lán)牙串口和與AX-12通信串口,設(shè)置串口的波特率、奇偶校驗(yàn)、停止位等屬性

            3)藍(lán)牙串口接收OMAP4430發(fā)過(guò)來(lái)的控制參數(shù),并進(jìn)行參數(shù)解析處理。如果為運(yùn)動(dòng)控制參數(shù),則通過(guò)PWM_change()修改PWM來(lái)控制機(jī)械手運(yùn)動(dòng)方向,如果為機(jī)械手設(shè)置參數(shù)通過(guò)Ctrl_Array_MT()設(shè)置每個(gè)AX-12馬達(dá)的旋轉(zhuǎn)角度和旋轉(zhuǎn)速度來(lái)完成捉取目標(biāo)任務(wù)。

            4)讀取AX-12馬達(dá)的溫度及力矩,如果超出預(yù)定范圍則調(diào)整馬達(dá)速度和力矩并向OMAP4430開(kāi)發(fā)板發(fā)出提示信息。機(jī)械手動(dòng)作控制命令如表1所示:

            

           

            表1移動(dòng)機(jī)械手操作命令

            2.2 Android應(yīng)用軟件設(shè)計(jì)

            2.2.1搖桿手柄事件處理

            搖桿手柄采用USB OTG方式連接到Android手機(jī),Linux內(nèi)核已經(jīng)包括其驅(qū)動(dòng)程序。手柄的水平豎直搖桿事件和按鍵事件都將觸發(fā)MainActivity的onKeyDown()函數(shù)和onGenericMotionEvent()函數(shù)的調(diào)用,在函數(shù)中分析事件對(duì)象的屬性(觸發(fā)按鍵ID、事件類(lèi)型)進(jìn)而向OMAP4430發(fā)出不同控制命令。其參考代碼如下:

            boolean onKeyDown(int keyCode, KeyEvent event)

            {if(event.getSource()==InputDevice.SOURCE_JOYST ICK || event.getSource()==1281) //手柄按鍵事件

            { if(event.getAction()==KeyEvent.ACTION_DOWN)

            { int keycode=event.getKeyCode();

            swicth(keycode)

            { case KeyEvent.KEYCODE_BUTTON_1:

            ……。 break; //ID=1按鍵按下觸發(fā)的事件

            case KeyEvent.KEYCODE_BUTTON_2:

            case KeyEvent.KEYCODE_BUTTON_3:

            default:break;}}}}

            boolean onGenericMotionEvent(MotionEvent event){

            if(event.getSource()==InputDevice.SOURCE_JOYSTICK)

            { //手柄搖桿事件

            float Raw_x=event.getRawX(); //水平方向偏移

            float Raw_y=event.getRawY(); //豎直方向偏移

            }}

            2.2.2 Android H264解碼

            Android從4.1版本加入了H264視頻硬解碼API,其MediaCodec內(nèi)部封裝了openMax庫(kù)進(jìn)行多媒體硬解碼加速,openMax是一個(gè)開(kāi)源、跨平臺(tái)的多媒體編解碼加速API[5],包括openMax應(yīng)用層、openMax集成層、openMax開(kāi)發(fā)層。其解碼h264的步驟包括:

            1)通過(guò)MediaCodec.createDecoderByType(“video/mp4v-es”)創(chuàng)建H264解碼對(duì)象

            2)mediacodec.configure(format,………)配置H264解碼器的參數(shù),包括圖像分辨率,視頻幀格式、H264視頻流的頭信息等

            3)mediacodec.dequeueInputBuffer()獲取可用緩存指針,將接收的H264編碼拷貝到該緩存中,mediacodec.queueInputBuffer()將緩存送入解碼器的緩存隊(duì)列中

            4)查詢等待解碼器完成,dequeueOutputBuffer()將解碼后的圖像緩存出隊(duì),并通過(guò)Surafce顯示接口將圖像繪制到控制界面上



          關(guān)鍵詞: 機(jī)械手 遠(yuǎn)程遙控

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();