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

来源:https://www.cnblogs.com/xtark/archive/2018/09/06/9598118.html
-Advertisement-
Play Games

我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】 本文介紹X-CTR100控制器與樹莓派Linux系統組成機器人平臺。首先介紹與樹莓派串口通信,後介紹機器人平臺搭建。這種上下位機平臺架構常用於機器人RO... ...


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

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

環境搭建

本文使用樹莓派硬體版本為3B+,GPIO擴展介面具有1路串口,可以與X-CTR100控制器通信。

組成強大的上下位機機器人系統,這個是主流的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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我們進行重新安裝系統(fedora 28)的時候,需要初始安裝一些 gnome 插件,來進行完善我們的使用。 首先我們應該進行安裝 gnome-tweak 工具來進行定製化系統。 tweak 可以進行定製化系統和管理gnome 插件來進一步定製化系統。想要安裝 gnome插件可以訪問:https: ...
  • 1. CGroup(控制群組)、slice(切片)、scop、service 控制群組(control group)是linux kernel的一項功能, 該功能允許linux對RHEL7中systemd下掛載的所有進程按類別分組, 從而使得系統管理員可以按需對linux的系統資源(如CPU時間、系 ...
  • segmentfault對應博文頁面:https://segmentfault.com/a/1190000016300215 最近一直在閱讀ovs的源碼,看到用戶態代碼的時候,需要對用戶態的代碼進行調試,一開始想直接使用linux中的GDB進行調試,但是ovs的工程太過於複雜,從網上找了些文章,發現 ...
  • 訪問 https://extensions.gnome.org/ 網站(註意:需要安裝 chrome-gnome-shell rpm 包來使得系統能與web進行通信) 安裝插件: notifications alert 消息提醒 permanent notification 消息提醒,不消失 在用戶 ...
  • 在11上安裝mysql yum install mariadb mariadb-server -y 在mysql的配置文件my.cnf中加入 init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAM ...
  • 第1章 NFS介紹 1.1 NFS基本概述 NFS(Network File System)網路文件系統 主要功能是通過區域網絡讓不同的主機系統之間可以共用文件或目錄。 NFS(Network File System)網路文件系統 NFS系統和Windows網路共用、網路驅動器類似, 只不過wind ...
  • 快速啟動是首先在Windows 8中實現並延續到Windows 10的功能,可在啟動PC時提供更快的啟動時間。它是一個方便的功能,也是大多數人在不知情的情況下使用的功能,但還有一些功能會在他們掌握新PC時立即禁用它。 什麼是快速啟動? Windows PC通常以多種高級配置和電源介面(ACPI)電源 ...
  • 在Microsoft Edge中,當您打開多個選項卡時,瀏覽器將顯示“您要關閉所有選項卡嗎?” 警告,以防止您意外關閉重要標簽。 通常,在沒有第二個想法的情況下,您會立即禁用此功能,檢查提示中的“始終關閉所有選項卡”選項。唯一需要註意的是,Edge不包含重新啟用消息的設置,如果以後,您會發現它是您需 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...