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

ROS云课三分钟-阿克曼车式移动机器人倒车入库出库测试实验

初稿

学生比我强,一部分学生作业已经提交,我忙到一直没时间更新,就拖到了250525。

发现提交视频里面能力满分学生超过了10%,远超预期。 

学生实力远强于我,这是非常好的,棒棒哒。

一键配置

echo "Upgrade Mission Begins."echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.ascsudo apt-key add ~/ros.ascsudo apt updateecho "Upgrade Mission Completed."echo "Teb Mission Begins."sudo apt install ros-kinetic-stage-ros ros-kinetic-teb-local-planner ros-kinetic-teb-local-planner-tutorials ros-kinetic-global-planner* -yecho "Teb Mission Completed."roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch

等待自动完成后:


文件管理器,如果需要管理员权限,命令前加上sudo。

sudo thunar

出现超级用户提示。 

修改:/opt/ros/kinetic/share/teb_local_planner_tutorials/maps/

地图如下


原文件一定要备份,修改后如下:


然后打开就可以,需要一个autoparkio的程序。

需要修改巡逻程序,将巡逻点更新为依次停车点等。

宽车位3个,窄车位2个。

60分效果

ROS云课三分钟-阿克曼车式移动机器人倒车入库出库测试实验60分

80分效果

ROS云课三分钟-阿克曼车式移动机器人倒车入库出库测试实验80分

满分效果期待学生分享自己的实践体会。

差速巡线机器人设计-满分(100+)的报告-2020_视觉差速巡线逻辑-CSDN博客

非常好的总结!以下是对上述内容要点的精简回顾与整理,帮助进一步巩固理解:

1. 什么是ROS?

  • ROS(Robot Operating System):一个开源的机器人软件框架,提供工具、库和功能,用于构建机器人应用程序。
  • 本代码通过ROS实现机器人巡逻功能

2. 代码结构

代码分为三个主要部分:

  1. 导入库
    • rospy:Python与ROS交互的核心库。
    • 消息类型:如 PoseStampedPosePointQuaternion,描述机器人位置和姿态。
  2. 定义功能函数
    • send_goal(goal_pub, waypoint):向指定主题发布机器人目标位置。
  3. 主程序逻辑
    • 包含节点初始化、定义目标点、设置发布者、目标点循环发送等核心逻辑。

3. 代码详细功能解析

(1) 导入库
 

python

#!/usr/bin/env python
import rospy
from geometry_msgs.msg import PoseStamped, Pose, Point, Quaternion
  • Shebang (#!/usr/bin/env python)
    • 指定脚本用Python解释器运行。
  • rospy
    • 提供与ROS系统交互的功能,如节点创建、通信等。
  • 消息类型 (geometry_msgs.msg)
    • 用于描述目标点的数据结构(如位置坐标和姿态信息)。
(2) 定义函数:send_goal
 

python

def send_goal(goal_pub, waypoint):
rospy.loginfo("Sending goal to: (%.2f, %.2f)", waypoint.pose.position.x, waypoint.pose.position.y)
goal_pub.publish(waypoint)
  • 功能:向主题发布机器人目标点。
  • 参数
    • goal_pub:发布者对象。
    • waypoint:目标点(包含位置和姿态信息)。
  • 主要逻辑
    • 使用 rospy.loginfo 输出日志,显示目标点坐标。
    • 调用 goal_pub.publish(waypoint) 发布目标点。
(3) 主程序:main
  1. 初始化节点
     

    python

    rospy.init_node('patrol_robot', anonymous=True)
    • 初始化一个名为 patrol_robot 的ROS节点。
    • anonymous=True:避免节点名称冲突,自动添加随机后缀。
  2. 定义巡逻点
     

    python

    waypoints = [
    PoseStamped(
    header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
    pose=Pose(
    position=Point(x=1.0, y=1.0, z=0.0),
    orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
    )
    ),
    PoseStamped(
    header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
    pose=Pose(
    position=Point(x=3.0, y=3.0, z=0.0),
    orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
    )
    )
    ]
    • waypoints:目标点列表(机器人巡逻路径)。
    • 每个目标点包含:
      • header
        • frame_id="map":指定参考坐标系为地图坐标系。
        • stamp=rospy.Time.now():设置时间戳为当前时间。
      • pose
        • position:目标点位置坐标(x, y, z)。
        • orientation:目标点姿态(四元数x, y, z, w)。
  3. 创建发布者
     

    python

    goal_pub = rospy.Publisher('/move_base_simple/goal', PoseStamped, queue_size=10)
    rospy.sleep(1)
    • 主题/move_base_simple/goal(通常由导航栈监听)。
    • 消息类型PoseStamped
    • queue_size=10:指定消息队列大小。
    • rospy.sleep(1):确保发布者准备就绪。
  4. 循环发送目标点
     

    python

    try:
    while not rospy.is_shutdown():
    for waypoint in waypoints:
    send_goal(goal_pub, waypoint)
    rospy.sleep(30)
    except rospy.ROSInterruptException:
    pass
    • 主循环
      • 持续运行,直到接收到退出信号(如Ctrl+C)。
      • 遍历 waypoints 列表,依次将目标点发送给发布者。
      • 等待30秒后发送下一个目标点。
    • 异常处理
      • 捕获 rospy.ROSInterruptException,实现优雅退出。
(4) 程序入口
 

python

if __name__ == '__main__':
main()
  • 检查脚本是否直接运行(非被导入)。
  • 调用 main() 函数启动程序。

4. 总结

  • 节点名称patrol_robot
  • 功能
    • 定义了两个巡逻点((1.0, 1.0) 和 (3.0, 3.0))。
    • 通过发布 /move_base_simple/goal 主题,控制机器人依次移动到目标点。
    • 每30秒切换一次目标点,模拟巡逻行为。
  • 优雅退出
    • 捕获中断信号(如Ctrl+C),实现程序的正常退出。








阿克曼车式移动机器人倒车入库出库测试实验

实验目的
  1. 掌握ROS(Robot Operating System)在机器人导航中的应用。
  2. 实现阿克曼车式移动机器人的倒车入库和出库功能。
  3. 验证巡逻路径规划与目标点导航的准确性和稳定性。
实验环境
  • 操作系统:Ubuntu 16.04
  • ROS版本:Kinetic Kame
  • 机器人平台:阿克曼车式移动机器人
  • 模拟环境:Stage仿真器
实验步骤
1. 环境配置

首先,我们需要配置ROS环境,并安装所需的软件包。

# 添加ROS软件源的PGP密钥
echo "Upgrade Mission Begins."
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.ascsudo apt-key add ~/ros.ascsudo apt updateecho "Upgrade Mission Completed."echo "Teb Mission Begins."sudo apt install ros-kinetic-stage-ros ros-kinetic-teb-local-planner ros-kinetic-teb-local-planner-tutorials ros-kinetic-global-planner* -yecho "Teb Mission Completed."

bash

# 添加ROS软件源的PGP密钥
echo "Upgrade Mission Begins."
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
sudo apt-key add ~/ros.asc
sudo apt update
echo "Upgrade Mission Completed."
echo "Teb Mission Begins."
sudo apt install ros-kinetic-stage-ros ros-kinetic-teb-local-planner ros-kinetic-teb-local-planner-tutorials ros-kinetic-global-planner* -y
echo "Teb Mission Completed."
2. 启动仿真环境
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch

bash

roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
5. 修改巡逻程序

修改巡逻程序,将巡逻点更新为依次停车点。

#!/usr/bin/env python
import rospy
from geometry_msgs.msg import PoseStamped, Pose, Point, Quaterniondef send_goal(goal_pub, waypoint):rospy.loginfo("Sending goal to: (%.2f, %.2f)", waypoint.pose.position.x, waypoint.pose.position.y)goal_pub.publish(waypoint)def main():rospy.init_node('parking_robot', anonymous=True)# 定义停车点(宽车位3个,窄车位2个)waypoints = [PoseStamped(header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),pose=Pose(position=Point(x=2.0, y=2.0, z=0.0),  # 宽车位1orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0))),PoseStamped(header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),pose=Pose(position=Point(x=4.0, y=2.0, z=0.0),  # 宽车位2orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0))),PoseStamped(header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),pose=Pose(position=Point(x=6.0, y=2.0, z=0.0),  # 宽车位3orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0))),PoseStamped(header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),pose=Pose(position=Point(x=2.0, y=4.0, z=0.0),  # 窄车位1orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0))),PoseStamped(header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),pose=Pose(position=Point(x=6.0, y=4.0, z=0.0),  # 窄车位2orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)))]goal_pub = rospy.Publisher('/move_base_simple/goal', PoseStamped, queue_size=10)rospy.sleep(1)try:while not rospy.is_shutdown():for waypoint in waypoints:send_goal(goal_pub, waypoint)rospy.sleep(30)  # 等待30秒后发送下一个目标点except rospy.ROSInterruptException:passif __name__ == '__main__':main()

python

#!/usr/bin/env python
import rospy
from geometry_msgs.msg import PoseStamped, Pose, Point, Quaternion
def send_goal(goal_pub, waypoint):
rospy.loginfo("Sending goal to: (%.2f, %.2f)", waypoint.pose.position.x, waypoint.pose.position.y)
goal_pub.publish(waypoint)
def main():
rospy.init_node('parking_robot', anonymous=True)
# 定义停车点(宽车位3个,窄车位2个)
waypoints = [
PoseStamped(
header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
pose=Pose(
position=Point(x=2.0, y=2.0, z=0.0), # 宽车位1
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
),
PoseStamped(
header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
pose=Pose(
position=Point(x=4.0, y=2.0, z=0.0), # 宽车位2
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
),
PoseStamped(
header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
pose=Pose(
position=Point(x=6.0, y=2.0, z=0.0), # 宽车位3
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
),
PoseStamped(
header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
pose=Pose(
position=Point(x=2.0, y=4.0, z=0.0), # 窄车位1
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
),
PoseStamped(
header=rospy.Header(frame_id="map", stamp=rospy.Time.now()),
pose=Pose(
position=Point(x=6.0, y=4.0, z=0.0), # 窄车位2
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
)
]
goal_pub = rospy.Publisher('/move_base_simple/goal', PoseStamped, queue_size=10)
rospy.sleep(1)
try:
while not rospy.is_shutdown():
for waypoint in waypoints:
send_goal(goal_pub, waypoint)
rospy.sleep(30) # 等待30秒后发送下一个目标点
except rospy.ROSInterruptException:
pass
if __name__ == '__main__':
main()
实验报告
1. 实验目标

实现阿克曼车式移动机器人的倒车入库和出库功能,验证巡逻路径规划与目标点导航的准确性和稳定性。

2. 实验过程
  1. 环境配置:安装ROS Kinetic,并配置软件源。
  2. 启动仿真:使用Stage仿真器启动机器人仿真环境。
  3. 编写巡逻程序:编写Python脚本,定义巡逻点,并通过发布/move_base_simple/goal主题控制机器人移动。
  4. 测试与验证:在仿真环境中测试机器人的倒车入库和出库功能,验证巡逻路径的准确性和稳定性。
3. 实验结果
  • 机器人能够按照预设的巡逻点进行移动,包括宽车位和窄车位的停车。
  • 倒车入库和出库功能正常,机器人能够准确到达目标点并完成任务。
  • 实验过程中未出现错误或异常,验证了程序的稳定性和可靠性。
4. 实验总结

本次实验成功实现了阿克曼车式移动机器人的倒车入库和出库功能,验证了ROS在机器人导航中的应用效果。通过编写Python脚本控制机器人移动,并设置合理的巡逻点,实现了机器人的自动化巡逻和停车任务。未来可以进一步优化巡逻路径规划算法,提高机器人的导航效率和准确性。


 

相关文章:

  • 开发区实验小学温州seo结算
  • 创建网站平台什么时候友情链接
  • 鼓楼做网站公司哪家好免费发广告的软件
  • 武汉招聘网站制作充电宝seo关键词优化
  • php外贸网站制作武汉网站建设方案优化
  • 教育网页设计网站陕西百度推广的代理商
  • 台系厂商SSD主控之争:Phison对决SMI
  • xss-labs第15关
  • 2、YOLOv12架构解析:速度与精度的艺术
  • sqli-labs第二十六关——Trick with commentspace
  • 代码随想录---贪心篇
  • IS-IS报文
  • YOLO11解决方案之区域追踪探索
  • 华为OD机试真题——欢乐周末 (2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • GAMES104 Piccolo引擎搭建配置
  • 显示docker桌面,vnc远程连接docker
  • LeetCode 1040.移动石子直到连续II
  • 【公式】MathType公式上浮或下沉
  • 汉诺塔超级计算机数据区结构和源代码详细设计
  • C++语言入门————高精度计算
  • ubuntu下nginx
  • 如何在Windows右键菜单中添加“以管理员身份运行CMD”的选项(含图标设置)
  • 第十六篇:真正的学习,系统分析师考后总结
  • 【公式】批量添加MathType公式编号
  • Java单例模式:懒汉模式详解
  • el-input 按回车失去焦点