玩轉X-CTR100 l STM32F4 l X-CTR100與樹莓派搭建機器人平臺

我造輪子,你造車,創客一塊兒造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ html

本文介紹X-CTR100控制器與樹莓派Linux系統組成機器人平臺。首先介紹與樹莓派串口通訊,後介紹機器人平臺搭建。這種上下位機平臺架構經常使用於機器人ROS系統開發中。最後介紹了Linux機器人開發中經常使用的軟件工具,意在拋磚引玉。 python

環境搭建

本文使用樹莓派硬件版本爲3B+,GPIO擴展接口具備1路串口,能夠與X-CTR100控制器通訊。 git

組成強大的上下位機機器人系統,這個是主流的ROS架構。GPIO的串口引腳定義以下。 算法

軟件操做系統使用NOOBS安裝,NOOBS版本2.8.2,2018-06-27更新。 編程

安裝樹莓派官方Raspbian Stretch版本安全

默認狀態樹莓派串口是關閉的,須要打開串口,並關閉串口終端,以下。若是未關閉串口終端,改串口會打印系統調試信息。 網絡

輸入如下命令,查看串口狀態。ttyS0爲咱們要使用的擴展接口上的串口。 架構

ls -l /dev 框架

此時,無須像網上教程所述修改任何配置映射文件,便可使用ttyS0通訊。 機器學習

樹莓派與PC機串口通訊測試

首先測試樹莓派例串口通訊是否正常,測試採用樹莓派與PC機串口通訊。硬件平臺以下。

本文使用一款圖像化的Linux串口工具cutecom,固然也能夠經常使用的minicom或picocom。

後二者在Linux中使用較多,可是爲文本工具,上手有難度。

cutecom軟件通訊

cutecom安裝很是簡單使用apt-get命令,以下。

sudo apt-get install cutecom

安裝完成後,輸入以下命令打開軟件。串口操做須要root權限。

sudo cutecom

設置串口設備爲/dev/ttyS0,並打開設備,能夠實現串口數據收發。

minicom軟件通訊

minicom軟件安裝前注意更新軟件源,一般使用命令安裝軟件apt-get install。

sudo apt-get install minicom

也可使用圖形化的方式安裝一款軟件:串口調試工具minicom。使用系統自帶的 "Add /Remove Software"軟件。

打開終端,以下命令打開ttyS0串口。

sudo minicom –b 115200 –o –D /dev/ttyS0

軟件界面以下,爲文本界面。

樹莓派鍵盤輸入字符便可傳輸到PC機,PC機發送字符到樹莓派。

若是參數固定,也可以使用以下命令,配置minicom,後續啓動均按照該配置啓動。

sudo minicom –s

進入配置界面,選"Serial port setup"進行串口設置。按下圖設置,重點A選型串口名稱。

而後進入配置界面,選擇"Save setup as dfl"保存配置,並選擇"Exit"退出。

後續輸入以下命令,便可按照配置內容打開串口。

sudo minicom

退出minicom方法,根據提示按CTRL+A,進入help界面,按X退出。按Z查看幫助。

打開軟件時,若是出現以下提示,可經過進入/var/lock文件夾,刪除"LCK..ttyS0"解決。該狀況通常爲錯誤關閉串口致使。

Device /dev/ttyS0 is locked.

樹莓派與X-CTR100串口通訊測試

硬件鏈接

本例程測試樹莓派與X-CTR100串口通訊是否正常,硬件平臺以下,樹莓派鏈接UART1。

測試例程

X-CTR100控制器下載《X-CTR100 l 樹莓派串口通訊例程(循環發送)》例程,X-CTR100會每隔1S發送一次串口數據。樹莓派使用minicom接收,測試結果以下。

樹莓派與X-CTR100 python串口通訊

minicom僅知足調試用途,用於製做還須要編程解決,樹莓派流行的編程語言爲python語言,介紹如何使用python編寫串口通訊代碼,使用python的serial擴展庫——pyserial實現。

硬件鏈接

本例程測試樹莓派與X-CTR100 python串口通訊功能。此例程樹莓派串口鏈接UART3(LB接口)。

pyserial安裝

安裝pyserial擴展庫有不少種方法,可以使用pip或者easy_install安裝,也能夠直接選擇apt-get工具安裝。若使用apt-get工具安裝,可輸入如下指令

sudo apt-get install python-serial

python代碼

代碼實現樹莓派循環向X-CTR100控制器發送數據功能。

# -*- coding: utf-8 -*

import serial

import time

# 打開串口

ser = serial.Serial("/dev/ttyS0", 9600,timeout =0.5)

# 循環發送

while 1:

ser.write('Hello X-CTR100\r\n'.encode())

time.sleep(1)

#關閉串口

ser.close()

測試例程

X-CTR100控制器下載《X-CTR100 l 樹莓派串口通訊例程(接收數據)》例程。例程實現UART3接收樹莓派發送的數據,並經過USB串口顯示數據內容,當接收到'\n'符後,反轉LED燈指示狀態。主程序及UART3中斷接收部分代碼以下。

int main(void)

{

    /* X-CTR100初始化 */

    AX_Init(115200);

 

    printf("***X-CTR100 接收樹莓派串口數據測試例程***\r\n");

 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置中斷優先級分組

 

    AX_UART_Init();

 

    while (1)

    {

        AX_Delayms(1000); //延時100ms

    }

}

 

/**

* @簡 述 串口中斷服務程序

* @參 數 無

* @返回值 無

*/

void USART3_IRQHandler(void)

{

    uint8_t Res;

 

    if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中斷

    {

 

        Res = USART_ReceiveData(USART3);

 

        //USB串口顯示接收到的字符

        printf("%c", Res);

 

        //接收到換行符,反轉綠色LED

        if (Res == '\n')

            AX_LEDG_Toggle();

 

        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);

    }

}

X-CTR100控制器下載代碼後,打開串口調試助手。在樹莓派使用默認IDE運行python代碼。運行結果下圖所示。

樹莓派X-CTR100機器人平臺搭建

目前的測試平臺,只實現了樹莓派與X-CTR100控制器上下位機串口通訊功能。樹莓派須要鏈接鍵盤鼠標和顯示器,而且須要USB單獨供電,不方便搭建機器人平臺。

要構建機器人平臺還須要解決供電和遠程操做兩個問題。

供電

X-CTR100使用VIN輸入時,其內置DCDC具備5V@2A供電輸出能力,能夠向樹莓派提供穩定5V電源,解決電源輸入問題。

遠程控制

供電解決了,鼠標鍵盤顯示器還依然存在,若是須要擺脫,就須要經過網絡進行遠程控制。

本文介紹兩種遠程操做方式,一種文字方式SSH,一種圖像方式VNC。

SSH方式,這也是Linux經常使用操做方式,適合高手,須要記錄大量命令,操做高效便捷,可是難度大。對於小白,操做起來可能會比較困難。另外一種VNC遠程控制方式,在PC機上使用遠程控制操做樹莓派桌面。下面分別介紹。

SSH方式

SSH爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲創建在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其餘操做平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎全部UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其餘平臺,均可運行SSH。系統框圖以下。

Windows系統運行SSH有兩個經常使用軟件,putty和SSH Secure Shell Client。本文已putty爲例說明。

PC機下載安裝puttyPC機和樹莓派在一個網段內,以下方式鏈接樹莓派。

鏈接後便可經過命令方式控制樹莓派,通常Linux操做大多經過命令方式進行,界面以下。

在SSH模式下,也可使用minicom軟件,進行遠程串口調試,很是方便。

VNC方式

對於小白用戶SSH方式可能有些困難,使用VNC方式,能夠經過遠程桌面,就像操做本身電腦同樣操做樹莓派圖像桌面,使用很是方便。藉助WIFI無線網絡,更可實現無線控制,對於機器人操做調試很是方便。

VNC (Virtual Network Console)是虛擬網絡控制檯的縮寫。它是一款優秀的遠程控制工具軟件,由著名的 AT&T 的歐洲研究實驗室開發的。VNC 是在基於 UNIX 和 Linux 操做系統的免費的開源軟件,遠程控制能力強大,高效實用,其性能能夠和 Windows 和 MAC 中的任何遠程控制軟件媲美。

樹莓派自帶VNC軟件,默認關閉,須要經過配置選項開啓。

若是使用PC機,須要安裝VNC Viewer軟件。添加樹莓派IP地址,帳號密碼,便可使用,很是簡單。

注意,樹莓派默認分辨率設置爲根據顯示設備自適應,若是不插顯示設備,分辨率會比較低。爲了達到較好效果,建議將樹莓派分辨率調節至1080P,以下設置。

硬件平臺

X-CTR100控制器能夠方便與樹莓派組裝在一塊兒,組成性能強大的Linux機器人開發平臺。組裝後,X-CTR100和樹莓派接口都可以正常使用,例以下圖所示電機驅動也能夠正常使用,最多可驅動四路直流電機。只須要爲平臺供電便可開發,鏈接很是簡單,適合ROS機器人系統開發。

ROS機器人系統

有了機器人硬件平臺,實現機器人還須要軟件平臺,下面介紹機器人經常使用軟件。

ROS(Robot Operating System,下文簡稱"ROS")是一個適用於機器人的開源的元操做系統。它提供了操做系統應有的服務,包括硬件抽象,底層設備控制,經常使用函數的實現,進程間消息傳遞,以及包管理。它也提供用於獲取、編譯、編寫、和跨計算機運行代碼所需的工具和庫函數。

ROS 的主要目標是爲機器人研究和開發提供代碼複用的支持。ROS是一個分佈式的進程(也就是"節點")框架,這些進程被封裝在易於被分享和發佈的程序包和功能包中。ROS也支持一種相似於代碼儲存庫的聯合系統,這個系統也能夠實現工程的協做及發佈。這個設計可使一個工程的開發和實現從文件系統到用戶接口徹底獨立決策(不受ROS限制)。同時,全部的工程均可以被ROS的基礎工具整合在一塊兒。

使用ROS,能夠方便開發如今較爲流行的SLAM機器人。

具體樹莓派ROS系統的安裝和使用,網絡上有大量文章,請搜索參考,本文不作詳見介紹。

OpenCV機器視覺

OpenCV於1999年由Intel創建,現在由Willow Garage提供支持。OpenCV是一個基於BSD許可發行的跨平臺計算機視覺庫,能夠運行在Linux、Windows和Mac OS操做系統上。它輕量級並且高效——由一系列 C 函數和少許 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的不少通用算法。

OpenCV是開發機器人視覺不可缺乏的工具,能夠方便進行圖像處理操做,例如機器人經常使用的物體檢測,人臉跟蹤等功能。這裏不作過多描述,感興趣能夠搜索安裝。

TensorFlow人工智能

TensorFlow 是谷歌研發的第二代人工智能學習系統,可被用於語音識別或圖像識別等多項機器學習和深度學習領域。今天,TensorFlow 官方宣稱開始支持樹莓派平臺,這意味着樹莓派設備在人工智能方向的應用和學習上變得更加容易。

TensorFlow 在 2015 年首次發佈之時,咱們但願它成爲一個任何人均可以使用的開源的機器學習框架。爲此,咱們將它擴展到了 Linux、MacOS、Windows、iOS 以及 Android 平臺。而今,在樹莓派基金會的合力下,咱們宣佈最新的 TensorFlow 1.9 版本將能夠經過樹莓派預裝的 Python pip 包系統安裝!若是你使用的是 Raspbian 9 (stretch),你能夠在終端運行下面的命令進行安裝:

sudo apt install libatlas-base-dev

pip3 install tensorflow

而後在終端運行 python3,像在其餘平臺使用 TensorFlow 同樣使用它就行了。下面是一個 hello world 的例子。

# Python

import tensorflow as tf

tf.enable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

print(hello)

參考

http://shumeipai.nxez.com/2018/08/03/tensorflow-officially-supports-the-raspberry-pi.html

相關文章
相關標籤/搜索