新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 可視化遠程遙控移動機械手設計與實現

        可視化遠程遙控移動機械手設計與實現

        作者: 時間:2015-03-04 來源:網絡 收藏

          2.1移動單片機軟件實現

        本文引用地址:http://www.104case.com/article/270440.htm

          移動的控制核心為ATmega128L單片機,其內部通過時鐘產生變換PWM來控制4個DC電機旋轉從而實現的移動。同時內部有兩個UART串口,分別與OMAP4430通信的藍牙串口和控制AX-12馬達旋轉的串口。其軟件流程如下:

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

          2)打開藍牙串口和與AX-12通信串口,設置串口的波特率、奇偶校驗、停止位等屬性

          3)藍牙串口接收OMAP4430發過來的控制參數,并進行參數解析處理。如果為運動控制參數,則通過PWM_change()修改PWM來控制機械手運動方向,如果為機械手設置參數通過Ctrl_Array_MT()設置每個AX-12馬達的旋轉角度和旋轉速度來完成捉取目標任務。

          4)讀取AX-12馬達的溫度及力矩,如果超出預定范圍則調整馬達速度和力矩并向OMAP4430開發板發出提示信息。機械手動作控制命令如表1所示:

          

         

          表1移動機械手操作命令

          2.2 Android應用軟件設計

          2.2.1搖桿手柄事件處理

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

          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按鍵按下觸發的事件

          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內部封裝了openMax庫進行多媒體硬解碼加速,openMax是一個開源、跨平臺的多媒體編解碼加速API[5],包括openMax應用層、openMax集成層、openMax開發層。其解碼h264的步驟包括:

          1)通過MediaCodec.createDecoderByType(“video/mp4v-es”)創建H264解碼對象

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

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

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



        關鍵詞: 機械手 遠程遙控

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 澄江县| 泰来县| 平昌县| 揭东县| 霍林郭勒市| 吴旗县| 兴化市| 灵宝市| 云梦县| 砀山县| 余姚市| 青田县| 扎鲁特旗| 古交市| 毕节市| 株洲市| 承德县| 峨眉山市| 通化市| 安宁市| 灵璧县| 肃宁县| 宁陵县| 旅游| 明水县| 砚山县| 永定县| 博爱县| 旬阳县| 阿荣旗| 昌图县| 涪陵区| 钟山县| 肃宁县| 米泉市| 乃东县| 连平县| 汝阳县| 北宁市| 宜兰市| 都匀市|