2022-2023-2-移动机器人设计与实践-期末B

article/2025/7/18 17:22:02

2022-2023-2-移动机器人设计与实践-期末A-CSDN博客


本文介绍了《移动机器人设计与实践》课程期末考试试卷B卷的内容与参考答案。试卷包含分析题、设计题、实践题和编程题四部分,总分100分。分析题考察学生对空中、水面和地上三种移动机器人模型运动机制及应用场景的理解;设计题要求设计工业仓储物流机器人并分析路径规划方法;实践题涉及机器人环境搭建与轨迹绘制;编程题则测试传感器数据获取、运动控制和路径跟踪算法的实现能力。参考答案提供了详细解答思路和评分标准,帮助学生理解课程核心内容并应对实践考核。


移动机器人设计与实践》考试试卷(B

适用班级:1609

试题总分:100 分  考试时限:100分钟  考试形式:开卷

题号

总分

阅卷人

得分

得分

分析(本大题共2小题, 每小题10分, 共20分。)

1、简要分析空中、水面和地上三种移动机器人模型差异(侧重如何实现运动角度论述)并对比说明具体应用场景差异。

空中(2分):_______________________________________________________

水面(2分):_______________________________________________________

地上(2分):_______________________________________________________

应用场景差异(4分):_________________________________________________

____________________________________________________________________

2、市场上工业仓储物流机器人采用上述三种模型中哪一种,为何选择这种模型

物流机器人选择(2分):_______________________________________________

选择此类模型的原因:1.__________________________________________(2分)

2._____________________________________________________________(2分)3._____________________________________________________________(2分)4._____________________________________________________________(2分)

得分

设计本大题共2小题, 每小题10分, 共20分。

  1. 设计一款工业仓储物流机器人需要考虑哪些因素?(10分)

  1. 上述机器人如何实现路径规划,提升物流效率需要注意哪些限制?(10分)

得分

三、实践题(每小题10分, 3题共30分。

完成后截图放到同一个pdf文档中并标注题号提交

  1. 从云班课中下载考试专用环境并另存为mobile+个人学号。(10分)
  2. 在环境中四个赛道选择一个并添加赛道机器人(机器人在行驶过程中不能完全离开黑色赛道),机器人命名为robot+个人学号。(10分)

   

  1. 在环境中添加机器人轨迹曲线绘制图,图命名为path+个人学号,图背景为白色,轨迹曲线颜色自定义为不同颜色,如果不会,就绘制左轮和右轮速度曲线。(10分)

得分

  • 编程题(每小题10分, 3题共30分。

提交程序和仿真视频

  1. 完成第三题准备工作后,机器人获取环境信息的传感器代码。(10分)
  2. 机器人运动控制如左右轮转速的代码。(10分)
  3. 机器人完成要求任务如赛道行驶的控制代码。(10分)

如上全部内容完成后,保存到mobile+个人学号。开启仿真并录制机器人完成赛道行驶任务视频,要求必须包含完整的一圈巡线。

第三题和第四题评分表

题号

分数

备注

3.1

3.2

3.3

4.1

4.2

4.3


《移动机器人设计与实践》考试试卷(B卷)参考答案

一、分析题

1、

  • 空中(2分)
    • 空中移动机器人(如无人机)通过螺旋桨或旋翼产生升力来实现运动。通过调整不同螺旋桨或旋翼的转速,改变升力的大小和方向,从而实现上升、下降、前进、后退、左右平移以及旋转等运动。例如,四旋翼无人机,四个旋翼的转速不同组合可以产生各种方向的运动,通过控制旋翼的相对转速来实现姿态调整和方向改变。
  • 水面(2分)
    • 水面移动机器人(如无人船)主要通过推进器(如螺旋桨)产生推力来实现运动。推进器可以安装在船体的不同位置,通过改变推进器的转速和方向来控制船的运动。一些无人船还可能采用舵来辅助转向,通过调整舵的角度,改变水流对船体的作用力方向,从而实现更灵活的转向。
  • 地上(2分)
    • 地上移动机器人(如轮式、履带式机器人)通过轮子或履带与地面的摩擦力来实现运动。轮式机器人通过轮子的转动,履带式机器人通过履带的滚动来前进。对于轮式机器人,可以通过控制不同轮子的转速和转向来实现各种运动,如两轮差动机器人通过左右轮速度差实现转向;履带式机器人则依靠履带的特殊结构,能够在复杂地形上行驶,通过调整两侧履带的速度差实现转向。
  • 应用场景差异(4分)
    • 空中移动机器人适用于需要快速覆盖大面积区域、对地形障碍物无限制且能够从空中获取信息的场景,如农业植保(快速大面积喷洒农药)、电力巡检(对高压线路进行空中检查)、测绘(获取高精度的地理信息)等。
    • 水面移动机器人适用于在水域环境中执行任务,如水质监测(定期采集水样进行水质分析)、海洋资源勘探(寻找海底矿产资源)、水上搜救(在水面搜索失踪人员或船只)等。
    • 地上移动机器人适用于在地面环境中执行任务,尤其是对运动精度和负载能力有一定要求的场景,如工业仓储物流(货物搬运和分拣)、服务机器人(在商场、医院等室内场所提供服务)、救援机器人(在灾难现场进行人员搜救和物资运输)等。

2、

  • 物流机器人选择(2分)
    • 市场上工业仓储物流机器人多采用地上移动机器人模型,如轮式或履带式机器人。
  • 选择此类模型的原因
    1. 负载能力强(2分):工业仓储物流通常需要搬运较重的货物,地上移动机器人可以通过合理的结构设计,如采用大尺寸的轮子或坚固的履带,以及配备强大的驱动电机,来承受较大的负载,满足物流作业的需求。
    2. 运动精度高(2分):在仓储环境中,货物的存放和搬运需要较高的精度,地上移动机器人可以通过精确的传感器和控制系统,实现准确的定位和路径跟踪,确保货物能够准确地放置到指定位置。
    3. 适应复杂地形(2分):仓储环境可能存在不同的地面状况,如平坦的水泥地面、有坡度的地面或一些简单的障碍物,轮式或履带式地上移动机器人能够较好地适应这些地形,保证机器人的正常运行。
    4. 成本相对较低(2分):与空中和水面移动机器人相比,地上移动机器人的制造和维护成本相对较低,这对于大规模应用于工业仓储物流领域来说,能够有效降低企业的运营成本。
二、设计题
  • 设计一款工业仓储物流机器人需要考虑哪些因素?(10分)
    1. 负载能力:根据仓储物流中货物的重量和体积,确定机器人能够承载的最大负载,确保机器人能够安全、稳定地搬运货物。
    2. 运动性能:包括机器人的最大速度、加速度、转向半径等参数,要满足仓储作业的效率要求,同时要保证运动的安全性,避免与周围环境和人员发生碰撞。
    3. 定位与导航:采用合适的定位技术(如激光雷达、视觉定位等)和导航算法(如A*算法、Dijkstra算法等),确保机器人能够在复杂的仓储环境中准确找到货物的存放位置和搬运路径。
    4. 避障能力:配备可靠的避障传感器(如超声波传感器、红外传感器等),能够及时检测到障碍物并采取相应的避障措施,避免机器人与货物、货架或其他设备发生碰撞。
    5. 通信能力:机器人需要与仓储管理系统进行实时通信,接收任务指令、上传货物信息和自身状态等信息,确保物流作业的高效协同。
    6. 电源续航:仓储作业通常需要机器人长时间工作,因此要配备大容量的电池或采用高效的充电方式,确保机器人能够持续完成搬运任务。
    7. 尺寸与结构:机器人的尺寸要适应仓储货架的间距和通道宽度,结构要坚固耐用,能够承受日常搬运作业中的冲击和振动。
    8. 操作界面:设计简单易用的操作界面,方便仓库工作人员对机器人进行启动、停止、任务设置等操作。
    9. 安全性:除了避障能力外,还要考虑机器人的电气安全、机械安全等方面,确保在运行过程中不会对人员和货物造成伤害。
    10. 成本:在满足功能需求的前提下,要尽可能控制机器人的制造成本,提高产品的市场竞争力。
  • 上述机器人如何实现路径规划,提升物流效率需要注意哪些限制?(10分)
    • 路径规划实现方法(5分)
      • 工业仓储物流机器人通常采用基于地图的路径规划方法。首先,通过激光雷达、视觉传感器等设备构建仓储环境的地图,标记出货架、通道、障碍物等位置信息。
      • 然后,根据任务指令和货物的存放位置,使用路径规划算法(如A算法)在地图上搜索从起点到终点的最优路径。A算法通过综合考虑路径的长度和启发式函数(如到终点的直线距离)来选择最优路径。
      • 在机器人行驶过程中,根据实时获取的环境信息(如突然出现的障碍物)对路径进行动态调整,确保机器人能够安全、高效地到达目的地。
    • 提升物流效率需要注意的限制(5分)
      1. 环境动态变化:仓储环境可能随时发生变化,如货物的增减、货架的移动等,这会影响路径规划的准确性。机器人需要具备实时更新地图和重新规划路径的能力。
      2. 多机器人协同:在大型仓储环境中,可能有多台机器人同时工作,需要解决多机器人之间的路径冲突和协同问题,避免机器人相互干扰,提高整体物流效率。
      3. 路径复杂度:复杂的仓储布局和大量的货架会导致路径规划的复杂度增加,需要优化算法以提高路径规划的速度和准确性。
      4. 机器人性能限制:机器人的最大速度、加速度和转向半径等性能参数会限制路径的选择,在规划路径时要充分考虑机器人的实际能力。
      5. 时间限制:物流作业通常有时间要求,如货物的及时配送等,路径规划需要在保证安全的前提下,尽可能缩短机器人的行驶时间,提高物流效率。
三、实践题

(此部分为实践操作题,无具体文字答案,以下为操作步骤参考)

  1. 从云班课中下载考试专用环境并另存为mobile+个人学号
    • 登录云班课,找到考试专用环境下载链接,下载完成后,在文件保存位置将文件重命名为“mobile+个人学号”。
  2. 在环境中四个赛道选择一个并添加赛道机器人(机器人在行驶过程中不能完全离开黑色赛道),机器人命名为robot+个人学号
    • 打开下载的环境文件,在界面中选择一个赛道。
    • 在机器人添加功能中,选择合适的赛道机器人模型,将其添加到选定的赛道上,并将机器人命名为“robot+个人学号”。
    • 通过调整机器人的初始位置和姿态,以及编写控制代码,确保机器人在行驶过程中不会完全离开黑色赛道。
  3. 在环境中添加机器人轨迹曲线绘制图,图命名为path+个人学号,图背景为白色,轨迹曲线颜色自定义为不同颜色,如果不会,就绘制左轮和右轮速度曲线
    • 在环境设置或数据可视化功能中,找到添加曲线绘制图的选项。
    • 创建一个新的曲线绘制图,命名为“path+个人学号”。
    • 设置图背景为白色,选择自定义颜色绘制轨迹曲线(如果不会绘制轨迹曲线,则选择绘制左轮和右轮速度曲线)。
    • 将机器人位置数据(或左右轮速度数据)与曲线绘制图关联,确保能够实时显示轨迹曲线(或左右轮速度曲线)。
四、编程题

(以下为代码示例参考,具体代码需根据实际环境和编程语言进行调整)

  1. 机器人获取环境信息的传感器代码(10分)
# 假设使用Python和某种机器人控制库
import robot_library  # 假设的机器人控制库class Sensor:def __init__(self):self.robot = robot_library.Robot()  # 创建机器人对象def get_track_info(self):# 获取赛道传感器数据(假设机器人有用于检测赛道的传感器)track_data = self.robot.get_track_sensors_data()  # 假设的获取赛道传感器数据方法return track_datadef get_position_info(self):# 获取机器人位置信息(如果需要绘制轨迹曲线)position_data = self.robot.get_position_data()  # 假设的获取位置数据方法return position_data# 使用示例
sensor = Sensor()
track_info = sensor.get_track_info()
print("赛道传感器数据:", track_info)
# position_info = sensor.get_position_info()
# print("机器人位置信息:", position_info)

python

# 假设使用Python和某种机器人控制库
import robot_library # 假设的机器人控制库
class Sensor:
def __init__(self):
self.robot = robot_library.Robot() # 创建机器人对象
def get_track_info(self):
# 获取赛道传感器数据(假设机器人有用于检测赛道的传感器)
track_data = self.robot.get_track_sensors_data() # 假设的获取赛道传感器数据方法
return track_data
def get_position_info(self):
# 获取机器人位置信息(如果需要绘制轨迹曲线)
position_data = self.robot.get_position_data() # 假设的获取位置数据方法
return position_data
# 使用示例
sensor = Sensor()
track_info = sensor.get_track_info()
print("赛道传感器数据:", track_info)
# position_info = sensor.get_position_info()
# print("机器人位置信息:", position_info)
  1. 机器人运动控制如左右轮转速的代码(10分)
class MotionControl:def __init__(self, robot):self.robot = robotdef set_wheel_speed(self, left_speed, right_speed):# 设置左右轮转速self.robot.set_left_wheel_speed(left_speed)  # 假设的设置左轮速度方法self.robot.set_right_wheel_speed(right_speed)  # 假设的设置右轮速度方法# 使用示例
robot = robot_library.Robot()
motion_control = MotionControl(robot)
motion_control.set_wheel_speed(100, 100)  # 设置左右轮速度为100(单位根据实际情况)

python

class MotionControl:
def __init__(self, robot):
self.robot = robot
def set_wheel_speed(self, left_speed, right_speed):
# 设置左右轮转速
self.robot.set_left_wheel_speed(left_speed) # 假设的设置左轮速度方法
self.robot.set_right_wheel_speed(right_speed) # 假设的设置右轮速度方法
# 使用示例
robot = robot_library.Robot()
motion_control = MotionControl(robot)
motion_control.set_wheel_speed(100, 100) # 设置左右轮速度为100(单位根据实际情况)
  1. 机器人完成要求任务如赛道行驶的控制代码(10分)
class TrackFollowing:def __init__(self, robot):self.robot = robotself.sensor = Sensor()self.motion_control = MotionControl(robot)self.Kp = 0.5  # 比例系数self.Ki = 0.1  # 积分系数self.Kd = 0.2  # 微分系数self.last_error = 0self.integral = 0def follow_track(self):while True:track_info = self.sensor.get_track_info()# 假设赛道传感器数据中,中心位置为0,偏差越大表示偏离中心越远error = track_info - 0  # 计算偏差self.integral += error  # 积分项derivative = error - self.last_error  # 微分项self.last_error = error# PID计算控制量(左右轮速度差)control = self.Kp * error + self.Ki * self.integral + self.Kd * derivative# 设置左右轮速度base_speed = 100  # 基础速度left_speed = base_speed - controlright_speed = base_speed + controlself.motion_control.set_wheel_speed(left_speed, right_speed)# 可以添加一些终止条件,例如完成一圈赛道行驶等# if ...:#     break# 使用示例
robot = robot_library.Robot()
track_following = TrackFollowing(robot)
track_following.follow_track()

python

class TrackFollowing:
def __init__(self, robot):
self.robot = robot
self.sensor = Sensor()
self.motion_control = MotionControl(robot)
self.Kp = 0.5 # 比例系数
self.Ki = 0.1 # 积分系数
self.Kd = 0.2 # 微分系数
self.last_error = 0
self.integral = 0
def follow_track(self):
while True:
track_info = self.sensor.get_track_info()
# 假设赛道传感器数据中,中心位置为0,偏差越大表示偏离中心越远
error = track_info - 0 # 计算偏差
self.integral += error # 积分项
derivative = error - self.last_error # 微分项
self.last_error = error
# PID计算控制量(左右轮速度差)
control = self.Kp * error + self.Ki * self.integral + self.Kd * derivative
# 设置左右轮速度
base_speed = 100 # 基础速度
left_speed = base_speed - control
right_speed = base_speed + control
self.motion_control.set_wheel_speed(left_speed, right_speed)
# 可以添加一些终止条件,例如完成一圈赛道行驶等
# if ...:
# break
# 使用示例
robot = robot_library.Robot()
track_following = TrackFollowing(robot)
track_following.follow_track()

第三题和第四题评分表

题号分数备注
3.1根据实际操作和截图质量评分,截图完整且标注清晰可得满分,否则酌情扣分
3.2根据机器人命名、赛道选择和是否完全离开赛道的正确性评分,全部正确可得满分,否则酌情扣分
3.3根据曲线绘制图的背景颜色、曲线颜色设置和是否显示轨迹曲线(或左右轮速度曲线)评分,全部符合要求可得满分,否则酌情扣分
4.1根据传感器代码的功能完整性、正确性和可读性评分,能够准确获取赛道传感器数据(或位置数据)可得满分,否则酌情扣分
4.2根据运动控制代码的功能完整性、正确性和可读性评分,能够准确设置左右轮转速可得满分,否则酌情扣分
4.3根据赛道行驶控制代码的功能完整性、正确性和可读性评分,机器人能够完成赛道行驶任务且PID算法应用合理可得满分,否则酌情扣分

http://www.hkcw.cn/article/EeXxqhsZFP.shtml

相关文章

DM8部分函数的功能分别举例说明

DM8部分函数的功能分别举例说明 1 环境说明2 函数功能使用示例2.1 AVG OVER2.2 COUNT OVER2.3 MIN OVER,MAX OVER,SUM OVER2.4 DENSE_RANK2.5 ROW_NUMBER2.6 FIRST2.7 LAG2.8 WM_CONCAT 3 更多达梦数据库全方位指南:安装 优化 与实战教程 1 环境说明 Cp…

大语言模型 24 - MCP 自动操作 提高模型上下文能力 Cursor + Sequential Thinking Server Memory

点一下关注吧!!!非常感谢!!持续更新!!! Java篇: MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 大数据篇 300: Hadoop&…

【多线程初阶】线程状态 线程安全

文章目录 1.线程状态线程的状态及状态转移 2.多线程带来的风险 - 线程安全(重点)线程安全问题产生的原因如何解决线程安全问题 1.线程状态 EE的第一篇总览中有提到过 进程的状态 1.就绪 2.阻塞 这都是从操作系统的视角看待的 Java线程也是对操作系统线程的封装,针对状态这里…

Python 序列的修改、散列和切 片(Vector类第4版:散列和快速等值 测试)

Vector类第4版:散列和快速等值测试 我们要再次实现__hash__ 方法。加上现有的__eq__ 方法,这会把 Vector 实例变成可散列的对象。 示例 9-8 中的__hash__ 方法简单地计算 hash(self.x) ^ hash(self.y)。这一次,我们要使用^(异或…

ai姿势项目

链接:https://pan.baidu.com/s/1dGSt7wEk8w6O7zlgme3CUQ?pwd=x60y 提取码:x60y --来自百度网盘超级会员V2的分享 配置环境 conda create -n 环境名称 python=3.8conda activate 环境名称 如果你运行程序的话会报错 ModuleNotFoundError: No module named mediapipe 进…

LoRA:高效微调预训练模型的利器

LoRA(Low-Rank Adaptation) 的思想:冻结预训练模型权重,将可训练的低秩分解矩阵注入到Transformer架构的每一层(也可单独配置某一层)中, 从而大大减少在下游任务的可训练参数量。 核心原理 对于预训练权重矩阵 ,LoRA限制了其更新…

越界检测算法AI智能分析网关V4打造多场景化的应用解决方案

一、方案概述 随着社会发展,传统安防系统在复杂环境下暴露出误报率高、响应慢等短板。AI智能分析网关V4依托先进算法与强大算力,实现周界区域精准监测与智能分析,显著提升入侵防范效能。本方案通过部署该网关及其越界检测功能,为…

使用SkiaSharp打造专业级12导联心电图查看器:性能与美观兼具的可视化实践

前言 欢迎关注dotnet研习社,今天我们研究的Google Skia图形库的.NET绑定SkiaSharp图形库。 在医疗软件开发领域,心电图(ECG)数据的可视化是一个既有挑战性又极其重要的任务。作为开发者,我们需要创建既专业又直观的界面来展示复杂的生物医学…

24位高精度数据采集卡NET8860音频振动信号采集监测满足自动化测试应用现场的多样化需求

NET8860 高分辨率数据采集卡技术解析 阿尔泰科技的NET8860是一款高性能数据采集卡,具备8路同步模拟输入通道和24bit分辨率,适用于高精度信号采集场景。其输入量程覆盖10V、5V、2V、1V,采样速率高达256KS/s,能够满足多种工业与科研…

2025年05月30日Github流行趋势

项目名称:agenticSeek 项目地址url:https://github.com/Fosowl/agenticSeek项目语言:Python历史star数:13040今日star数:1864项目维护者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

PCB设计实践(三十一)PCB设计中机械孔的合理设计与应用指南

一、机械孔的基本概念与分类 机械孔是PCB设计中用于实现机械固定、结构支撑、散热及电气连接的关键结构元件,其分类基于功能特性、制造工艺和应用场景的差异,主要分为以下几类: 1. 金属化机械孔 通过电镀工艺在孔内壁形成导电层,…

TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍

前言 时间同步网络中的每个节点,都被称为时钟,PTP协议定义了三种基本时钟节点。本文将介绍这三种类型的时钟,以及gPTP在同步机制上与其他机制的区别 本系列文章将由浅入深的带你了解gPTP,欢迎关注 时钟类型 在PTP中我们将各节…

五.MySQL表的约束

1.not null空属性 和 default缺省值 两个值:null(默认的)和not null(不为空) 元素可以分为两类 1.not null 不能为空的,这种没有默认default 要手动设定,我们必须插入数据而且不能为NULL。但我们插入数据有两种方式 1.…

4.Haproxy搭建Web群集

一.案例分析 1.案例概述 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,包括LVS、Nginx,LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能…

NewsNow:免费好用的实时新闻聚合平台,让信息获取更优雅(深度解析、部署攻略)

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、NewsNow项目概览1. 项目核心亮点2. 技术架构特点 二、核心功能深度解析1. 智能新…

论文阅读笔记——FLOW MATCHING FOR GENERATIVE MODELING

Flow Matching 论文 扩散模型:根据中心极限定理,对原始图像不断加高斯噪声,最终将原始信号破坏为近似的标准正态分布。这其中每一步都构造为条件高斯分布,形成离散的马尔科夫链。再通过逐步去噪得到原始图像。 Flow matching 采取…

【leetcode】02.07. 链表相交

链表相交 题目代码1. 计算两个链表的长度2. 双指针 题目 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 代码 …

文字转图片的字符画生成工具

软件介绍 今天要介绍的这款软件可以将文字转换成图片的排列形式,非常适合需要将文字图形化的场景,建议有需要的朋友收藏。 软件名称与用途 这款软件名为《字符画大师》,是一款在网吧等场所非常流行的聊天辅助工具,其主要功能就…

Bitlocker密钥提取之SYSTEM劫持

该漏洞编号CVE-2024-20666,本文实现复现过程,Windows系统版本如下 简介 从Windows10(th1)开始,微软在winload模块中,增加了systemdatadevice字段值的获取,该字段值存储在BCD引导配置文件中。当…

明场检测与暗场检测的原理

知识星球里的学员问:明场检测与暗场检测原理上有什么区别? 如上图, 明场检测(Bright-field Inspection) 工作原理: 光线从近乎垂直照射到样品表面。 如果表面平整、无缺陷,光线会直接反射回镜…