在VSCode下利用PlateFormIO开发Arduino的MicroROS遇到的一些问题

文章目录

  • 简介
  • 1.在第四节编译工程中,教程使用的vscode是有编译、上传的按钮的。但是我的没有。
  • 2.在【6.串口通信-接收实验】中,没有串行监视器(Serial Monitor)。
  • 3.关于trajectory_msgs/msg/joint_trajectory.hpp的相关问题
  • 4.关于control_msgs::action::FollowJointTrajectory的相关问题
  • 5.publisher以及service不能同时实现的问题

简介

我是按照鱼香ROS的教程【3.搭建PlateFormIO开发环境】进行的,但是在进行的过程中,遇到了一些问题,这里记录下来,供有同样问题的同学进行参考。其实只要你使用的板子的MCU是ESP32,都可以按照他这个教程进行操作。

1.在第四节编译工程中,教程使用的vscode是有编译、上传的按钮的。但是我的没有。

教程的:
在这里插入图片描述我的:
在这里插入图片描述
不过没关系,点击那个小蚂蚁,执行RROJECT TASKS–》General下面的命令,具有同样的效果。
在这里插入图片描述
后来又发现在右上角:
在这里插入图片描述

2.在【6.串口通信-接收实验】中,没有串行监视器(Serial Monitor)。

教程中是有这个东西的,但是这边没有。
在这里插入图片描述
其实这个需要是个独立的拓展,需要自己独立安装。
在这里插入图片描述

3.关于trajectory_msgs/msg/joint_trajectory.hpp的相关问题

首先我们要明确,microros这个环境基本是基于c开发的,而不是cpp。所以,trajectory_msgs/msg/joint_trajectory.hpp这个cpp下的目录是没有的,取而代之的是trajectory_msgs/msg/joint_trajectory.h
在这里插入图片描述

4.关于control_msgs::action::FollowJointTrajectory的相关问题

假如我们想让我们的microros节点直接接入到moveit中,一种比较好的办法是直接在此节点上实现一个action_server,类型为control_msgs::action::FollowJointTrajectory。
但是目前鱼香ros的microros不支持该类型,而官方的也是不支持的(当使用官方的microros时,需要梯子或者fastgithub)。
不知道怎么回事,我看官方的【micro_ros_arduino】是有这个模块的。
在这里插入图片描述
我在上面发起了个提问,到时候再看看。【I couldn’t find the control_msg module in the compiled include folder】
实在没办法的话,可以暂时在电脑端创建个action_server,然后通过用service传给下位机吧。
20230612:他们今天回答了。
在这里插入图片描述
意思大概是假如这个库没有control_msgs这个模块,需要自己按照 https://github.com/micro-ROS/micro_ros_platformio#extra-packages 这里的说明来进行添加到编译步骤中。
在这里插入图片描述
ok,那我们自己操作一下。
呃,但是,在哪个路径下搞这个extra_packages.repos呢?😶
虽然在 /home/yong/Desktop/arduino/hello_microros/.pio/libdeps/featheresp32/micro_ros_platformio/ci/extra_packages(你需要根据你自己的项目名字来决定这个路径,其实也就是你当前项目下的) 这个目录下是有一个extra_packages.repos。
在这里插入图片描述
我们用的是humble,他这个是galactic-devl与humble可能不匹配。我们去 https://github.com/ros-controls/control_msgs 看看
在这里插入图片描述有humble的,那我们手动改一下:
在这里插入图片描述
改完,重新编译,貌似没什么不一样。可能我理解错了。
我还是直接用我发现的一个办法吧:
直接修改 repositories.py
在这里插入图片描述

  +          Repository("control_msgs", "https://ghproxy.com/https://github.com/ros-controls/control_msgs", "humble"),

注意我目前使用的是鱼香ros的仓库,所以加上的网址是带【https://ghproxy.com/】的(起到加速、梯子的作用),假如你是用官方的,没必要加这个前缀(因为你都能够使用官方的了,应该就不存在墙的问题)。
修改之后,手动将libmicroros文件夹删除,
在这里插入图片描述
然后重新编译
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qa6iQrQs-1686555231137)(null)]
顺利的话,等编译完成后,你就可以看到control_msgs了。
在这里插入图片描述

不是很懂为什么官方不直接加进去,难道是出于单片机资源紧张的考虑?
通过对比好像发现,control_msgs是属于第三方团队https://github.com/ros-controls的,并不是ros团队(https://github.com/ros2、https://github.com/micro-ROS)的亲儿子。所以默认没有包含进去?

5.publisher以及service不能同时实现的问题

按照教程,假如你想把发布话题、实现服务这两个功能一起放到同一个工程中:

...
  // 执行器添加服务
  rclc_executor_add_service(&executor, &service, &req, &res, service_callback);
...
  // 给执行器添加定时器
  rclc_executor_add_timer(&executor, &timer);
...

会发现只能实现其中一个功能,另外一个会被忽略。
这个其实只要改一下执行器的初始化语句就行:

  // 创建执行器
-  rclc_executor_init(&executor, &support.context, 1, &allocator);
+  rclc_executor_init(&executor, &support.context, 2, &allocator);

也就是把number_of_handles从1改成2.这个参数是控制执行器允许处理的对象数量,可以自己看一下源码。这也是对寸土寸金的单片机的妥协,也没办法,要控制好每一份资源。

其他暂时没问题,遇到再补充。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PMP项目管理证书是什么?有什么用?

什么是PMP证书? PMP全称是Project Management Professional,中文全称叫项目管理专业人士资格认证,是由美国项目管理协会(PMI)发起,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,目的是为了给项目管理人…

代码随想录|day13| 栈与队列part03 ● 239. 滑动窗口最大值● 347.前 K 个高频元素● 总结

239. 滑动窗口最大值--------知识点:单调队列 链接:代码随想录 自己写的,报错: class DandiaoQueue{//一个栈或者队列,基本要有进栈出栈两种操作,这里再加上pop出最大值一种操作//底层是deque public:deque…

机器学习笔记 - 多实例学习(MIL)弱监督学习

一、多实例学习概述 多实例学习(MIL)是一种弱监督学习形式,其中训练实例被排列在称为袋的集合中,并为整个袋提供标签。这种方式越来越受到人们的关注,因为它自然适合各种问题,并允许利用弱标记数据。因此,它被应用于计算机视觉和文档分类等不同的应用领域。 多实例学习(…

AntDB 企业增强特性介绍——同步异步自适应流复制

AntDB 提供了 hot-standby 的能力,功能与 Oracle 11g 的active standby 类似。并且通过流复制的方式,大大地缩短了备份库与主库的事务间隔。 传统流复制分为同步和异步两种模式。同步复制,即主机的事务要等到备机提交成功后才会提交并结束事…

使用Red Hat Insights注册RedHat系统

文章目录 前因Step 1: 确认所选择的系统Step 2: 将系统注册到Red Hat InsightsStep 3:具体操作演示 前因 使用SSH命令远程连接红帽系统,提示需要使用下面提示的命令进行系统注册订阅。 C:\Users\xyb>ssh -i xybdiy-aws-key.pem ec2-user18.179.118.78 The authen…

Mysql升级8.0后日期类型兼容性问题

背景 最近对原有项目数据库进行升级,从MySQL 5.7 升级到8.0,因此项目种的驱动程序也要做相应升级。 问题 一、 升级后报:java.time.LocalDateTime cannot be cast to java.util.Date 该问题是因为代码中使用Map类型获取查询返回值&#xf…

劝学:Android 14 Framework 引入了哪些“新”技术栈

作者:Mr_万能胶 2023 年 Google I/O 已于 2023 年 5 月 10 日 拉开帷幕,Android 14 Beta 版本近期也已经 释放到 Google partners,本文主要分析 Google 在 Android 14 框架代码中引入了哪些新的技术栈,而对于新功能和 API Change&…

Netty中ServerBootstrap类介绍

一、Netty基本介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。 Netty 是一…

OpenShift Route 的实现原理

OpenShift Route 的实现原理 OpenShift 如何使用 HAProxy 实现 Router 和 RouteRouter appHAProxy 配置1. HTTP2. HTTPS OpenShift 中的 Route 解决了从集群外部访问服务的需求,与 Kubernetes 中的 Ingress 类似。 OpenShift 中 Route 资源 API 定义如下&#xff1…

【数据结构】树

树 一些简单的性质: 设树中的结点总数为n,等于所有结点的度数之和1。设树中度数为i的结点数为ni ,则nn0n1n2…nm11 * n12 * n2…m*nm度为m的树中第i层上至多有m^i-1个结点(i>1)高度为h的m叉树至少有(m^h-1)/(m-1)个结点具有n个结点的m叉树的最小高度…

React生命周期

生命周期是一个抽象的概念,在生命周期的整个过程,分成了很多个阶段: 比如挂载阶段(Mount),组件第一次在DOM树中被渲染的过程; 比如更新过程(Update),组件状…

Spring集成Kafka

前言 我负责的其中一个项目,接口的交互量在千万级/d,所以要存储大量的日志,为了防止日志的存储影响到系统的性能,所以在技术选型就决定了使用Kafka中间件和一个日志存储系统来负责日志的存储。 使用Kafka 的优点: 1.…

图书推荐|大数据从业人人必备的Excel大数据处理分析

《Excel大数据处理&分析》为活页式新形态教材,介绍了Excel 2016的数据表基本操作、数据输入、数据获取、数据排序、数据筛选、分类汇总、公式与函数、日期和时间函数、数学和统计函数、查找和引用函数、数据透视表、图表的可视化分析、宏和VBA、数据分析工具的应…

23年软件测试前景和出路?新人入行测试怎样走“正确“的路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 现在面试&#xf…

金融计量学第1节课:股指收益率序列统计特征

量化策略开发,高质量社群,交易思路分享等相关内容 导论与介绍 大家好,我是Le Chiffre 今天我们来为大家分享金融计量学系列内容,在松鼠量化3年多分享的内容中,大部分以量化策略为主,至今为止,…

Kotlin Lambda表达式和匿名函数的组合简直太强了

Kotlin Lambda表达式和匿名函数的组合简直太强了 简介 首先,在 Kotlin 中,函数是“第一公民”(First Class Citizen)。因此,它们可以被分配为变量的值,作为其他函数的参数传递或者函数的返回值。同样&…

【Excelc超实用快捷键!!!办公效率1000%up!up!up!】

目录索引 ctrle:提取数据:合并数据: 普通快捷键:ctrla:ctrlc:ctrlv:ctrlx:ctrlz:ctrly:ctrls:ctrlf: 文字格式快捷键:ctrl…

Python程序设计基础:数值

文章目录 一、数值数据类型二、python内置的数值操作三、math库 一、数值数据类型 Python语言可以很方便的用于处理数值运算问题,在数值运算过程中,常见的额两种数据类型分别为整数类型(int)和浮点类型(float&#xf…

局域网内不同网段的设备互相连接设置

目录 介绍1、打开网络连接,找到本地网络->属性->ipv4->属性->高级:2、在高级设置页面,我们添加一个IP,这个IP和板子在一个网段,我这里设置的是192.168.253.101:3、设置完成即可生效&#xff0c…

Jetpack Compose ——Row

当我们构建界面时,经常需要在Compose中使用Row布局来水平排列多个组件。Row提供了一种方便的方式来管理和定位子组件,使它们按照我们期望的方式呈现。 在Compose中,Row可以接受多个子组件作为参数,并根据指定的布局规则进行排列。…