ROS 学习笔记之五:对Arduino环境刮目相看

ROS基础篇(六)-- ROS与Arduino如何通信(rosserial_arduino) 如今,ROS与嵌入式系统实现串口通讯的方式有好几种,目前最常用的就是rosserial,rosserial已支持Arduino、STM32等开源和低成本硬件的通讯。本篇主要介绍通过rosserial实现ROS与Arduino通信。 阅读详情

    接触Arduino是在2011年前后(https://user.qzone.qq.com/478273778/blog/1298984045),转眼已经 8 年了。
    当时对 Arduino 的看法是:给非专业人员玩玩的平台,所用 mega168及328 都太弱,程序封装后,资源消耗更多,留给编程人员的发挥空间太少了;且由于封装,编程是容易了 ,但性能降低了,本来单片机就跑不快,RAM又少,这样就没有什么实际价值了。
    所以基本上就是玩了一下,没有再深入。

    
    这次学习 ROS,因为 ROS 的经典平台 Turtlebot3 的控制器 Open CR 用了 Arduino 的 IDE,让我再次触及 Arduino 环境,发现它已经今非昔比了。
    查阅相关资料发现:Arduino 可以引入很多种开发平台,不再拘泥于 AVR 系列(即便后来出了mega2560,毕竟是 8 位机,性能平平),对主流的几款 MCU 都有支持,充分利用了开源的优势,让有兴趣的厂家或个人可以将自己所喜欢的硬件平台导入 Arduino IDE 中,既分享了它的易用特点,又化解了它原生硬件的性能束缚。
    我已经发现的非原生硬件平台就有:STM32、ESP8266、ESP32、nrf52。


    目前我主要对 STM32 比较感兴趣,所以先买了一块 Nucleo F103RB 体验一下。


    在ubuntu 16.04 中的 Arduino IDE 1.8.8 版本下安装了 STM32 开发板,用的是 STM32duino:
https://github.com/stm32duino/Arduino_Core_STM32
开发板导入地址:
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json


    似乎github上不止这一个,选择这个是因为它支持的开发板比较多,Nucleo系列基本上都支持了。


    安装后稍微费了一点周折:虽然 Nucleo 板的U盘模式 ubuntu 认识,但用此模式程序没有下载成功,只好尝试 STLink 模式,需要在 ubuntu下安装STLink的驱动。


    驱动安装后程序下载正常了,我尝试了三个例子:
    1、标准的 Blink,编译后下载,完全正常,似乎用的就是 Arduino的原生板,感觉不错。

    2、用的STM32自带的例子,驱动舵机,也是很正常,看源程序和原生的例程基本一样,看来STM32的硬件抽象做的不错。

    3、试验基于 ROS 的例程,前面已经在 Arduino IDE中安装了 ROS_LIB,并且基于 Arduino Nano 测试过例程,成功。将同样的例程 Blink 编译下载到 Nucleo F103RB上,完全一样!!!


    如此的话,Arduino IDE 的使用范围就大多了,难怪 OpenCR 的程序也选择了 Arduino 环境,它用的可是 STM32F746 啊,已经是 Cortex-M 系列中最强的 MCU 了,都可以在 Arduino IDE 下开发,不担心性能无法发挥,STM32的其它系列更应该没有问题。


    仔细看了安装后 STM32 库文件,发现用的是最新的 HAL 及 LL 库,这样结合 STM32 的资料以及 Arduino 的共享资源,应该使 STM32 开发更加容易了。很是期待......


    到目前唯一感到遗憾的是:基于 Arduino IDE 开发 STM32 程序的相关文档没有找到比较系统的,不知道是没有还是我没有找到?如果有高手知道盼指点,先谢了!

在ROS中使用Arduino 现在其实我们已经一步一步迈入实用阶段了。使用传感器是创建你自己机器人的第一步。 让我们首先来看一下如何在ROS中使用Arduino。 Arduino环境的搭建 Arduino的搭建相当简单。  1. 从arduino.cc/en/Main/Software下载最新的IDE。在你的系统中解压。 2. 执行以下命令让你的帐号可以打开串口设备 sudo adduser juns di 阅读详情

相关推荐

ubuntu环境下实现ROS 2 与 Arduino 通信

本教程为https://blog.youkuaiyun.com/2301_81924597/article/details/141757091?spm=1001.2014.3001.5501的进一步拓展。

2301_81924597的博客 1982

【如何将Arduino与机器人操作系统(ROS)一起使用】

了解ROS或机器人操作系统,一种用于机器人技术的流行开源中间件!Arduino板用于构建小型机器人,并具有简单的逻辑定义控制。但由于机载计算能力和软件有限,开发人员通常无法升级到更复杂的机器人。通常,随着建筑商变得越来越有经验,他们会寻找特定于机器人的软件,因为Arduino仅提供部分控制。本教程介绍了一个中间件软件框架机器人操作系统(ROS),并引导您通过Arduino设置和使用ROS来创建更智能的机器人系统。机器人操作系统(ROS)是最流行和广泛使用的机器人中间件软件框架之一。

vor234的博客 3763

在ROS下的Arduino舵机机械臂控制

经过前面对ROS和Arduino的学习与例程编写,又用了一些时间学习了URDF和Moveit,结合之前所学的内容编写了程序以实现ROS系统对Arduino的通信控制。 从SW导出URDF模型 利用Solidworks三维建模 ,导出URDF文件可以参考合工大的这篇文章,值得注意的是如果需要在机械臂末端添加摄像头即eye in hand系统的话,还要再新建一个link使其固定于上一个link中,便于后续摄像头坐标系与机械臂末端坐标系的重合。如下图所示: 此外建立URDF模型所使用的坐标系和基准轴需要改为英

帕里亚的杂货铺 6265

ROS学习之Arduino篇——读取并发布各种传感器数据

本篇主要包括以下五部分内容: 1. 说明 2. 在rosserial_arduino中自定义数据类型 3. 使用Arduino读取传感器的数据 4. 更改代码 5. 测试 本篇将读取超声波雷达、电位计和人体红外感应模块传感器的值,然后封装成一个消息类型,最后广播出去。 1. 说明 在ROS中自定义的msg数据类型在Arduino下是不能直接使用的,需要使用rosserial_cli...

wanzew的博客 1万+

ubuntu下安装arduino IDE、ros与arduino进行串口通信

1.安装arduino IDE 使用如下指令进行安装IDE : sudo apt-get install arduino 2.安装功能包 rosserial能够让arduino成为标准的ROS节点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间。使用如下指令进行安装,注意ros版本号 sudo apt-get install ros-kinetic-rosserial-arduino sudo apt-get install ros-kinetic-rosserial rosstack pro

weixin_45168199的博客 4246

ROS与Arduino之间的串口通讯(详解)

前言:今天早上想学一下在ubuntu ROS系统下安装Arduino实现串口通讯,在网上看了一些博客后着手开始操作。发现按他们的步骤来大体上没有什么问题(为csdn大佬们点赞),但中间过程中还是出现了一些小错误。在这里我详细的记录一下,希望对您有帮助。 步骤一:安装arduino IDE sudo apt-get install arduino 步骤二:安装ROS_SERIAL功能包 在终端依次输入: sudo apt-get install ros-noetic-rosserial-ar..

weixin_53206200的博客 5000

ekf pose使用方法 ros_ROS入门通俗简介

ROS是最流行的机器人操作系统,但官方 Introduction 写的很一般,这篇把系统各要点和如何组合起来的介绍得通俗易懂。作者:Jason Bowling编译:McGL每个机器人制造者的生活中都会有这样一个时刻,他们开始考虑建造一些... 史诗般的东西(钢铁侠?)。也许你已经构建了几个简单的 Arduino (一种开源开发板)机器人,它们可以绕着房间跑,避开障碍物,或者跟着地板上的轨迹走。它们...

weixin_29956903的博客 629

ros+arduino学习(四):ros发布消息控制舵机(arduino做下位机)

目录 前言 1.烧录Arduino程序 2.运行程序并发布消息 3.注意事项 前言 基于ros如果可以直接控制舵机的话,如果后面想做项目就会比较容易一些。 目前来说用ros控制舵机一般有两种方式: 一、直接通过舵机驱动板控制舵机。 二、通过向下位机通讯的方式控制舵机。 第一种方式一般适用于有舵机驱动板的情况,比如一些串口舵机和专用的舵机驱动器。 这些一般有固定的协议,根据协议控制,适用于有专用协议或者舵机数量较多的情况。 第二种方式通过下位机通讯,让下位机去控制舵机,需要用下位机的.

qqliuzhitong的博客 4253

【如何使用ROS和Arduino控制机器人手臂】

在本系列关于机械臂控制的这一部分中,学习使用 Arduino 和 ROS 构建一个非常简单的机械臂。机器人操作系统(ROS)是领先的机器人控制中间件/软件。完整的 ROS 生态系统提供了实现机器人运动学、动力学、运动控制、运动规划、感知和仿真算法所需的所有工具。在上一篇文章《如何将Arduino与机器人操作系统(ROS)一起使用》中,我们学习了如何将ROS与Arduino一起使用,并使用ROS模拟虚拟机器人手臂上的随机运动序列。

vor234的博客 3181

ros_arduino_bridge+arduino+l298n控制编码电机(Arduino uno)

踩了许多坑,看了许多教程,终于成功用ros_arduino桥的方法实现了对电机的控制,希望大家能通过我的教训少走一些弯路。 注:本教程的所有代码可以进入我主页下载 step1: ubuntu下安装arduino IDE(具体方法可直接搜索,这里就暂时略过) step2: 利用arduino IDE将下位机代码烧录到arduino中,注意我使用的是arduino uno,而很多教程使用的是...

weixin_41772246的博客 7523

stm32通过创建子目录来支持32个双端核心stm32的开发Arduino-Arduino_Core_STM32.zip

Arduino-Arduino_Core_STM32.zip,对Arduino的STM32核心支持Arduino对基于STM32的板的核心支持,Arduino是一家开源软硬件公司和制造商社区。

【从零开始的ROS四轴机械臂控制】(七)- ROS与arduino连接

从零开始的ROS四轴机械臂控制(七) 十、ROS与arduino连接 接下来回到阔别已久的硬件上来,我们要使用ROS来控制arduino。鉴于我使用的是虚拟机,所以首先要测试的是虚拟机与arduino的连接,然后才能考虑ROS与arduino的连接。 1. 虚拟机与arduino的连接 首先将arduino连接到虚拟机 然后在虚拟机中安装arduino IDE,在Linux安装的具体方法可以百度...

Stan_Fu的博客 6945

ROS2多线程处理RTSP视频流避坑指南:OpenCV解码丢帧问题解决方案

本文针对ROS2中处理RTSP视频流时OpenCV解码丢帧的常见问题,提供了专业的解决方案。通过深入分析单线程模型的瓶颈,提出并详细拆解了基于生产者-消费者多线程模型的健壮实现方案,有效分离数据采集与处理,从而显著提升视频流的稳定性和流畅度。

weixin_29199873的博客 168

ROS中话题的订阅与发布+ROS环境下上位机与Arduino单片机通讯

创建工作空间 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace 进入代码空间,使用catkin_create_pkg命令创建功能包: $ cd ~/catkin_ws/src $ catkin_create_pkg learning_communication std_msgs rospy roscpp ...

weixin_44827364的博客 7953

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

密码应用方案设计

qq_40442137的博客 1470

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 466

ros_arduino_bridge控制舵机

简单对比在ros中使用ros_arduino_bridge和rosserial_arduino控制舵机的区别,然后根据ros_arduino_bridge包进行修改写一个ros_arduino_bridge控制舵机的例子。

Jiali Zhang的博客 3498

为ESXI Host添加v3700 FC存储

物理环境: ESXI Host version 5.1.0 Brocade SAN Switch v3700 Storage 存储和ESXI Host分别用光纤线连接在SAN交换机上 1.查询ESXI Host 的WWN号: 2. SAN交换机上查询存储的WWPN号 SAN交换机: 3.建立zone,添加到cfg文件中 brocade8Gb

haoshuwei531024的专栏 7561

rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)

一,简介 这个教程展示如何安装arduino IDE和使用rosserial Arduino和Arduino IDE是进行硬件开发的非常好的辅助工具 rosserial_arduino包可让ROS和ArduinoIDE一起工作 rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节-点,可以发布和订阅ROS消息,发布TF转换,获...

蒋程扬的部落格 8181

深度学习注意力机制新突破:YOLOv8结合SimAM无参数注意力模块,让目标检测更精准!

在计算机视觉领域,注意力机制已成为提升模型性能的关键技术。然而,传统的注意力模块如SENet、CBAM等往往引入大量额外参数,增加了模型的复杂度和计算负担。本文介绍一种创新的无参数注意力机制——SimAM(Simple Parameter-Free Attention Module),并将其成功应用于YOLOv8目标检测框架。SimAM基于神经科学理论,通过定义能量函数为特征图计算3D注意力权重,无需任何额外参数即可显著提升模型性能。本文详细阐述了SimAM的理论基础、实现原理,并提供了完整的YOLOv8集

YOLO 97

MuJoCo 入门教程(一)

在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。

机器人控制与仿真应用 1万+

ros_arduino_bridge使用总结

关于ROS和Arduino通信方式,刚开始大多使用的是rosserial_arduino这个库,随后又诞生了一个新的库名为ros_arduino_bridge,两者对比如下: rosserial_arduino:由于将Arduino内的程序写成ros节点形式,所以能够快速的通过ROS控制Arduino,并且可以忽略通信协议层,与之相同的还有rosserial_stm32f1库,但是由

ROS小生的博客 1万+

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 479

ROS Learning-016 Arduino-For-ROS-001 搭建 Arduino 和 ROS 之间相连接的开发环境

Arduino For ROS-001 — 搭建 ROS 和 Arduino 相连接的开发环境我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 Arduino的版本:Arduino 1.6.11 Linux 32位 使用 的ROS版本:ROS Indigo一. 下载并安装 相关软件Step 0 . 如果你没有在 Ubuntu 上面安装 ROS Indigo 这个版本的ROS

AoboSir.com 1万+

车载以太网网络测试-27【SOME/IP-SD简述】

SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。

车载网络测试工程师的博客 1953

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Arduino学习笔记(15)--Arduino & ROS

1. Why Arduino and ROS? ROS(Robot Operation System)是一个开源机器人操作系统,它是一个分布式的计算架构,集成了底层硬件驱动、节点间通讯、机器人控制、仿真环境和跨平台等功能。 Arduino主要应用于控制电机驱动和各类传感器(比如超声波、IMU、里程计、电机转速PID控制等),然后通过收发消息等到ros_topic和service...

Techblog of HaoWANG 2542

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: ROS 学习笔记之四:扫盲
下一篇: ROS学习笔记之六:创建基于STM32的Arduino环境
嵌入之梦
博客等级 码龄21年 134粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值