疫情在家搭建的简单易学的SLAM建图机器人

news2024/11/30 6:48:51

1 简介

   Easy_mqOS 是我仿照ROS 搭建的基于MQTT的简易机器人分布式开发框架,是一种轻量级并且十分容易上手的框架,
   支持多个节点的主题的订阅和单topic发布,节点之间独立、解耦合。没有复杂的文件配置,一定的make编程基础,
   像正常启动服务一样,就可以运行。甚至可以在嵌入式linux上使用,而不用安装Ubuntu没有复杂的插件,
   很容易上手和学习。
   支持c.c++ ,python,js.MQTT协议,特点:
  • 使用发布/订阅消息模式,提供一对多的消息分发,解除应用程序耦合。

  • 消息传输对有效载荷内容不可知。

  • 使用TCP/IP提供基础网络连接。

  • 有3个消息发布服务质量级别。

  • 轻量传输,协议交换最小化,以降低网络网络流量。

  • 提供一种机制,当客户端异常中断时,利用 Last Will 和 Testament 特性来通知有关各方。

对于不需要搭建太复杂的机器人,我觉得easy_mqos就可以满足自主巡航智能的功能.

在Download官网中可以看到支持 Ubuntu\debian\ rasbian。

在Linux 终端需要安装mosquitto的相关库:

sudo apt-get install mosquitto-dev
sudo apt-get install mosquitto-clients

2 目的

打造低成本的室内slam建图车和导航车;

打造户外GPS定位导航的自动驾驶车;

3 说明

每个对应的节点下有对应的说明请仔细阅读。

3.1终端节点

3.2 webjs的节点

安装使用

首先在树莓派或者其他的Linux系统安装 mosquito.


sudo apt-get install mosquitto-dev
sudo apt-get install mosquitto-clients

然后在 /etc/mosquitto/mosquitto.conf 添加支持wensocket的协议和端口.

port 1883
listener 8083
protocol websockets

下一步,

git clone this code 并查找libmosquitto.so 例如:

'sunrise@ubuntu:~/$ sudo find / -name libmosquitto*
[sudo] password for sunrise:
/usr/lib/aarch64-linux-gnu/libmosquitto.so.1

将 mqtt的libmosquitto.so 拷贝到每个节点的Mqtt/lib下,

cd 路径
make

分别执行对应的程序.

4 界面WEB JS

该程序配合mqtt使用 .

在树莓派或者其他派终端安装mqtt 工具包.

首先在树莓派或者其他的Linux系统安装 mosquitto.

sudo apt-get install mosquitto-dev
sudo apt-get install mosquitto-clients
然后在 /etc/mosquitto/mosquitto.conf 添加支持wensocket的协议和端口port 1883
listener 8083
protocol websockets

目前能用的功能有:

a 指南针功能

b 路径和航向显示轨迹显示, trajectory map.

c twist 键盘控制功能
见上图右侧。

d 户外机器人的地图规划

图片

5 最后看一下室内搭建的slam机器人效果

在这里插入图片描述
B站:
https://www.bilibili.com/video/BV1ed4y147rV/?spm_id_from=333.999.0.0&vd_source=2056365a3e689ccb27ee312065d1714c

源码地址
https://github.com/horo2016

来自 订阅号 视觉动力机器人 niceli123

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

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

相关文章

Redis未授权访问漏洞(四)SSH key免密登录

前言 系列文章 Redis未授权访问漏洞(一)先导篇 Redis未授权访问漏洞(二)Webshell提权篇 Redis未授权访问漏洞(三)Redis写入反弹连接定时任务 SSH key免密登录 实战实验 环境准备 实验前我们先来复习一遍ssh-key免密登录的流程 攻击机: Centos7 IP:192.168.142.44 靶…

局部变量的特点以及成员变量的区别

1. 概念在上面的章节中,其实已经跟大家介绍了局部变量的概念。即:局部变量是在定义形参、方法或代码块内部的变量,该变量只在当前方法、代码块中有效。2. 特点局部变量具有如下特点:● 局部变量声明在方法、构造方法或者代码块、形…

Mask RCNN网络源码解读(Ⅴ) --- Mask R-CNN论文解读环境配置以及训练脚本解析

目录 1.源码地址 2.项目配置 2.1 环境配置 2.2 文件结构 2.3 预训练权重下载地址(下载后放入当前文件夹中) 2.4 数据集:本例程使用的有COCO2017数据集和Pascal VOC2012数据集 2.4.1 COCO2017数据集 2.4.2 Pascal VOC2012数据集 2…

matplotlib+cartopy+geopandas,实现专业地图可视化!

知乎上有人问如何实现精细化地图?现有的excel、tableau、powerbi都只能套用有限的模板,是否有工具能实现高度定制化?除了专业的Gis软件外,我能想到相对完美的就是使用Python来实现。如果想制作出版级的地图可视化图表,…

《UEFI内核导读》UEFI Application Binary Interface (ABI)简介

敬请关注:“固件C字营 UEFI根据CPU体系结构和编译器的不同有着不同的“调用约定”统称之为“EFI ABI”。以MSVC和x86/x64举例来说,默认MSVC/x86使用 “C标准cdecl”,MSVC/x64使用“MSVC x64 ABI”。Gcc/x86使用“C标准cdecl”,Gc…

ESP-IDF:使用vector和deque容器进行打分排序例程

ESP-IDF实现例程&#xff1a; /5位选手&#xff0c;分别打十个分数&#xff0c;取中间8个分数&#xff0c;求平均值&#xff0c;然后根据选手的分数排序输出/ #include <stdio.h> #include using namespace std; #include #include #include #include class playe…

mongoDB原子操作事务

原子操作 原子操作&#xff08;atomic operation&#xff09;指的是由多步操作组成的一个操作。如果该操作不能原子地执行&#xff0c;则要么执行完所有步骤&#xff0c;要么一步也不执行&#xff0c;不可能只执行所有步骤的一个子集。不可中断的一个或者一系列操作, 也就是不…

Vue3——第三章(生命周期钩子)

一、setup() Vue3在组合式 API中去掉了在Vue3中的beforeCreate、created两个生命周期&#xff0c;使用setup()来顶替这两个生命周期。 二、onBeforeMount() 注册一个钩子&#xff0c;在组件被挂载之前被调用。当这个钩子被调用时&#xff0c;组件已经完成了其响应式状态的设…

国产电源芯片DP4054 软硬件兼容TP4054 规格书资料

DP4054 是一款完整的采用恒定电流/恒定电压单 节锂离子电池充电管理芯片。其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件&#xff0c;DP4054 可以适合USB 电源和适配器电源工作。跟进口的TP4054完全兼容&#xff0c;软硬件无需更改直接替换。 管脚配置 功能框…

(十六)一篇文章学会Java的常用API

目录 前言: 一、Object:toStringequals 二、StringBuilder 三、Math 四、System 五、BigDecimal 前言: API的主要目的是提供应用程序与开发人员以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实…

The Sandbox Game Maker 全新版本即将推出,一览可用于娱乐、社交和音乐会的新功能!

0.8 版本的新功能将包括多人游戏功能、光影和视觉效果升级&#xff0c;以及音频和视频流&#xff0c;满足社区的更新需求。 简要概括 0.8 版本包括了 The Sandbox 社区的主要升级需求&#xff0c;具体有&#xff1a; 全新多人游戏功能 全新光影和视觉效果 视频和音频流 支援…

OKhttp-基本工作流程责任链模式原理

OKhttp工作的大致流程 整体流程 &#xff08;1&#xff09;、当我们通过OkhttpClient创立一个okHttpClient 、Request 、Call&#xff0c;并发起同步或者异步请求时&#xff1b; &#xff08;2&#xff09;、okhttp会通过Dispatcher对我们所有的Call&#xff08;RealCall实现…

微服务的版本号要怎么设计?

今天我们来聊一下微服务项目中的版本号要怎么设计。 小伙伴们平时看到的项目版本号&#xff0c;基本上都是分为了三部分 X.Y.Z&#xff0c;版本升级的时候版本号都会变&#xff0c;那么版本号怎么变&#xff0c;这可不是拍脑门决定的&#xff0c;今天我们就一起来探讨一下这个…

Live800:客户服务的三重境界,你做到了吗?

毋庸置疑&#xff0c;赢得客户的青睐是维系自身经济长青的基础。想要客户满意&#xff0c;得到最佳的客户评价&#xff0c;企业就需要为客户提供超出他们期望的服务。有人将客户服务分为三重境界:第一重境界&#xff0c;把分内的服务做精&#xff1b;第二重境界&#xff0c;把额…

libtorch c++复现cycle gan网络

目录 1. 原论文论文&#xff1a;https://arxiv.org/abs/1703.10593 2. 代码 2.1 下采样 2.2 残差块 2.3 上采样模块 2.4 生成器代码 3. 判别器 3.1 判别器组件 3. 2 判别器 4. 训练 4.1 输入数据 4.2 生成器loss函数结构图 4.3 判别器loss结构图 1. 原论文 论文&…

【java查漏补缺】网络编程

网络编程实际上就是通过套接字进行连接后进行通信&#xff0c;本质还是程序进行IO操作。 所谓套接字&#xff0c;实际上就是IP地址加上端口号的组合&#xff0c;通过套接字&#xff0c;可以连接到网络中某一台计算机的某一个进程。 下面就是客户端和服务器的简单例子&#xf…

vue3-ElmentPlus封装通用表格-含单元格操作-多选-分页器

Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 **&#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;恭喜你&#xff0c;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求收藏&#xff0c;求评论&#xff0c;求一个大大…

【测试】测试分类

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录测试分类&#xff08;大框架&#xff09;一、按照测试对象划分一&#xff09;可靠性测试二&#xff09;容错性测试三&#xff09;安装卸载测试&#xff08;万能公式中可以加上&#xff09;四&#xff09;内存泄漏测试…

合芯科技携手新享科技联合打造国产化项目管理系统解决方案

北京新享科技有限公司 北京新享科技有限公司&#xff0c;是上海合见工业软件集团控股的子公司。上海合见工业软件集团有限公司是自主创新的高性能工业软件及解决方案提供商&#xff0c;以EDA&#xff08;电子设计自动化&#xff0c;Electronic Design Automation&#xff09;领…

【实际开发03】- dto + vo - 先处理 dto , 后处理 vo ( 通常少一注解 )

目录 0. 建议 : 多用组合 , 少用继承 1. EqualsAndHashCode(callSuper true) - 解决允许调用父类 2. 序列化 ID : private static final long serialVersionUID 1L; 1. serialVersionUID 作用 : 序列化时为了保持版本的兼容性 3. 数据概览 ( 统计 ) : XxxxProfileVO 1.…