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

news2024/10/7 17:24:55

作者:良知犹存

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

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


   扫地机介绍     

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

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

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


 

这个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

  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】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【武汉万象奥科】瑞芯微RK3568芯片

▎产品展示 RK3568核心板是基于Rockchip的RK3568设计的一款高性能核心板。该处理器集成了最新的高性能CPU、GPU,并拥有丰富的接口,非常适用于工业自动化控制、人机界面、中小型医疗分析器、电力等多种行业应用。 ▎RK3568产品特点 ▎高性能处理器 ○ 采用…

linuxOPS基础_vmware虚拟机安装及介绍

虚拟机概念 什么是虚拟机? 虚拟机,有些时候想模拟出一个真实的电脑环境,碍于使用真机安装代价太大,因此而诞生的一款可以模拟操作系统运行的软件。 虚拟机目前有2 个比较有名的产品:vmware 出品的vmware workstatio…

pix2pixHD---model---辨别器

搭建完生成器后搭建辨别器。 首先看辨别器的输入:分别是标签和生成器输出。 在训练时候,辨别器通道输入等于生成器的输出加上conditional即标签和实例的拼接。通道相加就是图片concat。 如果使用实例图片,那么辨别器输入通道数加1&#xff…

《Spring Guides系列学习》guide21 - guide25

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gu…

这款高性价比商用笔记本值得入手

随话说:工欲善其事,必先利其器。 对于打工人的我来说,办公一定要有一款适合的笔记本,否则真的是事倍功半。近日入手了戴尔Latitude 3330这款笔记本,通过使用体验,感觉真是一款高性价比的笔记本了。 接下来…

分布式事务解决方案Seata 整合 Spring Cloud + Nacos

1. 简介 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 2. Docker 安装 Seata 2.1 下载镜像 docker pull seataio/se…

电子合同网页预览盖章效果实现

电子合同在现在应用越来越广,需求也就随之产生。 本篇文章主要记录两种网页盖章效果实现方式,自己记录一下, 也给需要的人提供一点思路和帮助。 效果 JqueryCSS实现 原理 通过定位盖章位置,之后操作图片悬浮到盖章位置 1.设置…

浙江大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 浙江大学(A)考研难度(☆☆☆☆☆☆) 浙江大学计算机科学与技术学院成立于1978年,始终秉承“人为本,和为贵,变则通”的文化理念&#…

SecureCRT日志设置每行时间

SecureCRT日志设置时针对每个会话单独设置的 下图两个串口打印的地方,每个是一个会话。 打开【选项】 按照如下选项进行配置: 每次断开重新链接都会重新存一个日志文件,文件生成时间以秒为最小单位。 并且每行都有时间记录。 一般使用”年…

聊聊得物数据研发优化策略 | 精选

1.前言 在离线数据研发中,随着业务的快速发展以及业务复杂度的不断提高,数据量的不断增长,尤其得物这种业务的高速增长,必然带来数据逻辑复杂度的提升,数据量越大,复杂度越高,对任务的性能的要…

【嵌入式Linux】源码菜单配置 | 编译 | 菜单配置的实现 | 源码编译的实现

源码配置编译 源码配置编译,要把中间各个环节都理清楚 厂商把自己增加的东西专门放了个文件独立,方便开发者发现变化 1.菜单配置 移植的第一步,就是选配,通过make menuconfig图形化界面选配 //载入配置 $ make ARCHarm64 tegra_defconfi…

JVM(HotSpot)

1、 类加载机制: 引导类(Bootstrap )加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如 rt.jar、charsets.jar等扩展类(Extension )加载器:负责加载支撑JVM运行的位于…

真题详解(哈希表)-软件设计(八十五)

真题详解(树的结点)-软件设计(八十四)https://blog.csdn.net/ke1ying/article/details/130869095 要求邮件加密方式传输,邮件最大附件内容可达500MB,发送者不可抵赖,若邮件被第三方截获,第三方…

有哪些pdf转word的免费软件?这个办法值得一试

在日常工作和学习中,我们经常需要将PDF文件转换为Word文档。尤其是在需要编辑PDF文档中的内容时,将其转换为Word文档是非常必要的。但是,很多人不知道该如何快速完成这项任务。在本文中,我们将介绍一些简单的转换方式,…

智能排班系统 【管理系统功能、操作说明——上篇】

文章目录 功能设计共有功能系统管理员企业管理员门店管理员门店员工 页面与功能展示用户登录企业注册系统首页系统管理员首页企业管理员首页门店管理员首页 个人中心菜单管理日志管理登录日志 功能设计 不同的角色关注的任务和功能不同,针对不同的角色,…

树莓派485转USB串口调试教程

步骤1:接线方式:485转USB 注意接线口是否对应:A1B1 步骤2:查看串口配置—映射关系是否正确 命令:ls -l /dev serial0即GPIO映射的串口,默认是ttyS0,即mini串口 serial1即板载蓝牙映射的串口&am…

人工智能(Pytorch)搭建模型7-改造后的新型RegNet设计空间模型的搭建与训练

大家好,我是微学AI,今天给大家带来人工智能(Pytorch)搭建模型7-新型的卷积神经网络RegNet模型的搭建与训练,RegNet是一种新颖的卷积神经网络架构,它的设计理念是通过稀疏网络结构和精细的正则化来实现高效的计算和更好的泛化能力。…

小白看了也会的Redux编程

目录 介绍 演示 异步action react-redux 多组件管理的react-redux 扩展 介绍 redux是专门用于集中式管理状态的javascript库,并不是react的插件库。 比如你有多个组件A-E都想要用同一个组件D中的状态: 1)像以前我们可以通过父子组件通…

前几天面了个30岁左右的测试员,年薪50w问题基本都能回答上,必是刷了不少八股文···

互联网行业竞争是一年比一年严峻,作为测试工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯等大厂.....) 所以,大家就迎来了…

TCP三次握手四次挥手(幽默版)

三次握手: 假设你是一只鸟,你要与另一只鸟进行交流。(你是客户端) 1.首先你会问候:“你好,我是一只鸟,你可以听到我说话吗?”(一次会话) 2.另一只鸟回答&am…