ROS机器人开发项目实战 课件 第7、8章 智能机器人系统设计、智能机器人SLAM与自主导航_第1页
ROS机器人开发项目实战 课件 第7、8章 智能机器人系统设计、智能机器人SLAM与自主导航_第2页
ROS机器人开发项目实战 课件 第7、8章 智能机器人系统设计、智能机器人SLAM与自主导航_第3页
ROS机器人开发项目实战 课件 第7、8章 智能机器人系统设计、智能机器人SLAM与自主导航_第4页
ROS机器人开发项目实战 课件 第7、8章 智能机器人系统设计、智能机器人SLAM与自主导航_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

第7章智能机器人系统设计·

智能机器人系统组成·

智能机器人系统搭建·

智能机器人传感器智能机器人系统组成按照智能机器人组成部分的功能划分,智能机器人可分为机械、传感、控制三大部分,这三大部分可进一步细

分为驱动系统、机械结构系统、感知系统、机器人-环

境交互系统、人机交互系统、控制系统六个子系统激光雷达人一机交互系统控制系统驱动系统机械结构系统机器人一环境交互系统TMU

块12V电池电源输出接口小车电源总开关,充电时也需要打开

系统组成感

系统组成硬件清单底盘机械结构:主体使用亚克力板拼装,由两个直流电机带动主动轮以及保持平衡的一个万向轮实现机器人行走。驱动系统:电池、

Arduinomega2560以及电机驱动模块;控制系统:树莓派4B;传感系统:编码器、单线激光雷达、相机;其中,执行机构与驱动系统构成了智能机器人底盘,激光雷达和相机用于实现机器人—环境交互功能。智能机器人系统搭建

上位机环境感知、动态决策与规划、行为控制与执行等多功能于一体的综合系统。树莓派4B

下位机机器人运动控制、底层传感器输入。Arduino

Mega2560/NanoGoal确定目标AMCL定位PathPlanner

路径规划move_base

移动指令/cmd_vellodom

智能机器人硬件架构1.

接收上位机的/cmd_vel指令2.将Twist数据转换为对应电机的PWM控制值3.采集测速码盘数据并发送到上位机BaseControl

底盘控制MontorSpeeds

测速数据上报1.提前建好SLAM

地图,启动导航相关模块2.设定初识位姿,并指定目的地3.move_base给出/cmd_vel底盘指令4.监听/odom,

修正当前定位上位机安装Ubuntu

系统和ROS系统ros_arduino_bridge下位机串口通信上位机(ubuntu)move_basebase_controlpoll(定频)subIodom

、Mpubget_encoder_counts

位置计算

上位机-下位机通讯方案pub/cmd_velsubdrive电机速度计算write(串口)单片机move

encoderread(串口)单选题

1分下面不属于Arduino控制器的是()A

NanoB

UnoStm32Mega

2560提交设置

执行机构方案霍尔直流减速电机

电机支撑架多款电机通用型耐用不生锈

强度高两轮差速方式进行驱动适用于:755/795/895/997/1800等电机尺寸方式:径向22极应用范围:磁编码器

电机霍尔器件霍尔编码器磁环电机线+电机线-辅

路→光敏装置码盘光源一外壳

执行机构方案编码器计数原理知乎@码农爱学习霍尔编码器光电编码器如何理解这个公式:Mo/C

即统计时间内有多少个编码器脉冲,再除以统计时间To,即

1s(单位时间)内转了多少圈例如:统计时间To

3s,

在3s内测得的脉冲数M₀为60,而编码器的单圈脉冲数C为20,则转

速n=60/(20*3)=1

圈每秒

执行机构方案编码器计数原理只利用通道A的上升沿则一圈的计数值-码盘的栅格数利用通道A的上升沿和下降沿

实现编码器2倍频利用通道A+通道B的上升沿和下降沿

实现编码器4倍频通道A通道B则:转速n(圈/秒)的计算公式为:X1X2X4累计

脉冲

执行机构方案智能机器人轮胎(直径65mm)智能机器人设计过程中,如果要求小车的位置控制较高,一般选

(

)霍尔编码器光电编码器不采用编码器设置提交单选题

1分ATmega2560(SPI)MOSI(SPI)SSuse

for

digitalground

遥控接口

5V

电源输出(供舵机)外接电源输入接口(7-15V)Mega

2560USB

interface驱动系统方案电机驱动模块超声波接口四

路LED

出(低电平使能)2560扩展板2.54mm*6pin

接右侧电机2.54mm*6pin

接左侧电机USBtocomputer电源显示模块接口霍尔码电机排线接口analogground电源子系统智能机器人的动力来源于电力,一般使用电池

作为动力,为机器人的执行机构、传感器系统、

控制系统提供电能。但是机器人搭载的这些系

统的电源电压要求不同,有些需要12V电源、有些需要5V电源,为保证机器人系统的稳定性,

还要针对电源做保护、滤波等处理。电源子系

统就是为整个机器人提供稳定的电源需求,常

用的电源管理芯片主要为LM2596系列

。电池:4节2600Mah18650

锂电池(左);电池盒:4节18650电池盒(左);树莓派电源:12V-5V降压模块(右);

电源供电系统方案L298N输出A

输出B板载5V使能驱动芯片直流电机的控制可以分为两个部分,第一部分是与电

机直接相连的电机驱动模块,可以将上层下达的控制

信号转换成电机需要的电源信号;第二部分是电机控制模块,接收控制系统的运动指令,

实现对电机的闭环驱动控制。对于机器人常采用的直

流电机驱动模块主要有L298N

、TB6612

、A4950T等直流电机旋转方式IN1IN2IN3IN4调速PWM信号ENAENBM1正转高低高///反转低高//高/停止低低//高/M2正转//高低/高反转//低高/高停止//低低/高通

B

使

逻辑输入

A使

5

V

供电供

G

N

D亿

V

驱动系统方案

上位机控制系统方案智能机器人选择树莓派4B作为上位机平台,在树莓派中搭载Ubuntu系统和运行ROS

。树莓派主

要实现与智能机器人底控板Arduino的相互通信、外部传感器(摄像头、激光雷达等)的数据采集、

其它外设连接等控制系统的基础功能,PC

端运行需要图形化显示及高性能处理的上层ROS功能包

(图像处理、SLAM

导航等)。GPIO40-PIN引脚

PoE

HAT

脚2.4/5Ghz

蓝牙5.0

千兆以太网USB-C

5V/3A供电端口Micro

HDMI

(支持4K分辨率

的双屏显示)音频端口双

道MIPI

CSI

摄像头端口Micro

SD卡

槽双

道MIPI

DSI显示端口USB3.0×2USB2.0×2

远程通讯及控制方案为方便后续开发,需要使用远程连接方式访问树莓派,树莓派可以使用的远程连接方式有很多,如SSH,VNC,Nomachine

等。Nomachine

下载地址为https://downloads./Windows端界面

无线手柄无线手柄可以连接NVIDIA

Jetson、树莓派、PC等设备,相比键盘操作更加灵活,方便机器人控

制、建图、采集数据等操作,本节介绍亚博智能公司的一款ROS无线手柄的使用方法L1键L2键

选择键

开始键方向键---

功能键右摇杆---游戏菜单键左摇杆USB接口R1键R2键多选题

2分常用的直流电机驱动芯片有()A

TB6612B

A4950TC

L298N NSD8389提交设置智能机器人传感器

传感系统—激光雷达激光雷达是现今机器人尤其是无人车领域最重要、最关键也是最常见的传感器之一,是机器人感知外界的一种重要手段。激光雷达工作原理发射魄距离光速d=C思岚A1激光雷达飞行时间接收端

传感系统—相机相机是机器人系统中另一个比较重要的传感器,与雷达类似,相机也是机器人感知外界环境的重要手段之一,并且随着机器视觉、无人驾驶等技术的兴起,相机在物体识别、行为识别、SLAM

中等都有着广泛的应用。根据工作原理的差异可以将相机大致划分成三类:单目相机、双目相机与深度相机。

传感系统—IMU

(陀螺仪模块)IMU全称为惯性测量单元,可以通过测量物体在三维空间内的加速度和角速度,来获取物体的运动姿态和位置信息。IMU

模块通常由三个部分组成:加速度计、陀螺仪和磁力计。这些传感器可

以通过处理器进行数据处理和滤波,从而获得更加准确的数据。MPU-6050IMUSCL

-12CClock—

→→SDA-12C

Data—

→XDA-ExtI2CData

—→XCL-Ext

I2C

Clock

→AD0-I2C

Address

Bit→INT-Interrupt

Out

—→

传感系统一超声波传感器超声波传感器是一种利用超声波来检测物体位置、距离或速度的传感设备。其工作原理是发射高频声波(通常超过20kHz),然后接收反射回来的声波。根据声波传播的时间差或频率变化,可以

计算出目标物体的距离、位置或移动速度。超声波脉冲回波VddVss超声波传感器的运作原理

CSDN

@番茄老夫子

单选题

1分常用激光雷达一般不使用的线束为()A1B

2C

1632设置提交智能机器人开发过程中,

一般不需要的硬件为()A

单片机B

驱动芯片C

逆变器马达提交设置单选题

1分THANKS感谢观看第8章智能机器人SLAM与自主导航·SLAM

原理简介·

常用二维SLAM

功能包的使用方法·Navigation导航框架·

自主导航案例SLAM

原理简介

SLAM

原理简介SLAM

,

全称simultaneouslocalization

andmapping,即时定位与地图构建。即机器人自

身位置不确定的情况下,在完全未知的环境中创建地图,同时利用地图进行自主定位和导航。

定位,在地图上估测机器人的位置坐标,或者用一个问题来表示:我在哪?地图构建,这一过程是根据传感器的结果来构建一张地图或者是修正当前地图,同时将结

果提供给定位算法作为先验地图。传感器测量一致性检查定位

SLAM

原理简介地图构建地图输出SLAM的基本过程定位结果输出

SLAM

原理简介机器人必须安装激光雷达等测距设备,可以获取环境深度信息

SLAM原理简介angle_min:可检测范围的起始角度;angle_max:可检测范围的终止角度,与angle_min

组成激光雷达的可检测范围;angle_increment:相邻数据帧之间的角度步长;time_increment:采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行~rosmsg

showsensor_msgs/LaserScanstd_msgs/Headerheadertime

stampstring

frame_idangle_maxangle_incrementtime_incrementscan_timerange_min补

使

;scan_time:

采集一帧数据所需要的时间;

range_min:最近可检测深度的阈值;range_max:最远可检测深度的阈值;

ranges:

据的

SLAM

原理简介uint32seqpose:

机器人当前位置坐标,包括机器人的XYZ三轴位置与方向参数,以及用于校正误差的协方差矩阵。geometry_msgs/Point

positiongeometry_msgs/Quaternionorientationfloat64

zgeometry_msgs/Vector3

angular

float64yfloa

6l

[

]c

variancenav_msgs/Odometryoz36t644oatftwist:机器人当前的运动状态,包括XYZ三轴的线速度与角速度,以及用于校正误差的协方差矩阵。float64常用二维SLAM

功能包的使用方法

常用二维SLAM功能包及使用方法gmapping功能包

即时定位与地图建模基于激光雷达需要机器人提供里程计信息OpenSlam开源算法输

地图

:nav_msgs/OccupancyGrid。Rao-Blackwellized粒子滤波算法二维栅格地图(gmapping)IMU信息gmapping功能包的总体框架栅格地图里程计信息深度信息常用二维SLAM功能包及使用方法安装gmapping

sudo

apt-get

install

ros-noetic-gmapping名称类型描述Topic订阅tftf/tfMessage用于激光雷达坐标系,基坐标系,

里程计坐标系之间的变换scansensor_msgs/LaserScan激光雷达扫描数据Topic发布map_metadatanav_msgs/MapMetaData发布地图Meta数据mapnav_msgs/OccupancyGrid发布地图栅格数据~entropystd_msgs/Float64发布机器人姿态分布熵的估计Servicedynamic_mapnav_msgs/GetMap获取地图数据TF变换描述必需的TF变换<scan

frame>→base_link激光雷达坐标系与基坐标系之间的变换,

一般由robotstatepublisher或stac

transformpublisher发布base_link→odom基坐标系与里程计坐标系之间的变换,

一般由里程计节

点发布发布的TF变换map→odom地图坐标系与机器人里程计坐标系之间的变换,估计机

器人在地图中的位姿gmapping功能包中的TF变换常用二维SLAM

功能包及使用方法<launch><arg

name="scan_topic"

default

="scan"/>pkg

="gmapping"type

="slam_gmapping"name="slam_gmapping"output

="screen"clear_params

="true">_

_a

eterv

d

"

="5.0"

/><1--SetmaxUrange<actual

maximumrange

of

the

Laser

--><param

name="maxRange"value

="5.0"/><param

name

="maxUrange"value="4.5"/><paramname=

"sigma"

value

=

0.05"/>参数说明可参考:http://wiki.ros.org/gmappingue/>almvo"ol"inlupdateame"vufrapom"m"odparamnameparam

name<param

name="kernelsize"value="1"/><paramname

="1step"

value

="0.05#

/>

ts

erpa"tio

l

a

.05"=

>5"/>e0u"vesanv""aramnamearamname<param

name

="Isigma"value

="0.075"/><param

name="ogain"value="3.0"

/><param

name="Iskip"value="0"

/>name="srr"value="0.01"/>"”

..

配置gmapping节点//010200""ueuellvavastrsrt""param

nameparam

name<param

name

="stt"

value

="0.02"

/>

e"

v

e=

0.5

3

/>

mbot_navigation/launch/gmapping.launch4"valualueangularUpdalinearUpdate""param

nameparamnamename="temporalUpdate"value

="-1.0"/><paramname="resampleThreshold"value

="0.5"/><param

name="particles"value

="80"

/><param

name="xmin"value

="-1.0"/><param

name="ymin"value

="-1.0"

/><paramname="xmax"value

="1.0"/><param

name

="ymax"value

="1.0"

/><param

name="delta"

value="0.05"

/><paramname

="1lsamplerange"value

="0.01"/><param

name="1lsamplestep"

value

="0.01"/><param

name="lasamplerange"value

="0.005"

/><param

name

="lasamplestep"value

="0.005"/>from

="scan"to

="S(arg

scan_topic)"/>

常用二维SLAM功能包及使用方法启动gmapping

演示roslaunch

mybot_gazebo

view_mybot_with_laser_gazebo.launchroslaunch

mybot_navigation

gmapping_demo.launchroslaunchmybot_teleopmybot_teleop.launch栅格地图即时定位与地图建模(hector)深度信息hector_slam

功能包的总体框架hector_slam功能包基于激光雷达高斯牛顿方法二维栅格地图不需要里程计数据输出地图话题:nav_msgs/OccupancyGrid

常用二维SLAM功能包及使用方法名称类型描述Topic订阅scansensor_msgs/LaserScan激光雷达扫描的深度数据syscommandstd_msgs/String系统命令。如果字符串等于“reset”,

地图和机器人姿态重置为初始状态Topic发布map_metadatanav_msgs/MapMetaData发布地图Meta数据mapnav_msgs/OccupancyGrid发布地图栅格数据slam_out_posegeometry_msgs/PoseStamped估计的机器人位姿(没有协方差)poseupdategeometry_msgs/PoseWithCovarianceStamped估计的机器人位姿(具有高斯估计的不

确定性)Servicedynamic_mapnav_msgs/GetMap获取地图数据hector功能包中的

TF变换TF变换描述必需的TF变换<scan

frame>→base_link激光雷达坐标系与基坐标系之间的变换,

一般由robot_state_publisher或者static_transform_publisher发布发布的TF变换map→odom地图坐标系与机器人里程计坐标系之间的变换,估计机器人在地图

中的位姿常用二维SLAM功能包及使用方法安

装hector_slam

git

clone

https://github.com/tu-darmstadt-ros-pkg/hector_slam.gitgmappinghectorrtabmapcartographer提交单选题

1分下面不属于二维SLAM

的是(

)ABC设置Navigation导航框架Navigation导航框架Navigation

是机器人最基本的功能之一,ROS

为机器人提供了一整套导航的解决方案,包括全局与局部路径规划、代价地图、异常行为恢复和地图服务器等。R.0.B.0.T.

ComicsGoalAMCLPathPlannermove_baseIcmd_vellodomJOR6ECHAM2009"HIS

PATH-PLANNING

MAY

BESUB-0PTIMAL,BUT

IT's

GOT

FLAIR."BaseControllerMotorSpeeds

Navigation导航框架Navigation的输入是开发者设置的导航目标点坐标,输出是机器人的运动控制指令。NavigationStackSetupmap_serverglobal_costmap"move_base_simple/goal"geometry_msgs/PoseStampedmove_baseglobal_planner"cmd_vel"geometry_msgs/Twistbase

controllerprovided

nodeoptionalprovided

node

platformspecific

nodesensor

topicssensor_msgs/LaserScansensor_msgs/PointCloudlocal_plannerlocal_costmap"odom"nav_msgs/OdometryROS中的导航功能框架internalnav_msgs/Path"/tf"tf/tfMessagerecovery_behaviorssensor

transformsodometry

sourcesensor

sourcesamcl全局路径规划(globalplanner)1)全局最优路径规划2)Dijkstra

或A*算法本地实时规划(localplanner)1)规划机器人每个周期内的线速度、角速度,使之尽

量符合全局最优路径。2)实时避障3)TrajectoryRollout和DynamicWindowApproaches算法4)搜索躲避和行进的多条路经,综合各评价标准

选取最优路径

导航框架中的关键功能包Navigation

的输入是开发者设置的导航目标点坐标,输出是机器人的运动控制指令。internalnav_msgs/Pathlocal_plannernav_core::BaseLocalPlannerrecovery_behaviorsnav_core::RecoveryBehaviorlocal_costmap"move_base_simple/goal"geometry_msgs/PoseStampedmove_baseglobal_plannernav_core::BaseGlobalPlanner

geometry

msS

i

s

_"ore

plugin

interfacenav_coreinterfacesglobal_costmapcmd_vel"

导航框架中的关键功能包什么是动作(action)一种问答通信机制;带有连续反馈;可以在任务过程中止运行;基于ROS

的消息机制实现。goal:发布任务目标;cancel:

请求取消任务;status:

通知客户端当前的状态;feedback:

周期反馈任务运行的监控数据;result:

向客户端发送任务的执行结果,只发布一次。客户端应用用户代码函数调用回调函数Topicsgoalcancelstatusresultfeedback服务器端应用用户代码Action的接口回调函数函数调用Action

客户端Action

服务器ROSAction

服务器Action

客户端名称类型描述Action订阅move_base/goalmove_base_msgs/MoveBaseActionGoalmove_base的运动规划目标move_base/cancelactionlib_msgs/GoallD取消特定目标的请求Action发布move_base/feedbackmove_base_msgs/MoveBaseActionFeedback反馈信息,含有机器人底盘的坐标move_base/statusactionlib_msgs/GoalStatusArray发送到move_base的目标状态信息move_base/resultmove_base_msgs/MoveBaseActionResult此处move_base操作的结果为空Topic订阅move_base_simple/goalgeometry_msgs/PoseStamped为不需要追踪目标执行状态的用户,提供一个非action接口Topic发布cmd_velgeometry_msgs/Twist输出到机器人底盘的速度命令Service~make_plannav_msgs/GetPlan允许用户从move_base获取给定目标的路径

规划,但不会执行该路径规划~clear_unknown_spacestd_srvs/Empty允许用户直接清除机器人周围的未知空间。适合于costmap停止很长时间后,在一个全

新环境中重新启动时使用~clear_costmapsstd_srvs/Empty允许用户命令move_base节点清除costmap中的障碍。这可能会导致机器人撞上障碍物,

请谨慎使用move_base

功能包中的话题和服务

导航框架中的关键功能包导航框架中的关键功能包mbot_navigation)/config/mbot/costmap_common_pazams.yaml”command="1oad"ns="global_costmap"1>mbot_navigation)/config/mbot/costmap_common

params.yaml”command="1oad"ns="1ocaL_costmap"1>mbot_navigation)/config/mbot/global_costmap_params.yaml"command="Ioad"

/>mbot_navigation)/config/mbot/move_base_params.yaml"

command="1oad"/>mbot_navigation)/config/mbot/dwa_local_planner_pazams.yaml"command="1oad"/><launch><node

pkg="move_base"type="move_base"respawn="false"name="move_base"output="screen"clear_params

="tzue">

<param

name="base_local_plannez"value="dwa_local_planner/DWAPlannerROS"/>配置move_base节点mbot_navigation/launch/move_base.launch<rosparam<rosparam<rosparam

<rosparam<rosparam<rosparam</node></launch>mbot_navigation)/config/mbot/local_costmap_params.yaml"

command="1oad"

/>file=

"s(findfile=s(findfile

="$(findfile="$(findfile=

"$(find参数说明请参考:http://wiki.ros.org/move

baseglobal_costmap_params.yamlbase_local_params.yamldwa_local_params.yamllocal_costmap_params.yamlcostmap_common

params.yamlmove_base_

params.yamlfile="$(find名称类型描述订阅的

话题/scansensor_msgs/LaserScan激光雷达数据/tftf/tfMessage坐标变换/initialposegeometry_msgs/PoseWithCovarianceStamped初始化粒子滤波器的均值和协方差/mapnav_msgs/OccupancyGrid地图信息发布的

话题/amcl_posegeometry_msgs/PoseWithCovarianceStamped机器人再地图中的位姿估计/particlecloudpointgeometry_msgs/PoseArray滤波器估计的位置/tftf/tfMessage发布从odom到map的转换关系服务global_localizationstd_srvs/Empty初始化全局定位,所有粒子完全随

机发布在地图上的空闲区域request_nomotion_updatestd_srvs/Empty手动更新粒子并发布更新后的粒子服务调

用static_mapnav_msgs/GetMapamcl调用此服务接收地图,用以基

于激光扫描的定位1)蒙特卡罗定位方法2)二维环境定位3)针对已有地图使用粒子滤波器

跟踪一个机器人的姿态

导航框架中的关键功能包AMCL功能包中的话题和服务

导航框架中的关键功能包1)里程计定位:只通过里程计的数据

来处理/base和/odom

之间的TF转换;2)amcl

定位:可以估算机器人在地图

坐标系/map

下的位姿信息,提供/base、/odom、/map

之间的TF变换。航迹推测平移旋转/odom_frame里程计定位amcl定位/map_frame/odom_frame里程

漂移平移

旋转位置估算AMCL修正误差流程航迹推测平移

旋转/base_frame/base_frame<paramname="min_paxticles"<paramname="max_paxticles"<param

name="tzanaform_tolerance"<param

nam

e="recovezy_alpha_alow"value

="500"/>value=

"3000"/>value

=

"0.02"

/>value

="0.20"

/>value

=

"0.20"/>value="1"/value=

"0.5"/>value

=

"0.00"

/>value

="0.00"

/><remapfrom="scan"<param

name="odom_mode1_type"<param

name=

"odom_alpha¹"<param

name="odom_alpha2"</node><launch><argname="acan_topic"default="

acan"/><argname=

"ini

tialpose_x"default

="0.0"/><argname="initial_pose_y"

default

温馨提示

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

评论

0/150

提交评论