最快实现一个自己的扫地机

2023-11-18

作者:良知犹存

转载授权以及围观:欢迎关注微信公众号:羽林君

或者添加作者个人微信:become_me


   扫地机介绍     

扫地机器人行业本质是技术驱动型行业,产品围绕导航系统的升级成为行业发展的主旋律。按功能划分,扫地机器人分为四大系统,即导航系统、清洁系统、续航系统及交互系统。从扫地机的发展历史来看,新产品开发形成了以导航系统为主线,其它系统为支线的技术迭代趋势。

基本上发展阶段是从随机式清扫阶段-规划式清扫阶段,规划阶段又有,惯性导航技术阶段,激光导航,视觉导航发展。此外还辅助AI的物体识别和场景识别。

扫地机是如此发展的,里面技术点业务场景也是很复杂的,今天分享一个好朋友写的扫地机快速使用的SDK。他是扫地机行业工作好多年的老工程师了,把自己对于行业的一些理解以及经验总结到这个SDK里面。


 

这个Demo可以帮助一些想要体验或者快速测试扫地机项目的朋友。

注意:此SDK是闭源代码,docker只有可执行文件

   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

  1. 支持规划清扫、暂停、重定位继续清扫。

  2. 支持地图保存(3张),选择地图进行二次清扫。

  3. 快速建图(实验阶段)。

v0.1.1

  1. 修复快速建图Bug。

  2. 修复重定位失效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

容器中启动Rviz(在独立终端中运行):

 
roslaunch zima_ros rviz.launch

建议仿真环境与Demo与Rviz从不同的终端窗口进入docker后启动,因为Demo程序使用键盘标准输入为测试命令输入,用一个launch文件一起启动的话键盘输入会失效。

键盘控制详细请看Demo程序输出提示,若提示日志已被刷走,可按esc键或任意非功能键来输出提示。

结语

这就是我朋友在扫地机做的一些开源SDK项目的情况,喜欢的朋友可以分享点一波star。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。


作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读

【1】jetson nano开发使用的基础详细分享

【2】Linux开发coredump文件分析实战分享

【3】CPU中的程序是怎么运行起来的 必读

【4】cartographer环境建立以及建图测试

【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最快实现一个自己的扫地机 的相关文章

随机推荐

  • centos通过rpm包实现内核升级

    一 查看当前内核版本 root lvs uname r 3 10 0 1160 el7 x86 64 二 前往链接 elrepo获取最新的repo包 rpm import https www elrepo org RPM GPG KEY e
  • 高安全等级密码模块安全技术设计

    摘 要 随着金融 大数据等行业的普及和发展 对密码设备的依赖与日俱增 并且业内在数据安全领域提出了多方面更高的要求 例如密码模块的物理安全 抗非入侵式攻击 抗环境失效等 迫切需要更高安全等级的密码模块来支撑行业的实际应用需求 依托安全二级密
  • 【Linux命令—shell】正则表达式

    正则表达式 regular expression 描述一个字符集合的表达方式 模糊匹配 目录 1 基本正则 2 扩展正则 3 兼容的正则 perl 4 综合案例练习 1 基本正则 演示如下 2 扩展正则 注意 grep不支持扩展正则 如果需
  • Python中os.listdir和os.walk的区别

    os listdir和os walk都是获取指定目录下的文件内容 两者有一定的区别 现在举例说明 如下图所示目录结构 os walk import os def file name file site for root dirs files
  • pandas学习笔记(一)---创建dataframe的4种常用方式

    一 使用numpy创建 import pandas as pd import numpy as np df pd DataFrame np arange 16 reshape 4 4 index list abcd columns one
  • 【Python学习笔记】Python中的heapq

    Python中的heapq 1 基本介绍 堆是非线性的树形的数据结构 有两种堆 大根堆与小根堆 大根堆 树中各个父节点的值总是大于或等于任何一个子节点的值 小根堆 树中各个父节点的值总是小于或等于任何一个子节点的值 我们一般使用二叉堆来实现
  • python稳定版本是哪些_python3哪个版本稳定_后端开发

    C语言中关系表达式和逻辑表达式的值是什么 后端开发 关系表达式和逻辑表达式的值是布尔型 分别为真 true 或假 false 即0或1 但c语言没有布尔类型 以0为假 非0即真 python3哪个版本稳定 python3中3 4比较稳定 基
  • android状态栏(沉浸式状态栏,改变状态栏字体颜色,背景颜色)

    通过主题设置状态栏 在API21 android 5 0 之后 设置状态栏透明效果为半透明 并且为了保证在API19 android 4 4 正常使用 所以需要3份不同的style文件 即values v19 android 4 4之后使用
  • ajax请求,进行ajax处理后端特殊字符串

    前端传入officeId的值 将office对应ip地址传入到 function getinipaddress var officeId document getElementById officeId value var isinheri
  • Linux学习第16天:Linux设备树下的LED驱动开发:举一反三 专注专心专业

    Linux版本号4 1 15 芯片I MX6ULL 大叔学Linux 品人间百味 思文短情长 在开题之前 先说一下这次的题目 尤其是后面的 举一反三 专注专心专业 到底想给大家传递什么信息 LED驱动开发 目前为止已经学了好几种方法 包括裸
  • python实现常用数据结构

    本文基于Python实现以下几种常用的数据结构 栈 队列 优先队列 二叉树 单链表 双向链表 栈 基于List实现 class Stack 栈 def init self self arr self size 0 def push self
  • windows 10自带命令查看文件的哈希值

    windows的powershell自带了查看文件哈希值的命令 Get FileHash 文件名 Algorithm MD5 SHA1 SHA256 案例 查看文件的MD5值 查看文件的SHA1值 查看文件的SHA256值
  • springboot调整请求头大小_SpringBoot http post请求数据大小设置操作

    背景 使用http post请求方式的接口 使用request getParameter XXX 的方法获取参数的值 当数据量超过几百k的时候 接口接收不到数据或者接收为null RequestMapping value rcv metho
  • GitHub Flavored Markdown 规范

    Markdown是一种轻量级标记语言 它以纯文本形式编写文档 易读 看起来舒服 易写 语法简单 易更改 并最终以HTML格式发布 由于markdown没有明确指定语法 随着编译器不一样 实现方式有很大差异 GitHub Flavored M
  • SocketOutputStream和SocketChannel write方法的区别和底层实现

    Java直接内存原理提到了SocketChannel write的实现原理 通过IOUtil write将java堆内存拷贝到了直接内存 然后再把地址传给了I O函数 那么 BIO 是怎么实现往socket里面写数据的呢 BIO Socke
  • Java多线程知识点总结(思维导图+源码笔记)

    转自 https blog csdn net yelvgou9995 article details 107408709 多线程大家在初学的时候 对这个知识点应该有不少的疑惑的 我认为主要原因有两个 多线程在初学的时候不太好学 并且一般写项
  • Sitecore站点更新License

    一 简介 Sitecore 是一个基于ASP NET 技术的 CMS 系统 它不仅具有传统 Web CMS 的所有功能 还集成了 Marketing 营销 当然 这个功能价格不菲 的功能 可以提供一个一站式的在线营销解决方案 对于 NET
  • 深入理解数据结构——哈夫曼树

    include
  • [589]IDM下载器

    Internet Download Manager 简称 IDM 是一种将下载速度提高5倍的工具 可以恢复和安排下载 由于连接丢失 网络问题 计算机关机或意外停电等原因 全面的错误恢复和恢复功能将重新启动中断或中断的下载 简单的图形用户界面
  • 最快实现一个自己的扫地机

    作者 良知犹存 转载授权以及围观 欢迎关注微信公众号 羽林君 或者添加作者个人微信 become me 扫地机介绍 扫地机器人行业本质是技术驱动型行业 产品围绕导航系统的升级成为行业发展的主旋律 按功能划分 扫地机器人分为四大系统 即导航系