4-2 完成线控底盘通信功能包的调试_第1页
4-2 完成线控底盘通信功能包的调试_第2页
4-2 完成线控底盘通信功能包的调试_第3页
4-2 完成线控底盘通信功能包的调试_第4页
4-2 完成线控底盘通信功能包的调试_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《ROS原理与技术应用》能力模块四掌握线控底盘的调试方法

任务一实现自动驾驶系统的远程登录导入随着自动驾驶技术的不断发展,在L3级别的自动驾驶面临的最大的挑战是循序双手暂时离开方向盘,而更高级别的自动驾驶则需要达到解放双手双脚以及眼睛的效果,完全依靠感知层、决策层和执行层来控制汽车自动驾驶。目录

CONTENTS0102串口通信的定义串口通信在智慧猫上的应用03ros_arduino_bridge通信包的文件结构新授一、串口通信的定义串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。

串口通信(SerialCommunications)是指指外设和计算机间,通过数据信号线、地线、控制线等,按位(bit)发送和接收字节,进行传输数据的一种通讯方式。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。下面将对波特率、数据位、停止位和奇偶校验这几个概念进行简单介绍一、串口通信的定义1波特率这是一个衡量字符传输速率的参数,配置了波特率就知道了传输每个位(bit)所需要的时间。波特率指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。波特率不能随意设定,因为通信双方需要事先设定先沟通的波特率才能通信成功,否则接收不到通信内容。一般最常见的波特率是9600或115200(低端单片机如51常用9600,高端单片机和嵌入式SOC常用115200)。2数据位这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际真正有效数据位数是可以选择的,标准的值是6~8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。一、串口通信的定义3停止位用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。4奇偶校验位在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。一、串口通信的定义实际的串口通讯的数据包传输过程是发送设备通过自身的TXD接口传输到接收设备的RXD接口。其数据包内容为:起始位、数据位、校验位以及停止位组成,通信双方的数据包格式需要约定一致才能正常的收发数据,数据包的具体构成如图二、串口通信在智慧猫上的应用当我们想要具体利用决策单元控制智慧猫的底盘之前,我们首先需要了解上位机与下位机的概念。上位机是指可以直接发出操控命令的计算机,通常是PC、hostcomputer、mastercomputer、决策模块。下位机是指能够直接控制设备运作、获取设备状态信息的计算机,一般是指PLC(可编程逻辑控制器,ProgrammableLogicController)、单片机、slavecomputer等。上位机发出命令传递给下位机,下位机再根据命令直接控制相应设备。下位机读取设备状态数据反馈给上位机。二、串口通信在智慧猫上的应用在智慧猫线控底盘通信中上下位机分别是串口接收决策单元和线控底盘控制单元。想实现智慧主控制器与底盘控制器的通信,步骤大致分为以下三步:Ø将行云桥智慧猫自带的HDMI接口跟桌面显示器相连,USB接口连接无线键鼠接收器。Ø打开电源,进入到Ubuntu系统。Ø启动ROS与arduino的通信节点。其中智慧猫的线控底盘控制单元(下位机)通过串口接收决策单元(上位机)发送过来的底盘行驶的线速度和角速度,同时,下位机也通过串口向上位机发送四个驱动电机的实时转速。

智慧猫的上位机采用JetsonNano作为主控模块(决策模块),然后通过串口连接至底盘的控制器(ArduinoMega2560)。上位机JetsonNano上已经安装好了ROS系统,并通过ros_arduino_bridge通信功能包实现与下位机arduino之间的串行通信。三、ros_arduino_bridge通信包的文件结构os_arduino_bridge功能包集包括了Arduino库(ROSArduinoBridge)和一系列用来控制基于Arduino的ROS功能包,它使用的是标准的ROS消息和服务,且不依赖于ROS串口。ros_arduino_bridge包含了一个底盘控制器(basecontroller),该底盘控制器是用来控制一个两轮差速驱动的机器人,可以接受ROSTwist格式的消息和发布里程计数据到主控电脑(上位机)。目前ros_arduino_bridge功能包支持的电机驱动板有PololuVNH5019双路电机控制板和PololuMC33926双路电机控制板。除了默认支持的控制板,我们也可以通过修改代码来扩充其他型号的电机驱动板。该软件包处理支持驱动电机,还有一些其他功能:Ø直接支持各种超声波传感器(如:HY-SRF05超声波模块)和Sharp红外测距传感器(如:GP2D12)Ø可以从通用的模拟和数字信号的传感器读取数据Ø可以直接控制数字信息信号的输出Ø能够支出PWM伺服舵机控制三、ros_arduino_bridge通信包的文件结构接下来,我们来介绍一下ros_arduino_bridge功能包集的整体文件结构。总的来说,ros_arduino_bridge功能包包括四大部分:ros_arduino_bridge模块、ros_arduino_firmware模块、ros_arduino_msgs模块以及ros_arduino_python模块。具体的内部文件结构如图三、ros_arduino_bridge通信包的文件结构其中ros_arduino_msgs文件夹内部包含了ROS使用的各类信息格式和各类服务。内部的msg文件夹内容主要用于定义消息,srv文件夹内容用于定义服务。具体包含的功能文件如图三、ros_arduino_bridge通信包的文件结构其中ros_arduino_python文件夹内部包含了上位机中需要运行的主要代码,由pythonb编写。内部结构为config、launch、nodes和src/ros_arduino_python文件夹。一一对应的具体功能文件展示如图三、ros_arduino_bridge通信包的文件结构在实现实现线控底盘主机与底层控制板Arduino的通信之前,需要确认线控底盘的主机通信包已安装,必须先启动底盘通信节点,相关命令如下(1)远程登录到线控底盘主机侧:(2)启动底盘通信节点:正确启动后界面显示如图任务实施一、任务准备(一)软件、硬件准备(二)安全要求及注意事项1.安装好ROS系统的桌面电脑一台;2.烧录好智慧猫线控底盘控制系统程序的ArduinoMega2560控制板一块;11.检查桌面电脑ROS系统是否已经安装好;22.检查Arduino板的程序是否已经烧录完成。

检查桌面电脑ROS系统是否已安装好实施步骤有:二、实施步骤首先需要完成工作空间的创建01编译与环境配置02配置线控底盘的参数03启动底盘通信节点04二、实施步骤(一)创建工作空间并初始化

步骤1:首先需要完成工作空间的创建

(1)在home/inwinic目录下创建多级文件夹目录:(2)初始化工作空间:二、实施步骤(一)创建工作空间并初始化

步骤2:编译与环境配置

(2)编译与环境配置将配套提供的ros_arduino_bridge功能包拷贝到文件夹目录/home/inwinic/inwinic_ws/src下,并完成编译和环境的配置。编译的指令如下:环境的配置指令如下:二、实施步骤(一)创建工作空间并初始化

步骤3:配置线控底盘的参数

将Arduino控制板连接至桌面电脑的USB端口,如果是在桌面电脑的虚拟机上安装的ROS,需要在虚拟机窗口栏中选择“虚拟机”->“可移动设备”,在“可移动设备”列表中找到arduino对应的设备并连接。具体参数的配置步骤如下:(1)查询arduino控制板与虚拟机的连接端口号及权限设置:首先查询端口号:显示如图所示:二、实施步骤(一)创建工作空间并初始化

步骤3:配置线控底盘的参数

常见设备连接后,端口显示一般为ttyUSB*或ttyACM*,“*”代表数字“0,1,2……”,如果不确定,可以在Arduino控制板连接至上位机控制板前查询下端口号,然后在Arduino控制板连接至上位机控制板后,再查询下端口号,新增加的端口号即为Arduino控制板的连接端口。在查询到端口号为/dev/ttyUSB0后,可以通过如下指令查询端口的权限:指令执行后,显示如图所示:红色标注部分表示端口的权限,详情如表所示二、实施步骤(一)创建工作空间并初始化

步骤3:配置线控底盘的参数

端口在赋予权限的时候是通过数字来实现的,每组权限rwx分别对应3位二进制数,然后转换成十进制数后的对应关系如表所示:为了实现上位机和下位机之间通过连接端口传输数据,我们将所有者的权限、同组用户权限、其他用户权限都为rwx,即在权限赋值时设置权限值为777即可。指令如下:指令执行后,端口所有的权限均为rwx。二、实施步骤(一)创建工作空间并初始化

步骤3:配置线控底盘的参数

(2)修改通信节点的启动参数:打开文件夹目录ros_arduino_bridge/ros_arduino_python/config,然后打开my_arduino_params.yaml文件(如果没有该文件,可以复制arduino_params.yaml文件,然后修改文件名为my_arduino_params.yaml),并进行参数的修改,具体操作指令如下:二、实施步骤(一)创建工作空间并初始化

步骤3:配置线控底盘的参数

打开my_arduino_params.yaml参数后,参考如下内容来修改my_arduino_params.yaml文件:(行前面如果包含“#”,代表该行设定的参数无效):特别需要指出的是这个参数设置文件内,编码器分辨率(encoder_resolu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论