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

实践题AI还无法代做,其余题目AI准确率80%以上。


 

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

适用班级: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. 上述机器人巡线采用PID算法的原理及其参数如何调整?(10分)

得分

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

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

  1. 从云班课中下载考试专用环境并另存为mobile+个人学号。(10分)
  2. 在环境中四个赛道选择一个并添加巡线机器人,机器人命名为robot+个人学号。(10分)

   

  1. 在环境中添加机器人左右轮转速曲线绘制图,图命名为graph+个人学号,图背景为白色,左右轮曲线颜色自定义为不同颜色,例如蓝色和红色,两轮速度曲线不要采用相同颜色绘制。(10分)

得分

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

云班课提交程序和仿真调试录像

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

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

第三题和第四题评分表

题号

分数

备注

3.1

3.2

3.3

4.1

4.2

4.3


《移动机器人设计与实践》试卷摘要

本试卷为开卷考试,总分100分,时限100分钟。内容分为四部分:分析题(20分)比较三种机器人运动模型及应用场景,并分析扫地机器人选型原因;设计题(20分)要求设计餐厅巡线机器人并阐述PID算法原理;实践题(30分)包含环境配置、机器人添加及曲线绘制;编程题(30分)需编写传感器读取、运动控制和巡线算法代码。实践题需提交操作截图,编程题需提交程序及仿真视频。参考答案详细说明了两轮差动、前轮转向和全向运动的实现原理,分析了扫地机器人采用两轮差动的原因,并给出了巡线机器人设计要素和PID参数调整方法。实践操作和编程部分提供了具体步骤和代码示例框架。

 


 

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

一、分析题

1、

  • 两轮差动(2分)
    • 两轮差动机器人通过两个独立驱动的轮子实现运动。通过控制左右轮的速度差来实现转向,当左右轮速度相同时,机器人直线运动;当左右轮速度不同时,机器人以速度差对应的半径进行圆弧运动或原地旋转(速度差极大时)。
  • 前轮转向(2分)
    • 前轮转向后轮驱动机器人,前轮负责转向,后轮负责驱动。通过控制前轮的转向角度和后轮的转速来实现运动。前轮转向确定运动方向,后轮转速决定运动速度。
  • 全向运动(2分)
    • 全向运动机器人通常采用麦克纳姆轮或全向轮等特殊轮子。每个轮子可以独立控制其滚动方向和速度,通过多个轮子的协同运动,可以在二维平面空间内实现任意方向的直线运动和原地旋转。
  • 应用场景差异(4分)
    • 两轮差动机器人结构简单,控制相对容易,成本较低,适用于对运动精度要求不高、空间相对开阔且对成本敏感的场景,如一些简单的物流搬运机器人。
    • 前轮转向后轮驱动机器人转向较为平稳,适合在有一定速度要求且需要较好操控性的场景,如一些室内服务机器人,在商场等环境中运行。
    • 全向运动机器人运动灵活,可以在狭小空间内自由移动,适用于对运动灵活性要求高、空间有限的场景,如仓库中的货物分拣机器人,能够在复杂的货架间灵活穿梭。

2、

  • 扫地机器人选择(2分)
    • 市场上主流扫地机器人多采用两轮差动模型。
  • 选择此类模型的原因
    1. 结构简单(2分):两轮差动模型结构简单,成本较低,易于制造和维护,对于大规模生产的扫地机器人来说,能够有效控制成本。
    2. 控制相对容易(2分):其控制算法相对简单,不需要复杂的转向机构控制,通过控制左右轮速度差即可实现基本的运动和转向,降低了软件开发的难度。
    3. 空间适应性较好(2分):在家庭等室内环境中,虽然空间相对有限,但两轮差动机器人能够通过灵活调整左右轮速度来适应不同的障碍物和空间布局,完成扫地任务。
    4. 稳定性足够(2分):在扫地过程中,机器人不需要极高的运动速度和灵活性,两轮差动模型能够提供足够的稳定性来保证扫地作业的正常进行。
二、设计题
  • 设计一款餐厅巡线机器人需要考虑哪些因素?(10分)
    1. 环境因素:餐厅地面材质(如瓷砖、木地板等)会影响机器人轮子的摩擦力,进而影响运动稳定性;餐厅内的桌椅布局、人员流动情况等会影响机器人的巡线路径规划和避障能力。
    2. 巡线传感器:选择合适的巡线传感器,如红外传感器、摄像头等,要确保传感器能够准确识别巡线标志,并且具有足够的灵敏度和抗干扰能力。
    3. 机器人尺寸:机器人尺寸要适应餐厅内的通道宽度,确保能够在桌椅间自由穿梭,同时要考虑到存储和运输的便利性。
    4. 运动性能:包括机器人的最大速度、加速度、转向半径等参数,要根据餐厅的实际需求进行设计,既要保证巡线效率,又要保证运动的安全性。
    5. 电源续航:餐厅面积较大,机器人需要长时间工作,因此要配备大容量的电池或采用高效的充电方式,确保机器人能够持续完成巡线任务。
    6. 避障能力:餐厅内人员和物品可能随时移动,机器人要具备可靠的避障传感器和算法,能够及时检测到障碍物并采取相应的避障措施。
    7. 噪音控制:餐厅是一个需要安静的环境,机器人运动时产生的噪音要尽可能小,避免影响顾客就餐体验。
    8. 操作界面:设计简单易用的操作界面,方便餐厅工作人员对机器人进行启动、停止、路径设置等操作。
    9. 数据传输与监控:机器人要将巡线过程中的数据(如巡线状态、障碍物信息等)传输到监控中心,方便管理人员实时了解机器人的工作情况。
    10. 成本:在满足功能需求的前提下,要尽可能控制机器人的制造成本,提高产品的市场竞争力。
  • 上述机器人巡线采用PID算法的原理及其参数如何调整?(10分)
    • PID算法原理(5分)
      • PID算法是一种常用的控制算法,它通过计算期望值(巡线路径的中心位置)与实际值(机器人当前位置)之间的偏差,根据偏差的比例(P)、积分(I)和微分(D)来调整控制量(左右轮速度差),从而使机器人能够快速、准确地跟踪巡线路径。
      • 比例环节(P):根据偏差的大小成比例地调整控制量,偏差越大,控制量调整越大,能够快速响应偏差,但可能会产生超调。
      • 积分环节(I):对偏差进行积分,用于消除系统的稳态误差,使机器人能够精确地跟踪巡线路径,但积分作用过强可能会导致系统振荡。
      • 微分环节(D):根据偏差的变化率来调整控制量,能够预测偏差的变化趋势,提前进行控制,抑制超调,提高系统的稳定性,但对噪声比较敏感。
    • 参数调整方法(5分)
      1. 初步确定比例系数Kp:先关闭积分和微分环节(Ki = 0,Kd = 0),逐渐增大Kp,直到机器人开始出现振荡,然后将Kp减小到振荡幅度的一半左右,作为初步的Kp值。
      2. 引入积分系数Ki:在Kp初步确定的基础上,逐渐增大Ki,观察系统的稳态误差是否减小。如果系统出现振荡,则适当减小Ki,直到找到一个合适的Ki值,使系统既能够消除稳态误差,又不会产生明显的振荡。
      3. 引入微分系数Kd:在Kp和Ki确定后,逐渐增大Kd,观察系统的超调量是否减小,稳定性是否提高。如果系统对噪声过于敏感,则适当减小Kd,直到找到一个合适的Kd值,使系统具有良好的动态性能和稳定性。
      4. 反复调整:在实际调试过程中,需要根据机器人的具体运动情况,反复调整Kp、Ki和Kd三个参数,以达到最佳的巡线效果。
三、实践题

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

  1. 从云班课中下载考试专用环境并另存为mobile+个人学号
    • 登录云班课,找到考试专用环境下载链接,下载完成后,在文件保存位置将文件重命名为“mobile+个人学号”。
  2. 在环境中四个赛道选择一个并添加巡线机器人,机器人命名为robot+个人学号
    • 打开下载的环境文件,在界面中选择一个赛道。
    • 在机器人添加功能中,选择合适的巡线机器人模型,将其添加到选定的赛道上,并将机器人命名为“robot+个人学号”。
  3. 在环境中添加机器人左右轮转速曲线绘制图,图命名为graph+个人学号,图背景为白色,左右轮曲线颜色自定义为不同颜色,例如蓝色和红色,两轮速度曲线不要采用相同颜色绘制
    • 在环境设置或数据可视化功能中,找到添加曲线绘制图的选项。
    • 创建一个新的曲线绘制图,命名为“graph+个人学号”。
    • 设置图背景为白色,分别选择蓝色和红色作为左右轮转速曲线的颜色。
    • 将机器人左右轮转速数据与曲线绘制图关联,确保能够实时显示左右轮转速曲线。
四、编程题

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

  1. 机器人获取环境信息的传感器代码(10分)
# 假设使用Python和某种机器人控制库
import robot_library  # 假设的机器人控制库

class Sensor:
    def __init__(self):
        self.robot = robot_library.Robot()  # 创建机器人对象

    def get_line_info(self):
        # 获取巡线传感器数据
        line_data = self.robot.get_line_sensors_data()  # 假设的获取巡线传感器数据方法
        return line_data

# 使用示例
sensor = Sensor()
line_info = sensor.get_line_info()
print("巡线传感器数据:", line_info)

python

# 假设使用Python和某种机器人控制库
import robot_library # 假设的机器人控制库
class Sensor:
def __init__(self):
self.robot = robot_library.Robot() # 创建机器人对象
def get_line_info(self):
# 获取巡线传感器数据
line_data = self.robot.get_line_sensors_data() # 假设的获取巡线传感器数据方法
return line_data
# 使用示例
sensor = Sensor()
line_info = sensor.get_line_info()
print("巡线传感器数据:", line_info)
  1. 机器人运动控制如左右轮转速的代码(10分)
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(单位根据实际情况)

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 LineFollowing:
    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_line(self):
        while True:
            line_info = self.sensor.get_line_info()
            # 假设巡线传感器数据中,中心位置为0,偏差越大表示偏离中心越远
            error = line_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()
line_following = LineFollowing(robot)
line_following.follow_line()

python

class LineFollowing:
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_line(self):
while True:
line_info = self.sensor.get_line_info()
# 假设巡线传感器数据中,中心位置为0,偏差越大表示偏离中心越远
error = line_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()
line_following = LineFollowing(robot)
line_following.follow_line()

第三题和第四题评分表

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值