SLAM从入门到精通(robot上层软件开发)

news/2024/7/24 5:07:10 标签: 机器人

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们了解到,ros系统基本上都是依赖于ubuntu和linux来运行的。如果ros是只是跑在机器人的系统上面,不涉及到上层交互,这些都问题不大。但如果做成产品,发布出去,这样就会或多或少有点麻烦。因为大多数fae、或者客户,他们的系统都是windows系统,很少用linux系统。毕竟客户本身通常只是专注于自己的业务,如果是非专业人士,很少会涉及到linux系统。

        既然是在windows侧的软件系统开发,那么开发的路径就很多了。一般来说,基本上就是qt、c#、web开发这些。因为我们用ros开发本身就是用c++开发的,所以,这里我们先说明用qt开发上位机,后面会讨论下其他方法。

1、qt上位机的好处

        qt本身支持多平台,不仅仅是windows,它对linux和mac也非常支持,跨平台方面几乎是非常优秀。

2、qt和ros通信的方法

        qt是运行在windows系统上面,ros是运行在linux系统上面。那么这个时候如果需要他们之间进行通信,有两种办法。第一种办法就是自定义通信协议,这样的协议就是私有协议,稍微麻烦点;还有一种就是直接用xmlrpc进行通信。这种通信方法一般都是基于tcp来完成的,对网络要求较高。

3、ros底层的适配

        如果上层用windows系统的话,底层又需要ros开发,ros这边就需要开发一个适配包。它负责接收windows过来的所有命令,并且返回结果;对ros下面,则负责命令分发和收集反馈。有了这么一个流程,ros系统相当于和上位机就做了切割,每一部分专注于完成自己的事情就ok了。

4、qt开发方法

        qt有两种开发方法,一种是用qt creator + mingw来进行开发,这种开发方法不依赖于visual studio;另外一种开发方法是qt + ms visual studio,这相当于大部分代码还是通过vs来进行编写调试的。

5、更推荐的一种开发方法

        如3所示,开发的语言还是用的c++。那么这个时候,有人会说,如果不想用c++,但是想用qt开发应该怎么做?方法就是使用python+qt的方法进行处理。这个时候qt本身就是一层皮,主要的逻辑最好还是用c/c++进行开发,这样至少说可以保证效率。

6、从招人角度说怎么开发

        如果说ros用c++开发,这是没办法的事情,但是windows层面进行界面开发,如果还是选用c++,这样从招聘角度来说并不合适。市场上面合适的c++开发人员并不多,而上位机这块供给充足的开发人员其实是c#。一方面c#语法简单,特别容易上手,另外一方面c#第三方库特别丰富,c#&wpf几乎是界面开发的标配。

        此外上位机本来就是业务导向为主,因此对开发人员的要求不宜过高。而c#恰恰可以帮助我们弥补这方面的不足,让开发人员专注于业务,专注于服务本身。

7、上位机开发的内容

        上位机开发的内容主要和内容相关,基本技术一般有配置加载、多线程、图形界面、数据库、网络通信、日志打印、传感器标定、任务监控等内容。具体的内容还要看实际的需求,这方面不同语言的开发流程都是差不多的。

8、其他的开发方法

        当然除了上位机,也可以用web进行开发。这个时候,前后端就会分离开来。比如说,前端主要侧重于交互部分,而后端则侧重于业务逻辑部分。如果业务不复杂的话,用element ui + webpy开发也是不错的一个选择。


http://www.niftyadmin.cn/n/5114310.html

相关文章

ThingsBoard的版本控制整合gitee

1、注册gitee账号,创建自己的空间,并且创建一个用于存储ThingsBoard相关的仓库 2、进入ThingsBoard的租户层,然后找到版本控制,进行配置 输入gitee的仓库地址 仓库URL:指定你的gitee的参考地址 仓库分支:master 身份验证:密码、访问令牌 用户名:登录账号 密码/访问令…

重组件的优化和页面渲染十万条数据

重组件的优化和页面渲染十万条数据的优化 重组件的优化vue2写法vue3写法 页面渲染十万条数据的优化使用虚拟列表的方式 重组件的优化 以下代码原理是使用requestAnimationFrame(callback) 方法 vue2写法 Test01.vue <template><div class"container">&…

【SSA-BP预测】基于麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Java】多态中调用成员的特点

示例代码 public class Test {public static void main(String[] args) {//创建对象&#xff08;多态方式&#xff09;//父类 f new 子类();Animal a new Dog();//调用成员变量&#xff1a;编译看左边&#xff0c;运行也看左边//编译看左边&#xff1a;javac编译代码的时候&…

Reinforcement Learning in the Era of LLMs: What is Essential? What is needed?

本文是LLM系列文章&#xff0c;针对《Reinforcement Learning in the Era of LLMs: What is Essential? What is needed? An RL Perspective on RLHF, Prompting, and Beyond.》的翻译。 LLMs时代的强化学习&#xff1a;什么是本质&#xff1f;需要什么&#xff1f;RLHF、提…

JarsLink:基于 Java 的模块化开发框架

JarsLink&#xff1a;阿里巴巴出品的基于 Java 的模块化开发框架 简介 Jarslink 2.0 是 SOFABoot 官方基于 SOFAArk 开发的功能插件&#xff0c;负责管理多应用在 SOFAArk 容器之上的合并部署&#xff0c;具备如下特性&#xff1a; 支持运行时动态安装和卸载应用。 支持运行时…

h5插件_h5页面嵌入客户端调试

当h5页面嵌入客户端之后&#xff0c;若是遇到问题无法调试&#xff0c;比如点击按钮无反应 —> 但是开发却看不到控制台、看不到接口返回值… 此时可以使用调试工具来查看… edura 引入1 <script src"https://cdn.jsdelivr.net/npm/eruda"></script&g…

mysql全文索引

一、什么是全文索引 全文索引&#xff0c;通过建立倒排索引&#xff0c;可以极大的提升检索效率&#xff0c;解决判断字段是否包含的问题。例如&#xff1a;有title字段&#xff0c;需要查询所有包含 "冬奥会"的记录。需要 like "%冬奥会%"方式查询&#…