首页 > 其他分享 >快速实现一个自己的扫地机

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

时间:2023-05-26 18:35:54浏览次数:37  
标签:实现 Demo 扫地机 zima dev -- ros 快速


​作者:良知犹存 转载授权以及围观:欢迎关注微信公众号:羽林君 或者添加作者个人微信: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 添加图片注释,不超过 140 字(可选) 容器中启动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】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比 本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

标签:实现,Demo,扫地机,zima,dev,--,ros,快速
From: https://www.cnblogs.com/conscience-remain/p/17435531.html

相关文章

  • 【React工作记录六十七】前端实现复制文字操作
     目录前言导语 核心代码前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语前端实现复制文字操......
  • SpringGateway不用注册中心实现负载均衡
    1、pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/PO......
  • 使用卷积神经网络实现影评数据的分类
    一、实验目的熟悉循环神经网络在文本分析和分类上的应用 二、实验原理或实验内容从keras的数据集中加载影评数据,注意需要填充(截断)数据,并转成数组的形式。构建一个神经网络模型,要求使用词嵌入和循环层,并使用划分好的训练集数据训练模型,使用划分好的测试集的数据验证模型,训练......
  • 考古笔记6:单臂路由子接口实现VLAN间通讯
    拓扑构成拓扑:配置过程配置信息:R1R1#conftEnterconfigurationcommands,oneperline.EndwithCNTL/Z.R1(config)#interfacef0/0R1(config-if)#noshutR1(config-if)#interfacef0/0.1R1(config-subif)#encapsulationdot1Q10//后面的数字1代表是的侦听VLAN号为10......
  • docker 快速部署 Jenkins
    version:'3'services:jenkins:image:jenkins/jenkinscontainer_name:myjenkinsrestart:alwayshostname:myjenkins_hostports:-18181:8080#界面端口-18182:50000#apivolumes:-./jenkins_mount:/var......
  • 前端vue中实现文件下载的几种方法 四种方法, a.download = "重新下命名下载文件名"
    前端vue中实现文件下载的几种方法原文链接:https://blog.csdn.net/weixin_46074961/article/details/105677732第一种前端创建超链接,通过a标签向后端发送get请求,需要给a标签添加一个download属性这种写法是创造了一个a标签,把地址写到a标签里再用js调用点击,实现访问文件地址......
  • 简单、快速|DeployKit 云部署套件
    本文作者:杨苏博解读ServerlessServerless是一种云计算模型,它使开发人员能够构建和运行应用程序而无需为服务器基础架构或运行时环境管理任何资源。相反,开发人员只需编写应用程序代码,将其上传到云提供商的服务中,然后该服务会负责根据请求的需要自动扩展或缩小应用程序。在......
  • 使用 CNN 提取内容和风格进行风格迁移(PyTorch 实现)
    使用CNN提取内容和风格进行迁移目录使用CNN提取内容和风格进行迁移论文概述论文地址基本概念及对应用符号生成过程准备目标生成代码实现网络结构具体实现结果本文演示了使用CNN进行风格迁移(styletransfer)的深度学习PyTorch实现。完整实现代码位于https://github.com/......
  • Python:实现多态
    定义一个在校人的基类,分别派生出教师和学生,然后放入列表中,实现多态。#!/usr/bin/python#Filename:inherit.pyclassSchoolMember:'''Representsanyschoolmember.'''def__init__(self,name,age):self.name=nameself.age=age......
  • RMQ 问题的两种实现办法(线段树查询和稀疏表(Sparse Table表)查询)
    引言RMQ算法(RangeMinimum/MaximumQuery)是静态区间极值查询的高效算法,在各种算法竞赛中常常出现,虽然不会单独拿出来做一个题,但是经常作为题的一部分。依据所需实现的不同性能可以有多种写法,这里主要讲基于线段树和稀疏表(SparseTable)的两种方法。线段树实现RMQ线段树是维护......