机器人操作手册
准备工作
1. 连接键盘和显示屏
- 拿出键盘和显示屏

- 将键盘的转接器插入机器人侧面的接口(需要注意的是mini外部只有一个接口,要是想要连接需要打开顶板进行连接)

2. 连接 HDMI
- 取下假负载,插入 HDMI 线

3. 获取 IP 地址
- 当显示屏显示画面时,打开终端,输入以下命令:
ifconfig

4. 远程连接(Nomachine)
- 打开 Nomachine 软件
- 在 Host 输入框中填入上一步获取的 IP 地址

- 建议将连接名称命名为机器人名称(便于区分)
- 首次连接时,会提示输入账号和密码,按图中所填写即可

到此准备工作完成
上机测试和使用
TIP本节所需要的bash脚本目录均存放在
你可以在 ~/robot- 内找到所有的command
机器人的所有操作逻辑都是,先建图,后标定点位,最后让机器人自主规划路径。算法部分已经给出,需要做的便是修改机器人的业务逻辑和执行这个逻辑。
W2A
竞赛场地及说明

比赛例程使用说明
比赛例程已经封装在一个单独的 ROS 功能包里,下面所有程序改动都在该功能包里修改:

IMPORTANT开始建图前,要将机器人的位置在初始区摆正,不要倾斜,这个非常重要。
每步做完之后都需要关闭终端,然后重新打开新的终端。例如在建图完成后,需要关闭所有终端,不然记录坐标时会出现程序占用的情况,切记。
此外,在运行命令后要查看是否报错;如果有报错,一般会出现红色提示。
1. Gmapping 建图
运行 9-cartographer_mapping.sh 文件,使用键盘控制机器人运动,对比赛场地进行建图,围绕场地转一圈即可。
建图完成后保存地图:
roslaunch robot_slam save_map.launch
代码示意:

IMPORTANT记录坐标前,也要将机器人的位置在初始区摆正,并注意观察地图是否倾斜。若地图斜了,需要调整机器人的摆放位置。
2. 记录坐标
先运行 14-demo_clean_desktop.sh 启动比赛。
启动后先恢复机械臂的初始位置,然后在键盘控制模式下,操控机器人运动到桌子附近,使机器人摄像头视野内能够看到垃圾物料块。
这里需要满足两个条件:
- 机械臂对准垃圾物料块。
- 摄像头能够识别到垃圾物料块。
这一过程需要反复调试,是核心部分。可以在对准后按 a 进行模拟抓取,用来判断是否对准。
确认对准后,打开一个终端,输入:
rostopic echo /tracked_pose
按 Ctrl + C 停止后,将机器人的位置坐标和四元数值记录下来,作为导航目标点。

打开 home/magic_ws/src/demo_clean_desktop/scripts,找到 slam_task.py 文件:

将四元数转换为欧拉角:

可以在电脑上打开这个网站进行转换:

代码示意:

IMPORTANT启动比赛前要将机器人的位置在初始区摆正,并注意观察地图是否倾斜;若斜了,需要调整机器人的摆放位置。
3. 开始比赛
先输入 14-demo_clean_desktop.sh 启动比赛,再输入下面的命令开始比赛:
rostopic pub /slam_task std_msgs/String "data: 'desk_point1'"

核心代码
-
magic_ws/magic_ws/src/demo_clean_desktop/scripts/slam_task.py在 40-60 行中,记录着导航点和 home 点的坐标。

-
magic_ws/magic_ws/src/demo_clean_desktop/scripts/clean_desk.py在 287-312 行中,封装了几个实用脚本。

对应快捷键如下:
- 按
a:模拟抓取 - 按
s:机械臂复位 - 按
h: - 按
f:回 home 点 - 按
r:前往第一个桌子抓取垃圾 - 按
d:前往第二个桌子抓取垃圾
magic_ws/magic_ws/src/demo_clean_desktop/scripts/clean_desk_robot.py
修改代码主要改这个文件。
263 到 357 行这里是执行抓取的逻辑。可以借助 AI 多阅读一下这个文件,理解其中的流程以及调试方法。

4. 膨胀半径
所在位置:
magic_ws/src/robot_slam/params/params_diff/costmap_common_params.yaml

膨胀半径可以这样理解:障碍物在代价地图里不只是“占一个点”,而是会向四周“扩一圈危险区”。这个“扩多大”就是 inflation_radius,单位是米。
效果上:
- 半径变大:机器人会更早绕开障碍,走得更保守,更不容易贴墙。
- 半径变小:路径会更贴近障碍物,容易钻窄路,但更可能蹭到边。
可能遇到的情况以及修改代码建议
1. 机器人打滑
这个问题是 W2A 的老毛病,目前还没找到什么方法避免。
2. 机器人抓取物料块撞墙

主要问题在这串代码。这里形成了硬编码,不太灵活。
forword 是前进,但是雷达识别到了之后本来会马上停止;加上后面这两行代码后,它会继续一直向前走,走 2.4 秒后停止,然后再调用 stop 函数停止。这就是容易撞墙的原因。
这会导致一种情况:点建近了,一定会撞;点建远了,又不一定能夹到。
调整办法是根据点位的远近来调整 sleep 的长短,近了就调小,远了就调大。
3. 机器人一直在规划路径
即卡在某个地方不动,或者行走很卡顿。
可以按下面顺序排查:
- 先稍微调小膨胀半径;若无效果,再进行下一步。
- 在 Rviz 中观察,是否始终有一个障碍物在干扰路径规划与导航,而实际机器人附近并没有这个障碍。
关于激光雷达,需要特别注意的一点是:激光雷达容易受到机体支撑柱的干扰,产生拖尾效应,因此需要屏蔽指定角度的激光雷达数据,这部分需要在驱动中进行修改。
在系统中,找到 bluesea/launch 文件夹。文件夹内有各个不同构型的激光雷达启动 launch 文件。智行 W2A 使用的是 lidar_e200_w2a.launch。
需要注意,MASK 下方有这些参数:
<rosparam param="mask1">[0.52,0.98]</rosparam><rosparam param="mask2">[-0.98,-0.52]</rosparam><rosparam param="mask3">[2.09,2.62]</rosparam><rosparam param="mask4">[-2.62,-2.09]</rosparam>这几个数值就是激光雷达屏蔽的角度,单位为弧度。激光雷达旋转角度为 360 度,即 -pi 到 pi;mask 内代表的是该角度范围内的激光雷达数据,输出为 inf,也就是无效。
资源
关于比赛代码和调试方法等,可以自行去厂商的百度网盘下载:
智行 W2A
演示视频
W3S
此机器人已无比赛可打。有兴趣的可以开机玩一玩,连接方式相同。
Mini
部分信息可能已经过时






