玩转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

相关文章
相关标签/搜索