快速实现一个自己的扫地机
?作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
扫地机介绍
扫地机器人行业本质是技术驱动型行业,产品围绕导航系统的升级成为行业发展的主旋律。按功能划分,扫地机器人分为四大系统,即导航系统、清洁系统、续航系统及交互系统。从扫地机的发展历史来看,新产品开发形成了以导航系统为主线,其它系统为支线的技术迭代趋势。
基本上发展阶段是从随机式清扫阶段-规划式清扫阶段,规划阶段又有,惯性导航技术阶段,激光导航,视觉导航发展。此外还辅助AI的物体识别和场景识别。
这个Demo可以帮助一些想要体验或者快速测试扫地机项目的朋友。
Zima SDK
Zima SDK是一个力求轻量模块化可移植的2D激光SLAM导航家用清洁机器人算法SDK。仓库位置:https://gitee.com/zimatec/zima_ros_demo_readme
目前仅供学习交流,禁止商用。
SDK包含基础数据格式、控制算法、规划算法、SLAM算法,低依赖(目前只需glog/gflags/protobuf)。为便于调试,也加入了ros封装和简单gazebo仿真。
目前闭源Gazebo仿真Demo部署方式为docker。(Demo已内置里程计的累计误差模拟,和雷达的误差模拟)
更新日志:
v0.1.0
-
支持规划清扫、暂停、重定位继续清扫。
-
支持地图保存(3张),选择地图进行二次清扫。
-
快速建图(实验阶段)。
v0.1.1
-
修复快速建图Bug。
-
修复重定位失效Bug。
Demo方法(示例宿主机为Ubuntu22.04系统,理论上可兼容其他Linux发行版):
宿主机需要先安装Docker,并拉取镜像:
docker pull zimatec/ros:zima-demo-v0.1.1
容器创建启动方式:
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 \ zimatec/ros:zima-demo-v0.1.0 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 \ zimatec/ros:zima-demo-v0.1.0 fi
容器中启动仿真环境方法(在独立终端中运行):
roslaunch zima_gazebo gazebo.launch
容器中启动Demo(在独立终端中运行):
roslaunch zima_ros gazebo_demo.launch
roslaunch zima_ros rviz.launch
?
建议仿真环境与Demo与Rviz从不同的终端窗口进入docker后启动,因为Demo程序使用键盘标准输入为测试命令输入,用一个launch文件一起启动的话键盘输入会失效。
键盘控制详细请看Demo程序输出提示,若提示日志已被刷走,可按esc键或任意非功能键来输出提示。
结语
这就是我朋友在扫地机做的一些开源SDK项目的情况,喜欢的朋友可以分享点一波star。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
???????????????? END ????????????????
推荐阅读
【3】CPU中的程序是怎么运行起来的 必读
本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。