当前位置: 首页 > news >正文

基于X86六轮差速移动机器人运动控制器设计与实现(一)软件与硬件架构

本文研究的六轮差速移动机器人 (Six-Wheeled Differential Mobile Robot
SWDMR) 为了满足资源站到资源站点对点的物资运输,对机器人的跨越障碍能力
有较高的要求。对比传统的四轮移动机器人,六轮移动机器人能够提供更强的驱动
力,而且六轮与四轮相比整车分散到单个车轮的负荷更小了,进而使得车轮的电机
需要的驱动力矩更小,这样更有利于电机选型;对比八轮移动机器人,虽然八轮移
动机器人车轮比六轮更多,所能提供的总体驱动力矩更大,但是增加了控制的难度,
提高了移动系统的搭建成本。移动机器人自身结构舍弃传统的集中式驱动结构采
用分布式驱动结构,分布式结构没有传统车辆上的传动、差速及变速等系统,能够
减轻车辆自身重量,而且每个车轮作为独立的执行器可以做到独立控制,提高整车
控制的灵活性。
SWDMR 作为本文的研究重点先对其层级结构做一个初步的划分。机器人在
复杂环境中运动需要感知环境信息以及自身的状态信息,以确保机器人能够更好
地适应环境,因此少不了一系列的传感器比如雷达、摄像头、 IMU 等组成的感知
层;机器人通过不同的传感器获取到环境信息和自身状态量传送给中央处理器,结
合规划算法计算出机器人未来的运行轨迹,进一步保障机器人的运行安全,这一层
为规划层;中央处理器将规划出的轨迹下发给底层,驱动单元执行规划出的运行指
令,运动控制算法辅助校正机器人的运动轨迹为控制层。
本章主要对机器人运动控制层的基础硬件搭建和机器人软件设计做一个全面
的介绍,同时涉及部分感知层的硬件选型测试。
3.1 整车关键点分析及器件选型
3.1.1 整车硬件组成分析
首先是机器人的核心处理器,为了满足控制算法的算力需求,采用工控机作为
机器人的控制单元。为了得到机器人的横摆角、 X,Y 轴的加速度等信息需要安装一
IMU 。为了使分布式结构更加简洁,采用机电一体化的轮毂电机作为机器人的
驱动单元。同时为了满足人与机器人的远程交互,使操作手能够在远端的控制台也
能介入机器人的运动,机器人本体上需要搭载对应的数据传输模块和视频传输模
块。最后为了给机器人本体上的各个模块提供动力源需要安装一个具有一定容量
的电池。
3.1.2 动力分析
一般对纯电动的移动机器人驱动力估计都是通过计算机器人在纵向通过 35°
坡时电机所需要的驱动力矩,在该工况下,机器人的驱动力需要大于滚动摩擦力和
坡道阻力之和。假设机器人的重心位于自身的几何中心,那么爬 35° 坡所需要的电
机扭矩 T 可以通过式计算得到:
上式中: 表示驱动电机数,取 6 ; 表示驱动系统效率,取 90% ; 表示机器人
的重量,取 100kg ; 表示重力加速度,取 9.8 m/𝑠 2 ; 表示滚动阻力系数,取 0.025
表示最大坡度,取 35° ; 表示车轮半径,取 0.13m 。根据所取参数计算得到
,所以在选型时单个轮毂电机的额定转矩应该大于这个估计值。
3.1.3 关键器件选型
(1) 机器人核心 处理器:工控机
工控机的选择主要指标为成本低,性能高,低功耗,大小适中,重量合适。综
合比较下来工控机 信迈科技的 MEC-5071 具有上述优点,它能够支持多种 Intel 酷睿处理器,
支持 Linux Win8 Win7 等操作系统,各模块板之间通过高可靠连接器对接,运
行环境可靠,具有良好的防尘、散热、抗震性能,对于在野外工况工作的机器人比
较适配。
此外 MEC-5071 有多种外设接口,包含串口,网口, USB GPIO 以及 PCI
展口,可以挂载多种外设以满足实验需求,各个接口功能如表 3.1 所示。

(2) 数据传输链路: LORA 数传电台
数传电台工作时需要两个电台进行点对点传输数据,一端作为移动端搭载在
机器人上接收控制端发出的信息并上报机器人自身的状态信息,另外一端作为控
制端接收机器人上报的参数反馈给工控机计算处理,将工控机计算得到的控制信
息发送给移动端用以控制机器人运动。
在数传电台的选择上应该考虑通信的稳定性和抗干扰能力,亿佰特旗下的产
E90-DTU(400SL37) 能够满足实验需求 , 该产品广泛应用与工业物联网、环境监测、
无线控制等领域。 E90-DTU(400SL37) 支持高速连续传输,工作频段在 410.125
493.125MHz 之间,发射功率为 37dBm ,空中速率在 0.3K 62.5kbps ,传输距离
在无遮挡的通视条件下距离可达 20km ,同时还具有主动监听信道环境噪声功能,
当噪声超过阈值延迟发送,极大提高在恶劣环境下的通信成功率。 E90-
DTU(400SL37) 通信接口为 RS232/RS485 ,通信方式为半双工通信,缓存容量有 1000
个字节,可通过指令分包成不同字节的数据帧传送数据。
(3) 视频传输通道 大功率网传
实现视频传输的大功率网传选择的是腾远智拓公司生产的 ST5801GB-M 系列
产品,其采用 HTOFDM 调制技术,工作频率在 4900 6100MHz ,传输速率可达
351Mbps ,发射功率可达 26dbm ,传输距离在通视条件下有 50km 。在每均有 RJ45
网口,可通过 TCP/IP 实现产品与电脑的通信。根据其产品描述,此产品有基站模
式、用户站模式、一对一桥接功能、 mesh 自组网功能四种通信模式,因为本文研
究的轮式机器人系统只有一个移动端和一个操作端,所以在使用时根据需要选择
一对一桥接模式。

(4) 机器人驱动单元:轮毂电机及其驱动器
在动力分析小节通过计算得到了电机的额定转矩的估计值,结合电机尺寸,价
格以及电机的额定转矩等条件最终选择了 LSDB 系列的伺服轮毂驱动器及电机。
该系列产品具有 IP67 防护等级,对于野外环境能够轻松应对,且有较高的扭矩。
所选的 LSDB4830-CAFC-ASM5 驱动器通信类型为 CAN+UART UART 波特率
115200bps ,支持上位机控制, CAN 波特率有 500kbps/1Mbps 可供选择,驱动器具
有过压保护、欠压保护、电机过热保护、短路保护、驱动器过热保护等功能。WS80L-
15A110C-MUCA03 型号电机的轮子直径为 200mm ,额定扭矩为 15Nm ,最大扭矩
可达 24Nm 。轮胎硬度等级为 A68 ,对于差速转向的机器人来说可谓为福音。
驱动器带有电流闭环,速度闭环,能够准确跟踪下发的力矩指令或速度指令。
查看所选硬件的使用手册,得到各个硬件供电以及通信方式,最终的硬件图可以用
3.7 表示:

3.7 中橙色线为电源线,蓝色为信号线。工控机通过一个 TCP/CAN 模块与
轮毂电机驱动器进行数据交换,六个驱动器挂载在 CAN 总线上;数传通过 USB 口
与工控机进行数据交换; IMU 通过 USB 口将机器人的状态信息上报给工控机;大
功率网传通过 TCP/IP 将视频信息传送给工控机。
3.2 关键器件测试
在各个模块安装前需要对其做功能性和稳定性测试,因为实验场景大多数是
校园环境,有较多的树木和房屋遮挡,且车流量较大,人口流动也比较频繁,如果
数据传输通道出现阻塞或者断开连接等状况,在没有保护措施的情况下机器人与
上层控制断开通信很容易发生危险事故。
(1) LORA 通信测试
LORA 通信测试主要测试数据传输通路在遮挡条件下的稳定性和通信距离。
测试的方案为两个实验人员分别将 LORA 的移动端和操控端与自己电脑的
USB 口连接,打开串口调试助手模拟节点收发数据,传输频率设置为 100ms, 串口
波特率设置为 115200 。通过步行模拟机器人的运动,期间移动端和操控端相互发
送测试指令,每 50 米为一个节点,达到 50 米时统计一次移动端和操控端的收发
指令帧数,计算出对应的丢包率,如此重复实验,不断拉开移动端和操作端的距离,
当出现明显的丢包现象时停止实验。
3.3 六轮差速移动机器人软件设计
机器人软件是基于机器人操作系统 (Robot Operating System,ROS) 进行设计开
发的,通过创建不同的功能包实现不同的功能,功能包之间可以通过话题发布或话
题订阅的方式进行数据交换,这种模块化的设计方式可以使得多人并行开发,提高
软件的设计效率。
根据图 3.1 轮式机器人的层级结构可以将软件分为感知模块、规划模块、控制
模块;还需要有能够记录机器人状态信息,记录数据日志的服务模块;同时,为了
满足机器人与人的交互,还需要人机交互模块。根据各个模块之间的关系得到机器
人软件的总体框图如图 3.10 所示。
在这一小节中主要是对机器人底盘软件进行设计,所涉及的模块主要是机器
人的控制模块,如图 3.10 中标红的部分。机器人自身的软件重点工作有两个:一
是解算上层规划层给出的运动指令下发给驱动单元,二是机器人接收遥控器数据
下发控制底盘运动,并通过数传通道反馈自身状态信息给监控端。具体实现流程如
3.11 所示。
3.11 为机器人底盘的控制流程。当底盘节点开启时,程序会循环检测控制
输入信号。当有控制输入时,判断输入信号是否为遥控话题发布的数据,如果为遥
控数据,机器人数据链路切换到人机交互链路;如果不是遥控话题发布数据,保持
机器人自主运行的正常通信链路。将控制信号输入到 SWDMR 的映射矩阵中将控
制信号转换成各个电机的驱动信号(如果电机为速度模式,则为轮速信号;如果电
机是力矩模式,则为电流信号),控制机器人的运动。判断机器人是否到达目标位
置,如果未到达,进入下一个循环;如果到达目标位置,则结束控制流程。
3.4 六轮差速移动机器人落地测试
3.4.1 六轮差速移动机器人遥控测试
软件框架设计完成将所有的硬件模块部署在机器人本体上,调试信号通道,进
行落地测试,初步验证软件的正确性,并暴露出机器人当前可能存在的一些问题。
落地测试验证了 SWDMR 的遥控通道的稳定性,紧急停止,差速转向等功能。
测试过程中发现当只给机器人某个方向的运动指令时,机器人的实际运动轨迹会
不断往一个方向发生偏移。分析产生这种现象的原因可能是车身结构的问题或者
路面不平整导致了在不改变遥控指令的情况下机器人偏离期望轨迹。将实验场地
选在路面较为平整的室内,还是会出现室外测试的现象,排除了路面因素导致机器
人的偏移。经过检查发现是因为机器人左前轮悬架安装位置有所偏差,最终使得机
器人在运行时会产生一个横向的力矩,使得机器人不断向一边偏移,形成一个螺纹
式的运动曲线。机器人某时刻的运行状态如图 3.13 所示:
3.4.2 基于 PID 的纠偏调节
根据前一小节的测试发现的问题,设计辅助控制器以减小这种系统误差产生
的影响,使得机器人能够较好的执行控制指令。选取机器人的横摆角作为性能指标,
通过加入 IMU 闭环补偿使得车辆有一定的纠偏能力。纠偏控制框图如图 3.14
示:
采样控制输入时刻机器人的实际横摆角度值,以此横摆角的值为起始横摆角,
IMU 测得的机器人横摆角反馈给辅助控制器,起始横摆角与机器人执行控制输
入时的横摆角做差,将差值输入到外环 PID 控制器,实现对横摆角的控制。为了
使得机器人的调节更加平滑,将外环 PID 控制器的输出作为内环 PID 的输入,并
通过 IMU 得到机器人调节过程中的横摆角速度,将两个变量做差输入到内环 PID
控制器实现横摆角速度的控制。下一采样时刻,重复上述过程。

3.15 是在室内测试时记录的曲线,蓝色曲线为横摆角速度响应曲线;黑色
曲线为横摆角响应曲线;红色虚线为横摆角设定曲线,上升沿时刻表示将当前机器
人的横摆角设置为参考值。在 0-15s 这个时间段处于待机状态,测试通信是否均为
正常;在 15-30s ,机器人在无纠偏控制下向前运动,因为有横摆角速度的存在,角
度误差一直在累积;在 30-35s 为处于待机状态;在 35-55s, 机器人回退到起点并手
动调整机器人车身位置,保证机器人与无纠偏状态下的初始位置一致;在 55s 之后
是进行纠偏实验, 58s 设定当前 IMU 上报的横摆角度位置为目标方向,纠偏控制
接入, 75s 给速度指令让机器人运动,角度值基本上与设定值保持一致, 140s 结束
实验。下面对横摆角速度进行分析:
3.16 为室内测试时机器人横摆角速度响应曲线,根据实验数据可以得到机
器人在没有纠偏控制时,前进时会有一个 -0.016rad/s 左右的横摆角速度存在;后退
时有一个 0.044rad/s 左右的横摆角速度,加入纠偏处理后,横摆角速度基本上稳定
在了 0 附近。

3.17 为室外测试时机器人的横摆角变化。在不加纠偏直行时,图 3.17(a)
示的 75-110s 时间段:机器人行驶 7m 左右车身方向就偏移了 32.9° 。控制机器人回
到初始的位置并手动调整底盘位姿,保持与开始实验时位置一致,纠偏控制介入,
如图 3.17(b) 所示纠偏过程中,机器人的航向角调节始终维持在目标值附近,最大
误差为 0.8° ,平均误差仅为 0.01°
3.5 本章小结
本章主要工作是搭建六轮差速移动机器人,首先对机器人可能需要用到的硬
件做了初步的分析,对驱动单元的额定转矩做了预估;接着是对基础硬件做了选
型及测试,验证了硬件的功能并测试出在遮挡条件下数据传输的稳定行,最大的
通信距离;然后对机器人软件设计的整体框架做了介绍,着重介绍了控制模块的
控制流程;最后是对机器人的搭建,并在搭建完成之后做了落地测试,同时根据
测试的效果设计了纠偏控制器作为运动控制的辅助控制器,使得机器人能够更为
准确的执行上层下发的控制指令。

相关文章:

基于X86六轮差速移动机器人运动控制器设计与实现(一)软件与硬件架构

本文研究的六轮差速移动机器人 (Six-Wheeled Differential Mobile Robot , SWDMR) 为了满足资源站到资源站点对点的物资运输,对机器人的跨越障碍能力 有较高的要求。对比传统的四轮移动机器人,六轮移动机器人能够提供更强的驱动 力&#…...

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.9 变量与常量

基本数据类型可以作为变量与常量使用,顾名思义,变量运行时可以改变其值,常量运行时不会改变其值。 常量分为整型常量、浮点型常量、字符常量、字符串常量和符号常量。 通常用#define来定义一个标识符来表示一个常量 用type name 常量来定义一个变量,…...

如何在 3dmax 中渲染? 3dmax渲染教程

3D Max是一款专业的3D计算机设计软件,用于创建3D动画、游戏、模型、图像等,在视频游戏开发商、电影和电视工作室的工作中发挥着重要作用。渲染是 3D max 建模的一个非常重要的部分。在渲染中,通过设置渲染选项的一些参数,我们可以…...

linux部署项目, 报数据库连接不上错误

问题描述: sprinboot项目, 本地连线上数据库可以使用, springboot项目中java包的版本是8.0, 线上数据库是5.7, 但在将项目部署到服务器上的时候发现项目启动报错, 于是寻找问题, 发现是useSSLtrue导致的 出问题前的链接地址: url: jdbc:mysql://localhost:3306/ja…...

现有的vue3+ts+vite项目集成electron

效果图 什么时Electron Electron是使用JavaScript,HTML和CSS构建跨平台的桌面应用程序框架。 Electron兼容Mac、Windows和Linux,可以构建出三个平台的应用程序。 现有的vue3项目集成Electron 安装依赖 原来有一个vue3+ts+vite+pnpm的项目,其中sub-modules是子项目,web是…...

线性代数的学习和整理8: 方阵和行列式相关(草稿-----未完成)

1.4.1 方阵 矩阵里,行数列数的矩阵叫做方阵方阵有很多很好的特殊属性 1.4.2 行列式 行列式是方阵的一种特殊运算如果矩阵行数列数相等,那么这个矩阵是方阵。行列数的计算方式和矩阵的不同只有方阵才有行列式行列式其实是,矩阵变化的一个面…...

Ubuntu vi 左下角没有提示

1 打开终端,输入以下命令 sudo gedit /etc/vim/vimrc.tiny 2 进入文件后,修改 set compatible 为set nocompatible,如下所示: " Vim configuration file, in effect when invoked as "vi". The aim of this "…...

Windows安装 Elasticsearch 教程

下载地址 Past Releases of Elastic Stack Software | Elastic 解压 解压完的样子 进入BIN目录 D:\Develop\elasticsearch\elasticsearch-7.12.0\bin 按住shift 鼠标右键 打开 powershell 窗口 查看ES版本 .\elasticsearch.bat --version 出现问题了 警告:不赞成…...

Dubbo 融合 Nacos 成为注册中心

快速上手 Dubbo 融合 Nacos 成为注册中心的操作步骤非常简单,大致步骤可分为“增加 Maven 依赖”以及“配置注册中心“。 增加 Maven 依赖 只需要依赖Dubbo客户端即可,关于推荐的使用版本,请参考Dubbo官方文档或者咨询Dubbo开发人员&#…...

kafka--kafka基础概念-ISR详解

kafka基础概念-ISR详解 主要是讲 主 往 从同步中的问题 当绿色P1接收到写入的数据,要同步到紫色的P1S1和P1S2 如何保证一致性呢? 使用In Sync Replicas 也就是ISR概念 为什么不一致的? 因为P1S1同步数据 可能花费 50ms P1S2可能花费60ms…...

《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.24.16集群(多主多从)》

一、架构图 如下图所示: 二、环境信息 1、部署规划 主机名K8S版本系统版本内核版本IP地址备注k8s-master-631.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点k8s-master-641.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + …...

音频解码及如何在Java实现

本人并不干这个,但是被迫下水了解了一下这个,稍微做了一下整理。再就是感觉现在网上以及ChatGPT在这方面给出的答案太水了,在此开辟一篇。无意放出代码,这里只介绍一些可能重要的点。 本来以为有了ChatGPT写这些就没有必要了&…...

Webshell 及检测绕过

webshell 概念 web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,WebShell是一种用来进行网站和服务器管理的脚本程序,webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于webshell的功能比较强大&#xff0…...

Ubuntu22.4系统mongodb数据库安装

Ubuntu22.4系统mongodb数据库安装 1、打开终端并运行以下命令,以导入 MongoDB GPG 密钥: wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -2、添加 MongoDB 仓库到你的系统。根据你的 Ubuntu 版本,选择…...

Vue初识别--环境搭建--前置配置过程

问题一: 在浏览器上的扩展程序上添加了vue-devtools后不生效: 解决方式:打开刚加入的扩展工具Vue.js devtools的允许访问文件地址设置 问题二:Vue新建一个项目 创建一个空文件夹hrsone,然后在VSCode中打开这个空文件夹…...

数据在内存中的储存·大小端(文字+画图详解)(c语言·超详细入门必看)

前言:Hello,大家好,我是心跳sy😘,本节我们介绍c语言的两种基本的内置数据类型:数值类型和字符类型在内存中的储存方法,并对大小端进行详细介绍(附两种大小端判断方法)&am…...

Word怎么转换成PDF文档?多个Word转换成PDF步骤分享

word文档是一种非常好用的文件格式,可以帮助用户们很好的保存图片和文字内容,不过并不是只有word这一种文档类文件格式,还有一种pdf文档也深受用户们的欢迎,在工作或者学习过程中这两种文档是可以互相转换格式的,那么W…...

【C++习题集】-- 堆

(用于复习) 目录 树概念及结构 名词概念 二叉树概念及结构 特殊的二叉树 满二叉树 完全二叉树 运算性质 二叉树存储结构 顺序存储 链式存储 堆 - 顺序存储 堆的性质 堆的实现 堆的应用 堆排序 直接建堆法 树概念及结构 概念&#xff1a…...

vue + vue-office 实现多种文件(docx、excel、pdf)的预览

支持多种文件( docx、excel、pdf)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。 github: 《仓库地址》 演 示: 《演示效果》 功能特色 一站式:提供docx、pdf、excel多种文档的在线预览方案,有它就够了简单&#xff1a…...

30.Netty源码服务端启动主要流程

highlight: arduino-light 服务端启动主要流程 •创建 selector •创建 server socket channel •初始化 server socket channel •给 server socket channel 从 boss group 中选择一个 NioEventLoop •将 server socket channel 注册到选择的 NioEventLoop 的 selector •…...

ssh端口转发

在本地客户端操作: ssh远程连接一段时间会失效的问题 vim /etc/ssh_config或vim /etc/ssh/ssh_config 在末尾添加ServerAliveInterval 30,意思是30s会发送一次向服务器连接的请求,以保持会话始终在线 验证: 放一段时间不操作,…...

独立站SEO是什么意思?自主网站SEO的含义?

什么是独立站SEO优化?自建站搜索引擎优化是指什么? 独立站SEO,作为网络营销的重要一环,正在逐渐引起人们的关注。在当今数字化时代,独立站已经成为许多企业、个人宣传推广的首选平台之一。那么,究竟什么是…...

Android JNI系列详解之NDK和JNI介绍

一、前提 针对自己在Android JNI和NDK这块技术的空白知识点,进行这个JNI系列的学习,记录这一阶段的学习。学习的主要步骤:从概念原理解析--->边学边实战--->从易到难,循序渐进。(学习这一阶段的前提:需要有Android开发基础) 学完JNI-NDK开发系列,达到的目的有:…...

LeetCode //C - 20. Valid Parentheses

20. Valid Parentheses Given a string s containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets.Open bracke…...

浅析Java设计模式之四策略模式

title: 浅析Java设计模式之四策略模式 date: 2018-12-29 17:26:17 categories: 设计模式 description: 浅析Java设计模式之四策略模式 1. 目录 1. 目录2. 概念 2.1. 应用场景2.2. 优缺点 2.2.1. 优点2.2.2. 缺点 3. 模式结构4. 样例 4.1. 定义策略4.2. 定义具体策略4.3. 定义…...

基于Spring Boot的餐厅订餐网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的餐厅订餐网站的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java springbo…...

【图像分割】理论篇(1)评估指标代码实现

图像分割是计算机视觉中的重要任务,用于将图像中的不同区域分割成具有语义意义的区域。以下是几种常用的图像分割评价指标以及它们的代码实现示例(使用Python和常见的计算机视觉库): 1. IoU (Intersection over Union) 与目标检…...

Git checkout 某个版本到指定文件夹下

文章目录 场景说明方案一:git archive 最简单省事方案二:git show 最灵活, 但文件较多时麻烦方案三:git --work-tree 有bug 场景说明 我不想checkout到覆盖本地工作区的文件, 而是想把该版本checkout到另外一个文件夹下&#xff…...

Java多态详解(2)

向上转型和向下转型 向上转型 定义:实际就是创建一个子类对象,将其当作父类对象来使用。 语法格式:父类类型 对象名 new 子类类型() Animal animal new Cat("元宝", 2); animal是父类类型,但是可以引用子…...

Camtasia导入srt字幕乱码

我们在使用camtasia制作视频项目时,有时为了用户体验需要导入srt格式的字幕文件,在操作无误的情况下,一顿操作猛如虎之后字幕顺利的导入到软件中了,但字幕却出现了乱码的现象。如下图所示: 如何解决srt乱码问题呢&…...

电商学院建设设计网站/怎么在百度推广自己的网站

译者:whistleofmysonggmail.com 博客 www.singmelody.com 我们已经学习过如何创建一个复杂的场景。但是如果没有光源和阴影,那么这次场景将是不完整的。 在这章,我们将会学习到: * Ogre3D支持的不同类型的光源和它们是如何使用的…...

海口网站建设哪家最好/广州推广引流公司

BIND是Berkeley Internet Name Domain Service的简写,由Kevin Dunlap为伯克利的4.3 BSD Unix操作系统编写。BIND是目前最为常见的DNS实现,是迄今为止最流行的DNS系统。它已经被移植到大多数Unix变种上,并且被作为许多供应商的Unix标准配置封装…...

做化妆品销售网站如何/种子搜索神器 bt 下载

在Java集合中,Map用于存储键值对<Key,Value>,可以通过Key来查找Value.当Key已经存在,则新的Value会覆盖原有的Value. Key 和 Value 是"一对一"的关系. HashMap继承于AbstractMap类,实现了Map接口. 如果想存储某人名下的所有房产, 此时Key 和Value 是"一对…...

摄影网站制作/企业管理咨询

/*** 系统在第一次使用这个类的时候调用(1个类只会调用一次)*/(void)initialize {// 设置导航栏主题UINavigationBar *navBar [UINavigationBar appearance];// 设置背景图片NSString *bgName nil;if (iOS7) { // 至少是iOS 7.0bgName "NavBar64";} else { // 非…...

网站建设 个人模板/seo优化排名教程

ln(link)功能说明&#xff1a;连接文件或目录。语  法&#xff1a;ln [-bdfinsv][-S ][-V ][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S ][-V ][--help][--version][源文件或目录...][目的目录]补充说明&#xff1a;ln指令用在连接文件或目录&am…...

网站建设作业/seo职业技能培训班

对消息队列的操作无非有下面三种类型&#xff1a; 1、 打开或创建消息队列消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值&#xff0c;所以&#xff0c;要获得一个消息队列的描述字&#xff0c;只需提供该消息队列的键值即可&#xff1b; 注&#xff1a;消…...