实验笔记之——Sweep Robot/扫地机器人

2025-03-11

引言

比特有灵开源了一个名为ZIMA的激光扫地机器人项目。把智能小车的控制技术、基础的2D雷达SLAM算法、经典的路径规划算法等等结合到一起。 本博文对其进行配置以及测试,本博文仅供本人学习记录用~

测试过程是基于Gazebo与ROS的,当然代码中也包括了kobuki底盘的代码

配置

原本的配置四采用Docker镜像的

docker pull bitsoullab/ros:zima-dev
# Password for user zima is 123456

#容器创建启动方式
if [ -e /dev/nvidia0 ]; then
  echo "Launch with nvidia support."
  docker run \
    -it \
    -u zima \
    --name="zima_demo" \
    --net=host \
    --privileged \
    -v /dev:/dev \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    --runtime=nvidia \
    --device /dev/nvidia0 \
    --device /dev/nvidia-uvm \
    --device /dev/nvidia-uvm-tools \
    --device /dev/nvidiactl \
    --runtime=nvidia \
    --gpus all \
    bitsoullab/ros:zima-dev
else
  echo "Launch without nvidia support."
  docker run \
    -it \
    -u zima \
    --name="zima_demo" \
    --net=host \
    --privileged \
    -v /dev:/dev \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    bitsoullab/ros:zima-dev
fi

此处先不用docker,先进行编译安装

  1. 在zima_base目录下,运行bash build.sh build_dir
  2. 在zima_core目录下,运行bash build.sh build_dir
  1. 新建一个ros workspace,然后使用catkin_make编译。

运行前先确保已经source了工作空间

source /your_path_to_workspace/devel/setup.bash

测试

测试用的代码及代码解读请见:Link

  1. 启动仿真环境
roslaunch zima_gazebo gazebo.launch

# 加载可能比较慢,可以尝试离线启动(但似乎也还是很慢)
roslaunch zima_gazebo gazebo.launch verbose:=true
  1. 启动demo
    roslaunch zima_ros gazebo_demo.launch
    

若遇到报错 Open: Open /tmp/zima_config.json failed.,那么就在zima_base/json_config中复制一份zima_dev_gazebo_config.json到/tmp/zima_config.json。

注意要重命名为zima_config.json

按键操作:

  • a 是自动清洁
  • s 是自动扫描房间
  • q 是退出
  1. 启动rviz
    roslaunch zima_ros rviz.launch
    

rqt_graph如下图所示

如下图所示,会标记出机器人运动的轨迹以及已经清洁的区域,不过对于机器人规划的路径感觉有进一步优化的空间,有些区域不知为何空着先不处理留到后续才清洁,这会导致额外的多余任务

测试效果请见视频:

时间太长了,因此视频没有全部录制,最终跑了一个多小时才完成整个空间的清洁任务