当前位置: 首页 > news >正文

上位机系统Ubuntu 20.04与下位机arduino UNO通讯

目录

  • 一、安装arduino IDE
    • 1.1安装方法
      • 1.1.1终端里命令下载(不推荐)
      • 1.1.2官网下载(不推荐)
      • 1.1.3论坛下载(不推荐)
      • 1.1.4系统应用商店(推荐!)
    • 1.2配置项目文件位置
    • 1.3测试IDE功能
  • 二、配置ros与arduino通讯的库文件
    • 2.1安装软件包
    • 2.2开启roscore
    • 2.3配置库文件位置
  • 三、创建一个发布者publisher
    • 3.1重新打开arduino IDE
    • 3.2编译示例代码
    • 3.3运行arduino节点
    • 3.4查看arduino节点信息
  • 四、创建一个订阅者sublisher
    • 3.1重新打开arduino IDE
    • 3.2编译示例代码
    • 3.3运行arduino节点
    • 3.4改变LED状态
      • 3.4.1方式一
      • 3.4.2方式二


Windows 10 + VMware 16 + Ubuntu 20.04+ Noetic
台式机 + arduino UNO


一、安装arduino IDE

1.1安装方法

1.1.1终端里命令下载(不推荐)

下载的版本太老,是1.0.5的,编译时会报错

sudo apt-get install arduino

报错内容:
在这里插入图片描述

1.1.2官网下载(不推荐)

从官网下载: https://www.arduino.cc/,速度很慢

1.1.3论坛下载(不推荐)

不好找Ubuntu版本的IDE安装包

1.1.4系统应用商店(推荐!)

Ubuntu software ——> 弹出snap商店——> 左上角 搜索 arduino
可以看到版本是1.8.19的,可以!下载速度也可以!
在这里插入图片描述
在这里插入图片描述

1.2配置项目文件位置

打开arduino IDE——>文件——>首选项——>项目文件位置
选择主目录下的一个文件夹,权限高!
在这里插入图片描述

1.3测试IDE功能

打开blink示例,进行编译,编译成功后,arduino开发板的小灯一直闪烁说明IDE安装成功
在这里插入图片描述

二、配置ros与arduino通讯的库文件

2.1安装软件包

sudo apt-get install ros-noetic-rosserial-arduino
sudo apt-get install ros-noetic-rosserial

2.2开启roscore

打开一个终端,输入:

roscore

2.3配置库文件位置

[PathToYourSketchbookLibraries] 指 项目文件位置

rosrun rosserial_arduino make_libraries.py [PathToYourSketchbookLibraries]

三、创建一个发布者publisher

3.1重新打开arduino IDE

3.2编译示例代码

文件——>示例——> ros_lib ——> HelloWorld

3.3运行arduino节点

IDE右下角显示串口号,我的是 ttyACM0,改成自己的

rosrun rosserial_python serial_node.py /dev/ttyACM0

在这里插入图片描述

3.4查看arduino节点信息

示例内容是,arduino作为一个节点以/chatter 为话题向外输出 “hello world!”
用命令行查看话题内容和频率,没有问题!

rostopic echo /chatter
rostopic hz /chatter

在这里插入图片描述

四、创建一个订阅者sublisher

3.1重新打开arduino IDE

3.2编译示例代码

文件——>示例——> ros_lib ——> Blink
代码解释: link

#include <ros.h>
#include <std_msgs/Empty.h>ros::NodeHandle  nh;void messageCb( const std_msgs::Empty& toggle_msg){digitalWrite(LED_BUILTIN, HIGH-digitalRead(LED_BUILTIN));   // blink the led
}ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );void setup()
{ pinMode(LED_BUILTIN, OUTPUT);nh.initNode();nh.subscribe(sub);
}void loop()
{  nh.spinOnce();delay(1);
}

3.3运行arduino节点

IDE右下角显示串口号,我的是 ttyACM0,改成自己的

rosrun rosserial_python serial_node.py /dev/ttyACM0

3.4改变LED状态

3.4.1方式一

用pub

rostopic pub toggle_led std_msgs/Empty --once

3.4.2方式二

设置QT工具箱:使用rqt向话题发布消息:
在这里插入图片描述

http://www.lryc.cn/news/39308.html

相关文章:

  • hive面试题
  • 【CUDA】《CUDA编程:基础与实践》CUDA加速的关键因素
  • 数据结构【Golang实现】(四)——双向循环链表
  • 【Redis】高可用架构之哨兵模式 - Sentinel
  • 图片的美白与美化
  • 面试官:关于CPU你了解多少?
  • UI自动化测试-Selenium的使用
  • 嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置
  • Android setContentView流程分析(一)
  • doris数据库操作数字遇到的问题
  • 3.13文件的IO操作
  • ffmpeg使用
  • spark中的并行度(分区数)/分区器如何确定
  • 00后女生“云摆摊”两周赚1.5万,实体店转战线上真的能赚钱吗?
  • 华为OD机试题 - 最优资源分配(JavaScript)| 机考必刷
  • 利用python判断字符串是否为回文
  • GDB 调用之ptype、set variable
  • 并发编程---阻塞队列(五)
  • 本科课程【计算机组成原理】实验1 - 输出ABCD程序的生成
  • Java并发编程(2) —— 线程创建的方式与原理
  • 你写的js性能有多差你知道吗 | js性能优化
  • 线程的状态、状态之间的相互转换
  • Java8使用Lambda表达式(流式)快速实现List转map 、分组、过滤等操作
  • C++之深浅拷贝
  • CoreLocation的一切
  • HashMap原理
  • STM32入门笔记(02):独立看门狗(IWDG)和窗户看门狗(WWDG)(SPL库函数版)
  • javaSE系列之方法与数组的使用
  • 常用命令总结
  • 【Linux:程序地址空间--原来操作系统也喜欢画大饼】