智能机器人技术 课件 项目10-17 智能机器人的化实为虚 -智能机器人自主导航_第1页
智能机器人技术 课件 项目10-17 智能机器人的化实为虚 -智能机器人自主导航_第2页
智能机器人技术 课件 项目10-17 智能机器人的化实为虚 -智能机器人自主导航_第3页
智能机器人技术 课件 项目10-17 智能机器人的化实为虚 -智能机器人自主导航_第4页
智能机器人技术 课件 项目10-17 智能机器人的化实为虚 -智能机器人自主导航_第5页
已阅读5页,还剩340页未读 继续免费阅读

下载本文档

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

文档简介

项目10:智能机器人的化实为虚《智能机器人技术》课程任务要求知识导入任务实施任务评价使用URDF创建智能机器人模型,并在RVIZ中显示。任务要求知识导入任务实施任务评价RVIZ的基本组成机器人系统中存在大量数据,比如图像数据中0~255的RGB值。但是这种数据形态的值往往不利于开发者感受数据所描述的内容,所以常常需要将数据可视化显示,例如机器人模型的可视化、图像数据的可视化、地图数据的可视化等。ROS针对机器人系统的可视化需求,为用户提供了一款显示多种数据的三维可视化平台--RVIZ。任务要求知识导入任务实施任务评价RVIZ的基本组成RVIZ是一款三维可视化工具,很好地兼容了各种基于ROS软件框架的机器人平台。在RVIZ中,可以使用XML对机器人、周围物体等任何实物进行尺寸、质量、位置、材质、关节等属性的描述,并且在界面中呈现出来。同时,RVIZ可以通过图形化方式,实时显示机器人传感器的信息、机器人的运动状态、周围环境的变化等。任务要求知识导入任务实施任务评价RVIZ的基本组成总而言之,RVIZ可以帮助开发者实现所有可监测信息的图形化显示,开发者也可以在RVIZ的控制界面下,通过按钮、滑动条、数值等方式控制机器人的行为。任务要求知识导入任务实施任务评价RVIZ的基本组成RVIZ已经集成在桌面完整版的ROS中,如果已经成功安装桌面完整版的ROS,可以直接跳过这一步骤,否则,请使用如下命令进行安装:$sudoapt-getinstallros-kinetic-rviz安装完成后,在终端中分别运行如下命令即可启动ROS和rviz平台:$roscore$rosrunrvizrviz任务要求知识导入任务实施任务评价工具栏显示项列表3D视图区视角设置区时间显示区任务要求知识导入任务实施任务评价RVIZ的基本组成RVIZ主界面主要包括以下几个部分:I:工具栏,用于提供视角控制、目标设置、发布地点等工具II:显示项列表,用于显示当前选择的显示插件,可以配置每个插件的属性III:3D视图区,用于可视化显示数据,目前没有任何数据,所以显示黑色IV:视角设置区,用于选择多种观测视角V:时间显示区,用于显示当前的系统时间和ROS时间任务要求知识导入任务实施任务评价RVIZ的操作在使用RVIZ实现数据可视化的步骤主要有以下几个步骤:(1)设定相应的坐标系(2)指定需要显示的数据源,并完成相应的显示属性和状态的设置,选定相应的显示类型(3)配置相关选项,主要包括“Display”和相关属性、“Tool”中的相关属性和“Camera”类型以及视角任务要求知识导入任务实施任务评价RVIZ的操作在3D视图区中主要涉及2个坐标系:TheFixedFrame(固定坐标系):该坐标系相当于绝对坐标系,必须取相对世界坐标系静止的物体作为原点建立坐标TheTargetFrame(目标坐标系):用来提供基于观察者视角下的坐标系,如果取map作为TargetFrame,可以看到机器人在map中运动,如果取机器人作为TargetFrame,这时看到的画面将以机器人作为第一视角,呈现周围环境相对于机器人的运动任务要求知识导入任务实施任务评价RVIZ的操作启动rviz界面后,首先要对GlobalOptions进行设置,GlobalOptions里面的参数是一些全局显示相关的参数。其中的FixedFrame参数是全局显示区域依托的坐标系。任务要求知识导入任务实施任务评价RVIZ的操作进行数据可视化的前提当然是要有数据。假设需要可视化的数据以对应的消息类型发布,我们在RVIZ中使用相应的插件订阅该消息即可实现显示。首先,需要添加显示数据的插件。点击RVIZ界面左侧下方的“Add”按钮,RVIZ会将默认支持的所有数据类型的显示插件罗列出来。任务要求知识导入任务实施任务评价RVIZ的操作在图中列表选择需要的数据类型插件,然后在“DisplayName”文本框中填入一个唯一的名称,用来识别显示的数据。任务要求知识导入任务实施任务评价RVIZ的操作添加完成后,rviz左侧的Displays中会列出已经添加的显示插件;点击插件列表前的加号,可以打开一个属性列表,根据需求设置属性。如果显示有问题,请检查属性区域的“Status”状态。Status有四种状态:OK、Warning、Error和Disabled,如果显示的状态不是OK,那么请查看错误信息,并仔细检查数据发布是否正常。任务要求知识导入任务实施任务评价RVIZ的操作在RVIZ中的viewpanel中提供了Orbit、FPS(First-Person)和Top-downOrthographic(自上而下正交)、三种摄像头显示方式,在该panel中可以通过下拉菜单进行选择。任务要求知识导入任务实施任务评价RVIZ的操作(1)orbit方式:轨道相机只是围绕焦点旋转,同时始终注视着这一点。当移动相机时,焦点可视化为小圆盘:鼠标控制方式:鼠标左键:单击并拖动以围绕焦点旋转鼠标中键:单击并拖动以移动摄像机向上和向右矢量形成的平面中的焦点。移动的距离取决于焦点-如果焦点上有一个物体,并且单击其顶部,它将保持在鼠标下方鼠标右键:单击并拖动以放大/缩小焦点。向上拖动放大,向下缩小滚轮:放大/缩小焦点任务要求知识导入任务实施任务评价RVIZ的操作(2)FPS(first-person)Camera方式:FPS相机是第一人称相机,所以它旋转就好像操作者正在用头看。鼠标控制方式:鼠标左键:单击并拖动以旋转。按住Control键并单击以选择鼠标下的对象并直接查看它鼠标中键:单击并拖动以沿着摄像机的向上和向右矢量形成的平面移动鼠标右键:单击并拖动以沿着摄像机的前向矢量移动。向上拖动向前移动,向下移动向后移动滚轮:向前/向后移动任务要求知识导入任务实施任务评价RVIZ的操作(3)Top-downOrthographic方式:自上而下的正交相机总是沿着Z轴向下看,并且是正交视图,这意味着随着它们越来越远,物体不会变小。鼠标控制方式:鼠标左键:单击并拖动以围绕Z轴旋转鼠标中键:单击并拖动以沿XY平面移动相机鼠标右键:单击并拖动以缩放图像滚轮:缩放图像任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)创建对应的功能包。在前面的任务重已经指定catkin_ws为工作空间,在此仍然在此工作空间中创建功能包$

cd~/catkin_ws/src$catkin_create_pkgurdf_demo任务要求知识导入任务实施任务评价(2)创建launch和urdf文件夹$cdurdf_demo$mkdirurdf$mkdirlaunch(3)创建模型文件$cdurdf$gedittransbot_base_01.urdf任务要求知识导入任务实施任务评价(4)创建带有纹理的模型文件—transbot_base_01.urdf$

cdurdf$gedittransbot_base_02.urdf(5)在RIVZ中调用机器人模型文件由于在RVIZ中调用机器人模型文件需要对多个属性进行设置,因此采用launch文件实现模型调用$cdlaunch$gedittransbot_base_01.launch任务要求知识导入任务实施任务评价(6)启动launch文件,实现模型调用调用transbot_base_01.urdf模型$

roslaunchurdf_demoransbot_base_01.launchmodel:=transbot_base_01调用transbot_base_02.urdf模型$roslaunchurdf_demoransbot_base_01.launchmodel:=transbot_base_02任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价序号评价项目评分等级A(25-20)B(19-15)C(14-10)D(9-5)E(4-1)1任务过程的态度2任务完成的完整度3任务设计的合理性4任务实现的效果评定等级:A:优,得分>90B:好,得分>80C:一般,得分>60D:有待提高,得分<60Thankyou!授课老师:连国云项目11:智能机器人的仿真《智能机器人技术》课程任务要求知识导入任务实施任务评价使用Gazebo对智能机器人进行仿真。利用单独空白场景、定位与导航测试场景、室内房间场景对智能机器人进行仿真,使用RVIZ监测仿真数据。任务要求知识导入任务实施任务评价Gazebo简介Gazebo是一个功能强大的三维物理仿真平台,具备强大的物理引擎、高质量的图形渲染、方便的编程与图形接口,最重要的还有其具备开源免费的特性。虽然Gazebo中的机器人模型与RVIZ使用的模型相同,但是需要在模型中加入机器人和周围环境的物理属性,例如质量、摩擦系数、弹性系数等。机器人的传感器信息也可以通过插件的形式加入仿真环境,以可视化的方式进行显示任务要求知识导入任务实施任务评价Gazebo的安装Gazebo在Ubuntu或者其他的Linux发行版中有着优良的工作性能,其安装与其他ROS功能包是基本一致的,主要分为2步:(1)添加源$sudosh-c'echo"deb/gazebo/ubuntu-stable`lsb_release-cs`main">/etc/apt/sources.list.d/gazebo-stable.list’$wget/gazebo.key-O-|sudoapt-keyadd-任务要求知识导入任务实施任务评价Gazebo的安装(2)安装Gazebo功能包$sudoapt-getupdate$sudoapt-getinstallgazebo9$sudoapt-getinstalllibgazebo9-dev安装成功之后,在终端中输入以下命令就可以启动Gazebo了$roscore$rosrunGazebo_rosgazebo任务要求知识导入任务实施任务评价Gazebo主工具栏左侧面板场景右侧面板Gazebo底部主工具栏任务要求知识导入任务实施任务评价Gazebo的UII:Gazebo主工具栏,它包含一些最常用的与模拟器交互的选项,三维实体操作按钮,包括移动、旋转和缩放对象等按钮;三维实体创建按钮,包括立方体、球体、圆柱体等;光源模式选择按钮,包括日光、灯光等;几何操作按钮,包括对齐、捕捉、视角转换等任务要求知识导入任务实施任务评价Gazebo的UIII:左侧面板,主要包括world、insert、layer3个选项卡WORLD:世界选项卡,显示当前在场景中的模型,并允许用户查看和修改模型参数,还可以通过展开GUI选项并调整相机姿势来更改摄像机视角INSERT:插入选项卡,在仿真的工程项目中添加新对象或模型。可以通过单击箭头以展开文件夹就可以查看模型列表LAYER:图层选项卡,在Gazebo的layer中可以包含一个或多个模型,LAYER选项可以用于组织和显示模拟中可用的不同可视化组任务要求知识导入任务实施任务评价Gazebo的UIIII:场景,这是GazeboUI界面的主要部分,用来显示仿真模型及其仿真环境,可以在这操作仿真对象,使其与环境进行交互IV:右侧面板,单击并拖动栏可以将其打开。右侧面板主要用于仿真模型的运动部件相关信息的交互,包括力、位置和速度三个选项卡。如果未在场景中选择任何模型,则面板不会显示任何信息任务要求知识导入任务实施任务评价Gazebo的UIV:Gazebo底部主工具栏,主要提供有关于时间的相关数据显示,仿真的执行与暂停按钮,模拟时间、实时时间、迭代次数等在Gazebo中,鼠标般常用的操作方法是“shift+鼠标左键”转换视角,“鼠标左键”平移视角,“滚轮”缩放大小任务要求知识导入任务实施任务评价Gazebo的建模Gazebo中有两种创建仿真环境的方法:一种是直接插值的入系统自带模型,另外一种是通过BuildingEditor进行手动建模。任务要求知识导入任务实施任务评价Gazebo的建模(1)直接插值的入系统自带模型在Gazebo左侧的模型列表中,有一个insert

选项罗列了所有可使用的模型。选择需要使用的模型,放置在主显示区中,就可以在仿真环境中添加机器人和外部物体等仿真实例。任务要求知识导入任务实施任务评价Gazebo的建模(2)BuildingEditor手动建模在Gazebo菜单栏中选择Edit→BuildingEditor,或者通过ctrl+B

快捷键就可以打开BuildingEditor的界面。选择左侧的绘图panel,然后在panel中可以选择需要导入的元素,对于已经加入的元素可以鼠标导入的元素可对元素参数进行编辑。任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)启动Gazebo智能机器人功能包默认提供三个主要的仿真场景:单独空白场景、定位导航测试场景、室内房间场景,也可以仿照这三个场景在Gazebo上建立自己的场景任务要求知识导入任务实施任务评价(2)仿真环境加载(a)单独空白场景下面先用Gazebo仿真器打开一个空白的虚拟仿真环境,这个环境下面的话只加载了一个智能机器人的本体。输入以下命令,在Gazebo中加载智能机器人和仿真环境:$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_empty_world.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(b)定位与导航测试场景Gazebo中定位与导航测试场景是由简单形状的立体组成,主要用于SLAM和Navigation等测试。输入以下命令,在Gazebo中加载智能机器人和定位与导航测试场景:$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_world.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(c)室内房间场景Gazebo中的室内房间场景是按照一个房屋的图纸制成的地图。它适用于复杂的智能机器人任务的相关测试。输入以下命令,在Gazebo中加载智能机器人和室内房间场景:$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_house.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(3)控制机器人移动加载完不同场景的仿真环境之后,接下来的步骤就是在仿真环境下控制智能机器人的移动加载定位与导航测试场景和虚拟智能机器人模型$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_world.launch为实现控制智能机器人的移动,需要打开键盘控制节点$roslaunchtransbot_teleoptransbot_teleop_key.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(4)Gazebo中智能机器人自主仿真移动加载定位与导航测试场景和虚拟智能机器人模型。$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_world.launch加载虚拟智能机器人驱动器。$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_simulation.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(5)在RVIZ上检测仿真数据加载定位与导航测试场景和虚拟智能机器人模型$exportTRANSBOT_MODEL=normal$roslaunchtransbot_gazebotransbot_world.launch打开新的终端窗口,输入下面命令$exportTRANSBOT_MODEL=waffle$roslaunchtransbot_gazebotransbot_gazebo_rviz.launch任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价序号评价项目评分等级A(25-20)B(19-15)C(14-10)D(9-5)E(4-1)1任务过程的态度2任务完成的完整度3任务设计的合理性4任务实现的效果评定等级:A:优,得分>90B:好,得分>80C:一般,得分>60D:有待提高,得分<60Thankyou!授课老师:连国云项目12:智能机器人行走《智能机器人技术》课程任务要求知识导入任务实施任务评价在PC电脑端控制智能机器人以0.3米为半径做圆周转动。任务要求知识导入任务实施任务评价智能机器人的组成在机器人的发展历程上,机器人主要是一种自动化装备,其功能的实现主要是通过人类事先编制好工作程序完成特定的功能。随着人工智能技术的成熟,在传统机器人的基础上,将智能技术与机器人技术相结合,产生了智能机器人。此外智能机器人的感知系统,与传统的传感器有了本质的区别,具有了更接近于人类的感知系统,也为智能机器人实现自主智能控制提供了坚实的基础。任务要求知识导入任务实施任务评价智能机器人的组成任务要求知识导入任务实施任务评价智能机器人的组成这款智能机器人的动力来源采用的是VKESSM-A2系列伺服驱动单元,该驱动单元具有的具有体积小、简单易用、扩展灵活等特点该智能机器人采用的运动控制器是VKESRC。VKESRC控制器的主芯片采用的是STM32F7系列,开发环境是ArduinoIDE,界面非常友善该智能机器人中配置了160度鱼眼摄像头模组,输出图像的分别率最高可达1080p,输出针对最高可达60帧,非常适合运用在智能机器人上做图像识别等应用任务要求知识导入任务实施任务评价智能机器人的组成该智能机器人中配置了EAI公司的YDLidarX2激光雷达,它采用基于三角测距原理,并配以相关光学、电学、算法设计,实现高频高精度的距离测量,可以实现360°扫描测距该智能机器人采用的内部传感器主要是编码器,通过检测机器人两个主动轮单位时间内转动的圈数,检测机器人的速度、角度、里程等信息,可以作为机器人的里程计。编码器采用霍尔传感器,体积小,可直接安装到电机上,信号连接到主控板的编码器接口该智能机器人采用了分布式控制系统,机载控制器和PC均安装了ROS系统任务要求知识导入任务实施任务评价运动控制智能机器人的运动控制实现是通过主控制器和运动控制相结合实现的,主控制器相当于一台计算机,负责计算与功能应用,运动控制负责机器人底盘的移动响应,主控制器与运动控制之间通过串口通信的方式进行数据传输任务要求知识导入任务实施任务评价运动控制智能机器人的控制系统采用“分布式+上下位机”的控制系统架构,其中PC与智能机器人的RaspberryPi4主控制器构成分布式控制系统,在这一分布式控制系统中,PC和RaspberryPi4之间是通过WiFi进行数据通信;智能机器人的RaspberryPi4主控制器与VKESRC运动控制板之间是通过串口进行数据通信的任务要求知识导入任务实施任务评价运动控制任务要求知识导入任务实施任务评价运动控制智能机器人的RaspberryPi4主控制器与VKESRC运动控制板之间是通过串口进行数据通信,在ROS系统中需要对主控制器的串口进行控制,ROS系统中提供了rosserial协议实现对串口的相关操作任务要求知识导入任务实施任务评价运动控制rosserial,它是用于非ROS设备与ROS设备进行通信的一种协议。它为非ROS设备的应用程序提供了ROS节点和服务的发布/订阅功能,使在非ROS环境中运行的应用能够通过串口或网络能够轻松地与ROS应用进行数据交互任务要求知识导入任务实施任务评价运动控制rosserial分为客户端和服务器两部分。rosserial客户端运行在没有安装ROS的环境的应用中,通过串口或网络与运行在ROS环境中的rosserial服务器连接,并通过服务器节点在ROS中发布/订阅话题任务要求知识导入任务实施任务评价运动控制任务要求知识导入任务实施任务评价rosserial服务器rosserial服务器是运行在ROS设备中的一个节点,作为串行协议和ROS网络的连接rosserial_python是一个基于python的rosserial协议实现。它包含主机端rosserial连接的Python实现,能够自动处理连接支持rosserial的设备的设置、以及话题的发布和订阅,此外要注意的是需要事先安装pyserial才能使用任务要求知识导入任务实施任务评价rosserial服务器rosserial_python功能包的serial_node.py节点,与启用了rosserial的设备通过串口通信。该节点根据存储在设备中的配置信息自动启动订阅者和发布者。要使节点以指定的波特率与指定的串口设备连接。例如在/dev/ttyACM1,则必须在命令行上指定参数:$rosrunrosserial_pythonserial_node.py_port:=/dev/ttyACM1_baud:=115200任务要求知识导入任务实施任务评价rosserial服务器可以通过launch文件指定以下参数:<launch>

<nodepkg=“rosserial_python”

type=“serial_node.py”name="serial_node">

<paramname="port"

value="/dev/ttyACM1"

/>

<paramname="baud"

value="115200"

/>

</node></launch>任务要求知识导入任务实施任务评价rosserial服务器rosserial_server提供serial_node和socket_node两个节点,分别用于串口连接和网络套接字连接。建议的用法是在消息信息节点侧启动主服务器节点。提供了启动文件以启动串行链接。服务器节点的启动方法如下:$roslaunchrosserial_serverserial.launchport:=/dev/ttyUSB0同样可以使用launch文件启动socket节点,其默认监听端口为11411:$roslaunchrosserial_serversocket.launch任务要求知识导入任务实施任务评价rosserial客户端rosserial_client包含通用的客户端rosserial实现,它主要是为微控制器设计的。客户端库使用户可以轻松地启动ROS节点并在各种系统上运行。这些客户端是常规ANSIC++rosserial_client库的端口。当前,这些软件包包括:rosserial_arduinorosserial_embeddedlinuxrosserial_windowsrosserial_mbedrosserial_tivacrosserial_vex_v5rosserial_vex_cortexrosserial_stm32ros-teensy任务要求知识导入任务实施任务评价网络配置ROS系统是基于分布式计算的软件环境,ROS系统在运行过程中,可以包含分布在不同计算设备上的多个节点,只要对ROS的网络参数进行正确的设置,任意节点可以在任意时间与任意其他节点进行通信。在ROS系统中为了实现分布式计算,需要事先进行网络配置,完成网络配置后,在进行分布式计算之前需要进行网络登录任务要求知识导入任务实施任务评价机器人端网络配置远程电脑和智能机器人机载主控制器需要连接到同一个局域网内,这一点通过智能机器人机载的无线路由可以实现。默认情况下,智能机器人的机载主控器已经通过有线的方式连接到机载的路由器上,IP地址默认为00,也可以通过下面的命令查找机载主控器的IP地址$ipconfig任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价机器人端网络配置输入命令:$nano~/.bashrc同样需要在文档的末尾添加ROS_MASTER_URI和ROS_HOSTNAME两个全局变量的赋值语句,ROS_MASTER_URI设置成远程电脑的IP地址,例如这里是01,ROS_HOSTNAME的IP值都设置成机载主控器的IP,这里为00任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价机器人端网络配置然后,使用以下命令使刚才修改的bashrc文件生效$source~/.bashrc到这里,智能机器人端的网络配置已经完成任务要求知识导入任务实施任务评价PC端网络配置在PC端,点击远程电脑界面右上角的无线网络图标,连接智能机器人机载的无线路由器,然后输入以下命令,以查看远程PC的IP地址$ipconfig任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价PC端网络配置输入以下命令:$sudovim~/.bashrc在文档的末尾添加ROS_MASTER_URI和ROS_HOSTNAME两个全局变量的赋值语句,ROS_MASTER_URI和ROS_HOSTNAME中IP值设置成远程电脑的IP值,其值为上述终端窗口红色边框里的IP地址01任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价PC端网络配置然后,使用以下命令使刚才修改的bashrc文件生效$source~/.bashrc到这里,PC端的网络配置已经完成任务要求知识导入任务实施任务评价远程登录要在PC端实现对智能机器人的控制,除了要事先配置好PC和智能机器人的网络之外,在进行操作控制之前,还需要通过网络在PC端登录智能机器人。在进行网络登录时,一般采用SSH登录方式任务要求知识导入任务实施任务评价远程登录SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,就可以认为这种登录是安全的,即使被中途截获,密码也不会泄露任务要求知识导入任务实施任务评价远程登录假定要以用户名user,登录远程主机host,只要一条简单命令就可以了$sshuser@host

如:sshpika@11如果本地用户名与远程用户名一致,登录时可以省略用户名$sshhost任务要求知识导入任务实施任务评价远程登录SSH的默认端口是22,也就是说,登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口$ssh-p2222user@host上面这条命令表示,SSH直接连接远程主机的2222端口任务要求知识导入任务实施任务评价远程登录如果是第一次登录对方主机,系统会出现下面的提示:$sshuser@hostTheauthenticityofhost'host(12.18.429.21)'can'tbeestablished.RSAkeyfingerprintis98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.Areyousureyouwanttocontinueconnecting(yes/no)?这是在提示无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?任务要求知识导入任务实施任务评价远程登录假定经过风险衡量以后,用户决定接受这个远程主机的公钥Areyousureyouwanttocontinueconnecting(yes/no)?yes系统会出现一句提示,表示host主机已经得到认可Warning:Permanentlyadded'host,12.18.429.21'(RSA)tothelistofknownhosts.任务要求知识导入任务实施任务评价远程登录当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。任务要求知识导入任务实施任务评价根据任务要求,具体的工作任务实施步骤如下:(1)启动PC和智能机器人将控制智能机器人用电脑上电,进入Ubuntu系统;按下智能机器人电源按钮,智能机器人的主控制器进入Ubuntu系统任务要求知识导入任务实施任务评价(2)对PC端和智能机器人端的网络的参数进行设置。在PC端使用vim命令在bashrc文件中追加ROS_MASTER_URI和ROS_HOSTNAME两个全局变量,在智能机器人端使用nano命令bashrc文件中追加ROS_MASTER_URI和ROS_HOSTNAME两个全局变量任务要求知识导入任务实施任务评价(3)在PC端的catkin_ws工作空间中创建move_control功能包$cd~/catkin_ws/src$catkin_create_pkgmove_controlrospystd_msgs(4)在PC端建立scripts目录,编译工作空间$cdmove_control$mkdirscripts$cd~/catkin_ws$catkin_make&&source./devel/setup.bash任务要求知识导入任务实施任务评价(5)在PC端编写智能机器人转圈运动控制节点代码并进行编译在/catkin_ws/src/move_control/scripts文件夹下编写transbot_circle.py代码文件$

gedit

transbot_circle.py(6)在PC端启动master节点在PC端输入以下命令,启动ROS系统的master节点$roscore任务要求知识导入任务实施任务评价(7)在PC端登录到智能机器人主控制器通过SSH远程登录到智能机器人主控制器,这里需要输入机载主控器在局域网中的用户名和IP地址,默认用户名为:transbot,IP:00,然后根据提示输入密码,默认为vkrobot,当成功登录到主控制器时,命令窗口输入栏的抬头会标称transbot在PC端输入以下命令:$sshtransbot@00任务要求知识导入任务实施任务评价(8)运行智能机器人的启动节点在智能机器人端输入以下命令:$roslaunchtransbot_bringuptransbot_robot.launch如果不希望启动全部的传感器,那可以通过分别单独启动对应的launch文件任务要求知识导入任务实施任务评价(9)在PC端的RVIZ中加载智能机器人模型在PC端启动robotstatepublisher并运行RVIZ。在PC端打开一个终端窗口,执行以下命令:$exportTRANSBOT_MODEL=normal$roslaunchtransbot_bringuptransbot_remote.launch$rosrunrvizrviz-d`rospackfindtransbot_description`/rviz/model.rviz任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价(10)在PC端运行transbot_circle节点,控制智能机器人做圆圈转动在PC端打开一个新终端,输入以下命令:$rosruntransbot_circle.py智能机器人将以0.3米为半径做圆周转动任务要求知识导入任务实施任务评价序号评价项目评分等级A(25-20)B(19-15)C(14-10)D(9-5)E(4-1)1任务过程的态度2任务完成的完整度3任务设计的合理性4任务实现的效果评定等级:A:优,得分>90B:好,得分>80C:一般,得分>60D:有待提高,得分<60Thankyou!授课老师:连国云项目13:智能机器人装上慧眼《智能机器人技术》课程任务要求知识导入任务实施任务评价PC端远程调用智能机器人上的摄像头,显示实时图像,并截取图像画面。任务要求知识导入任务实施任务评价视觉驱动ROS驱动与Linux驱动的意义完全不同。LinuxDriver是在内核模式下获取硬件信息并反馈到用户。ROSDriver则不同,它完全是在用户模式下,从Linux层面获取数据。并通过topic发送messageusb_cam就是个典型的ROSDriver,它并非Linux传统意义上的Driver,它其实只是个应用程序,通过V4L2接口设置Camera并获取数据,利用ROS接口发布topic,供其它节点实用任务要求知识导入任务实施任务评价视觉驱动在ROS系统中,想要使用USB摄像头需要安装相应的驱动程序,在ROS系统中,常用的摄像头package有usb_cam和uvc_camera两个。UVC(USBVideoClass)即USB视频类,是一种为USB视频捕获设备定义的协议标准,而ROS系统中的uvc_camera功能包则是针对该协议的摄像头驱动。任务要求知识导入任务实施任务评价视觉驱动usb_cam功能包是针对V4L2视频采集框架的视觉采集设备驱动功能包。V4L2是一个专门针对Linux系统下的驱动程序框架及设备输出API。要使用这个package,首先需要进行安装。任务要求知识导入任务实施任务评价视觉驱动usb_cam功能包安装的主要步骤如下:(1)进入工作空间,在该工作空间下新建usb_cam文件夹,并在其下新建src文件夹:$cd~/catkin-ws/$mkdir-pusb_cam/src任务要求知识导入任务实施任务评价视觉驱动usb_cam功能包安装的主要步骤如下:(1)进入工作空间,在该工作空间下新建usb_cam文件夹,并在其下新建src文件夹:$cd~/catkin-ws/$mkdir-pusb_cam/src任务要求知识导入任务实施任务评价视觉驱动(2)进入src文件夹,使用git下载usb_cam功能包源码:$cdusb_cam/src$gitclone/bosch-ros-pkg/usb_cam.git任务要求知识导入任务实施任务评价视觉驱动(3)下载完成后,返回src上一级文件夹usb_cam,运行catkin_make对package进行编译,并配置环境变量:$cd..$catkin_make$source~/catkin-ws/devel/setup.bash进入usb_cam文件夹,测试一下usb_cam功能包是否配置完成:$roscdusb_cam任务要求知识导入任务实施任务评价usb_cam功能包usb_cam功能包的功能实现主要是通过节点中的相关topic进行数据传递,此外依靠相关参数的设置,对相关功能进行配置。usb_cam功能包的核心节点是usb_cam_node任务要求知识导入任务实施任务评价usb_cam功能包(1)话题usb_cam功能包中的话题

名称类型功能话题发布~<camera_name>/imagesensor_msgs/Image发布图像数据任务要求知识导入任务实施任务评价usb_cam功能包(2)参数usb_cam功能包中的参数参数类型默认值功能~viedo_devicestring“dev/viedo0”摄像头设备号~image_widthint640图像横向分辨率~image_heightint480图像纵向分辨率~pixel_formatstring“mjpeg”像素编码,可选值:mjpeg、yuyv、uyvy~io_methodstring“mmap”IO通道,可选值:mmap、read、userptr~camera_frame_idstring“head_camera”摄像头坐标系~framerateint30帧率~brightnessint32亮度,0~255任务要求知识导入任务实施任务评价usb_cam功能包(2)参数usb_cam功能包中的参数参数类型默认值功能~saturationint32饱和度,0~255~contrastint32对比度,0~255~sharpnessint22清晰度,0~255~autofocusboolFalse自动对焦~focusint51焦点(非自动对焦状态下才有效)~camera_info_urlstring—摄像头校准文件路径~camera_namestring“head_camera”摄像头名称任务要求知识导入任务实施任务评价PC端直接调用摄像头方式1:运行usb_cam功能包中的节点usb_cam_node:$rosrunusb_camusb_cam_node这里只能看到摄像头指示灯打开,但并不会在电脑上看到图像,如果想要看下当前的图像可以使用image_view功能包中image_view节点,使用usb_cam默认发布/usb_cam/image_raw的topic,因此查看命令为:$rosrunimage_viewimage_viewimage:=/usb_cam/image_raw任务要求知识导入任务实施任务评价任务要求知识导入任务实施任务评价PC端直接调用摄像头方式2:使用自定义launch文件设置摄像头:usb_cam给了我们一个默认的launch文件在如下目录~/catkin-ws/usb_cam/src/usb_cam/launch/usb_cam-test.launch如果需要自定义一个launch文件,可以复制这个文件并进行命名,例如:usb_cam.launch,然后打开这个文件任务要求知识导入任务实施任务评价PC端直接调用摄像头<launch>

<node

name="usb_cam"pkg="usb_cam"type="usb_cam_node"output="screen"

>

<paramname="video_device"value="/dev/video0"/>

<paramname="image_width"value="640"

/>

<paramname="image_height"value="480"

/>任务要求知识导入任务实施任务评价PC端直接调用摄像头

<paramname="pixel_format"value="yuyv"

/>

<paramname="camera_frame_id"value="usb_cam"/>

<paramname="io_method"

value="mmap"/>

</node>

<nodename="image_view"pkg="image_view"type="image_view"respawn="false"

output="screen">任务要求知识导入任务实施任务评价PC端直接调用摄像头

<remapfrom="image"

to="/usb_cam/image_raw"/>

<paramname="autosize"

value="true"

/>

</node></launch>任务要求知识导入任务实施任务评价PC端直接调用摄像头其中/div/video0表示是第一个摄像头,如果你有多个摄像头,可以将此改为/div/video1等等。如果需要查看当前连接设备,使用如下命令即可:$ls/dev/video*修改好后运行这个文件:$roslaunchusb_camusb_cam.launch任务要求知识导入任务实施任务评价PC端直接调用摄像头方式3:ROS系统的qt工具箱中还包含一个图像显示的工具,可以通过以下命令运行这个工具$rqt_image_view任务要求知识导入任务实施任务评价PC端直接调用摄像头点击该界面左上角的下拉菜单,可以看到当前系统中所有可显示的图像话题列表。选择列表中的摄像头原始图像/camera/image_raw话题,应该就可以看到期盼已久的图像任务要求知识导入任务实施任务评价PC端远程调用摄像头除了使用PC端直接驱动摄像头之外,还可以采用分布式系统的方式,PC通过智能机器人的主控制器远程控制摄像头。在智能机器人中,通常摄像头是直接安装在智能机器人本体上,与智能机器人的主控制器直接相连。图像识别等操作对设备的计算能力要求较高,可以在PC端上进行,因此PC端需要远程调用摄像头任务要求知识导入任务实施任务评价PC端远程调用摄像头PC端远程调用摄像头,与PC端远程进行运动控制的原理相类似,也是要通过远程登录方式,实现PC端与智能机器人主控制器的连接,进而通过ROS系统节点之间的通信方式实现PC端,主控制器,以及摄像头的数据通信任务要求知识导入任务实施任务评价PC端远程调用摄像头在这种调用方式下,摄像头同样可以使用usb_cam功能包进行驱动。RaspberryPi上安装usb_cam功能包后,在主机PC端运行ROSMaster$roscore并在RaspberryPi上运行usb_cam_node节点:$rosrunusb_camusb_cam_node运行成功后,在PC端使用rostopiclist命令查看话题列表任务要求知识导入任务实施任务评价PC端远程调用摄像头任务要求知识导入任务实施任务评价PC端远程调用摄像头可以看到摄像头启动成功,并且已经开始发布图像数据。使用rqt_image_view工具将图像数据可视化:$rqt_image_view订阅/usb_cam/image_raw消息后就可以在界面中看到图像任务要求知识导入任务实施任务评价PC端远程调用摄像头任务要求知识导入任务实施任务评价PC端远程调用摄像头为了便于参数的设置与修改,可以使用launch文件在RaspberryPi上驱动摄像头,只需要对usb_cam-test.launch进行简单的修改,去掉图像显示部分image_view节点的启动即可任务要求知识导入任务实施任务评价PC端远程调用摄像头<launch><nodename="usb_cam"

pkg="usb_cam"

type="usb_cam_node"

output="screen"

>

<paramname="video_device"

value="/dev/video1"

/>

<paramname="image_width"

value="640"

/>

<paramname="image_height"

value="480"

/>

<paramname="pixel_format"

value="yuyv"

/>任务要求知识导入任务实施任务评价PC端远程调用摄像头

<paramname="camera_frame_id"

value="usb_cam"

/>

<paramname="io_method"

value="mmap"

/></node><launch>任务要求知识导入任务实施任务评价(1)在PC端启动master节点。输入以下命令:$roscore(2)在PC端远程登录智能机器人。输入以下命令:$sshtransbot@00(3)在智能机器人端启动摄像头节点。输入以下命令:$rosrunusb_camusb_cam_node_video_device:=/dev/video0_pixel_format:=mjpeg_camera_frame_id:=camera任务要求知识导入任务实施任务评价(4)在PC端启动rqt_image_view节点。输入以下命令:$rqt_image_view/usb_cam/image_raw(5)利用rqt_image_view截屏任务要求知识导入任务实施任务评价序号评价项目评分等级A(25-20)B(19-15)C(14-10)D(9-5)E(4-1)1任务过程的态度2任务完成的完整度3任务设计的合理性4任务实现的效果评定等级:A:优,得分>90B:好,得分>80C:一般,得分>60D:有待提高,得分<60Thankyou!授课老师:连国云项目14:智能机器人认脸识主人《智能机器人技术》课程任务要求知识导入任务实施任务评价在ROS系统中使用OpenCV库对人脸进行识别,对识别出的人脸用粉色圆圈标出,对识别出的眼睛用蓝色圆圈标出。任务要求知识导入任务实施任务评价图像数据封装ROS系统中对摄像头的操作主要是通过usb_cam功能包完成的,该package主要是依靠sensor_msgs/Image消息向其他节点发布图像相关的数据在ROS中可以启动usb_cam功能包中usb_cam_node节点,实现sensor_msgs/Image消息的发布。任务要求知识导入任务实施任务评价图像数据封装在ROS系统官方提供的usb_cam功能包中,包含用于启动usb_cam_node的launch文件,在启动master节点的条件下,输入以下命令:$roslaunchusb_camusb_cam-test.launch通过rostopic命令查看该topic消息类型$rostopicinfo/usb_cam/image_raw任务要求知识导入任务实施任务评价图像数据封装任务要求知识导入任务实施任务评价图像数据封装从输出的消息中可以看到,图像的话题名为usb_cam/image_raw,该消息的类型是sensor_msgs/Image,这是ROS定义的一种摄像头原始图像的消息类型,可以使用以下命令查看该图像消息的详细定义:$rosmsgshowsensor_msgs/Image任务要求知识导入任务实施任务评价图像数据封装任务要求知识导入任务实施任务评价图像数据封装该类型图像数据的具体内容如下:header:消息头,包含图像的序号、时间戳和绑定坐标系height:图像的纵向分辨率,即图像包含多少行的像素点,这里使用的摄像头为720width:图像的横向分辨率,即图像包含多少列的像素点,这里使用的摄像头为1280encoding:图像的编码格式,包含RGB、YUV等常用格式,不涉及图像压缩编码任务要求知识导入任务实施任务评价图像数据封装is_bigendian:图像数据的大小端存储模式step:一行图像数据的字节数量,作为数据的步长参数,这里使用的摄像头为widthX3=1280X3=3840字节data:存储图像数据的数组,大小为stepXheight字节,根据该公式可以算出这里使用的摄像头产生一帧图像的数据大小是3840X720=2764800字节,即2.7648MB任务要求知识导入任务实施任务评价视觉标定由于镜头在加工、装配中难免会存在一些误差,因此,摄像头成像系统中不可避免的会引入镜头畸变。镜头的畸变破坏了理想的成像关系,导致像点偏离理想的位置,使得成像发生形变。通常情况下,镜头畸变模型可分为三大类即:径向畸变、切向畸变、薄棱镜畸变任务要求知识导入任务实施任务评价视觉标定要使用摄像头对物体进行测量与识别,就需要获知摄像头的内、外参数,以及畸变参数,而一般情况下,使用者难以事先知道这些参数,这就需要进行摄像头的标定获得这些参数任务要求知识导入任务实施任务评价视觉标定ROS系统作为一个机器人控制平台,在进行机器视觉操作之前也需要进行视觉标定,ROS系统中专门提供了可以用于双目和单目摄像头标定的功能包:camera_calibration。首先使用以下命令安装摄像头标定功能包:$sudoapt-getinstallros-kinetic-camera-calibration任务要求知识导入任务实施任务评价视觉标定标定需要用到如下图所示棋盘格图案的标定靶任务要求知识导入任务实施任务评价视觉标定将USB摄像头的USB接口插入到主机上,在启动master节点的条件下,新建一个终端,输入下面的命令启动摄像头$roslaunchusb_camusb_cam-test.launch启动成功后,将会出现图像信息任务要求知识导入任务实施任务评价视觉标定任务要求知识导入任务实施任务评价视觉标定首次启动摄像头且没有进行过校准的话,会出现Cameracalibrationfilenotfound的警告信息。这是正常的摄像头启动完成以后,运行下面的命令启动校准程序$rosruncamera_calibrationcameracalibrator.py--size8x6--square0.024image:=/usb_cam/image_rawcamera:=/usb_camsize

指的是标定棋盘格内部角点一共几行几列square

指定每个棋盘格子的大小,单位为米image和camera

设置摄像头发布的图像话题任务要求知识导入任务实施任务评价视觉标定任务要求知识导入任务实施任务评价视觉标定将出现的标定程序放大后,手托着测试的棋盘进入到摄像头摄影范围。同时出现X、Y、Size、Skew的指示信息X表示棋盘在视野中的左右移动Y表示上下移动Size表示前后移动Skew表示倾斜移动任务要求知识导入任务实施任务评价视觉标定任务要求知识导入任务实施任务评价视觉标定不断在视野中移动棋盘,直到“CALIBRATE“按钮变成绿色,表示标定程序所需要的参数已经采集完成任务要求知识导入任务实施任务评价视觉标定点击“CALIBRATE“按钮,界面会变成灰色无响应状态。此时程序正在计算校准参数,请不要关闭任务要求知识导入任务实施任务评价视觉标定参数计算完成后界面恢复正常,同时在终端上输出了标定结果。点击界面中的“save“按钮,会保存到默认的文件夹下。点击“COMMIT“按钮,提交数据并退出程序任务要求知识导入任务实施任务评价视觉标定关闭上面所有的启动的节点,重新启动摄像头。发现不再有无法找到校准文件的警告任务要求知识导入任务实施任务评价OpenCV库OpenCV库(OpenSourceComputerVisionLibrary)是一个基于BSD许可发行的跨平台开源计算机视觉库,可以运行在Linux、Windows和macOS等操作系统上。基于OpenCV库,开发者可以快速开发机器视资方面的应用,而且ROS中已经集成了OpenCV库和相关的接口功能包,使用以下命令即可安装:$sudoapt-getinstallros-melodic-vision-opencvlibopencv-devpycnon-opencv任务要求知识导入任务实施任务评价OpenCV库ROS系统自身通过sensor_msgs/Image的消息指定传送图像格式,但ROS缺乏相关的图像处理能力,无法完成进一步的图像处理与识别工作。OpenCV作为十分成熟的图像处理库,则提供了强大稳定的图像处理功能。ROS用户更倾向使用OpenCV进行图像处理。ROS为开发者提供了与OpenCV的接口功能包:cv_bridge任务要求知识导入任务实施任务评价OpenCV库任务要求知识导入任务实施任务评价OpenCV库下面通过一个简单的例子了解如何使用cv_bridge完成ROS与OpenCV之间的图像转换。在该例程中,一个ROS节点订阅摄像头驱动发布的图像消息,然后将其转换成OpenCV的图像格式进行显示,最后再将该OpenCV格式的图像转换成ROS图像消息进行发布并显示任务要求知识导入任务实施任务评价OpenCV库通过以下命令启动该例程:$roslaunchusb_camusb_cam-test.launch$rosrunrobot_visioncv_bridge_test.py$rqt_image_view任务要求知识导入任务实施任务评价OpenCV库任务要求知识导入任务实施任务评价OpenCV库实现该例程的源码robot_vision/scripts/cv_bridge_test.py的内容如下:import

rospyimport

cv2from

cv_bridge

importCvBridge,CvBridgeErrorfrom

sensor_msgs.msg

importImage任务要求知识导入任务实施任务评价class

image_converter:def_init_(self):

#创建cv_bridge,声明图像的发布者和订阅者

self.image_pub=rospy.Publisher("cv_bridge_image",Image,queue_size=1)

self.bridge=CvBridge()

self.image_sub=rospy.subscriber("/usb_cam/image_raw",Image,self.callback)任务要求知识导入任务实施任务评价

def

callback(self,data):#使用cv_bridge将ROS的图像数据转换成OpenCV的图像格式try:cv_image=self.bridge.imgmsg_to_cv2(data,"bgr8")

exceptCvBridgeErrorase:

printe任务要求知识导入任务实施任务评价

#在opencv的显示窗口中绘制一个圆作为标记(rows,cols,channels)=cv_image.shape

ifcols>60androws>60:cv2.circle(cv_image,(60,60),30,(0,0,255),-1)#显示OpenCV格式的图像cv2.imshow("Imagewindow",cv_image)cv2.waitKey(3)任务要求知识导入任务实施任务评价

#再将OpenCV格式的数据转换成ROSimage格式的数据发布try:

self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image,"bgr8"))

exceptCvBridgeErrorase:

printe任务要求知识导入任务实施任务评价

#再将OpenCV格式的数据转换成ROSimage格式的数据发布try:

self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image,"bgr8"))

exceptCvBridgeErrorase:

printe任务要求知识导入任务实施任务评价if_name_=='_main_':

try:#初始化ROS节点rospy.init_node("cv_bridge_test")rospy.loginfo("Startingcv_bridge_testnode")image_converter()rospy.spin()

except

KeyboardInterrupt:

p

温馨提示

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

最新文档

评论

0/150

提交评论