基于ros_arduino_bridge的智能小车----下位机篇

2023-05-16

基于ros_arduino_bridge的智能小车----下位机篇

参考文章:
基于ros_arduino_bridge的智能小车----上位机篇
基于ros_arduino_bridge的智能小车----硬件篇

下位机部分实际上可以视作完全独立的一部分,我们从Github下载ros_arduino_bridge后,可以从它的文件中得到小车的下位机部分:

git clone https://github.com/hbrobotics/ros_arduino_bridge.git

下载后你可以得到一个文件夹ros_arduino_bridge
在这里插入图片描述
在文件夹这个位置就是arduino的下位机程序,内容是:
在这里插入图片描述
我对内容作了一定的修改,使之能够可以被我自己的小车使用,毕竟我的小车驱动部分并没有按照ros_arduino_bridge作者的来。实际上,作者的项目已经很老了,一些东西又贵
又难买,性能还不咋地。

这里我给出了修改版的下位机代码,是在[https://blog.csdn.net/qq_29735067/article/details/81561261]的基础上稍微又修改了一下,主要是修改了控制电机的部分,下面给出下载链接:

https://pan.baidu.com/s/1my9Xh-1gGzufPR_cZpov7w
提取码:ibqk

可以打开ROSArduinoBridge.ino来上传程序,也可以加入arduino库中
在这里插入图片描述

请注意,程序默认串口波特率57600,上传好程序后,打开串口监视器
在这里插入图片描述
其中左上角是你自己arduino连接主机后显示的串口号,windows下一般是COM*,如COM5,ubuntu下一般是
/dev/tty*,例如/dev/ttyUSB0。

上传好程序后就可以测试了,你可以手动为串口输入控制命令,毕竟上位机是通过相同的命令来控制小
车,这在arduino程序中被定义了:

/* Define single-letter commands that will be sent by the PC over the
   serial link.
*/
 
#ifndef COMMANDS_H
#define COMMANDS_H
 
#define ANALOG_READ    'a' // 模拟读取
#define GET_BAUDRATE   'b' // 获取波特率
#define PIN_MODE       'c' // 接口模式
#define DIGITAL_READ   'd' // 数字读取
#define READ_ENCODERS  'e' // 读取编码器数据 输出为:左数据,右数据
#define MOTOR_SPEEDS   'm' // 设置马达速度,脉冲计数 如: m 20 20 会以一个很低的速度转动
#define PING           'p' // 
#define RESET_ENCODERS 'r' // 重设编码器读数
#define SERVO_WRITE    's' // 舵机相关,我这里没有用到
#define SERVO_READ     't' // 舵机相关,我这里没有用到
#define UPDATE_PID     'u' // 更新pid参数
#define DIGITAL_WRITE  'w' // 数字端口设置
#define ANALOG_WRITE   'x' // 模拟端口设置
#define READ_PIDOUT  'f'   // 读取pid计算出的速度(脉冲数计数)
#define READ_PIDIN  'i'    // 读取进入pid的速度
 
#define LEFT            0
#define RIGHT           1
 
#define FORWARDS true   //FORWARDS前进代表bool真值true
#define BACKWARDS false //BACKWARDS后退代表bool假值false
 
#endif

例子:

输入e:
在这里插入图片描述
可以看到下位机回传了编码器信息(原谅我的图片如此糟糕,毕竟我的真实上位机是树莓派,博客又是在电脑上编辑了,只能通过拍照获取图片)

输入m 44 44:
在这里插入图片描述

下位机返回OK,表示接收到控制信号,同时小车轮子开始转动,两秒后中停止,修改ROSArduinoBridge.ino中的这一段

#define AUTO_STOP_INTERVAL 2000  

可以改变每一个控制命令的作用时间,单位是毫秒

我的小车:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于ros_arduino_bridge的智能小车----下位机篇 的相关文章

  • Arduino 中的字符串比较

    我正在开发基于网络的家庭自动化系统 因此我的Arduino向服务器发送请求并在串行监视器中获得以下响应以及 loneOn 这是由于Serial println r 陈述 HTTP 1 1 200 OK Date Mon 13 Oct 201
  • 在 Android 上将 USB 波特率从 9600 更改为 115200

    我有一个 Arduino 它以 115200 波特率串行发送数据 有一个应用程序以 9600 波特率从 Arduino 接收数据 代码是 Arduino USB serial converter setup Set control line
  • Fedora 中的 Arduino 上传错误“stk500_recv(): 程序员没有响应”

    我正在尝试上传库存Blink在 Fedora Core 15 Linux 中使用 Arduino IDE 绘制草图 我收到此错误 avrdude stk500 recv 程序员没有响应 要重现该问题 通过 USB 线插入 Arduino U
  • 如何将 char 数组定义为常量?

    这里是 C C 菜鸟 我已经在头文件中定义了它 typedef unsigned char BitChar 9 8 data bytes chars and one width byte char extern BitChar BitFon
  • 如何在 Arduino 上比较 __FlashStringHelper* 和 char*?

    我有一个将文本行输出到串行的板 我需要将这些文本行与我所知道的文本进行比较 本质上 我想做strcmp thestring F knownstring 但是似乎没有一个采用 FlashStringHelper 类型的 strcmp 版本 有
  • DCF77 解码器与噪声信号

    我几乎完成了我的开源 DCF77 解码器项目 当我注意到标准 Arduino DCF77 库在噪声信号上表现非常差时 这一切就开始了 特别是当天线靠近计算机或洗衣机正在运行时 我永远无法从解码器中获取时间 我的第一个方法是向输入信号添加 数
  • 如何将 ASCII char 转换为其 ASCII int 值?

    我想将 char 转换为它的ASCII http en wikipedia org wiki ASCIIint 值 我可以用所有可能的值填充一个数组并与其进行比较 但这对我来说似乎不正确 我想要类似的东西 char mychar k pub
  • 静态 uint8_t 数组的输入过程和类型

    我目前正在尝试将 Arduino IDE 中的整数变量转换为静态 uint8 t 数组的值 我在用 include
  • C-如何使用PROGMEM存储和读取char数组

    我有三个字符数组 我不希望 Arduino 将它们存储在SRAM http en wikipedia org wiki Static random access memory 所以我想使用PROGMEM来存储和读入flash http en
  • Arduino从SD卡读取最后一行

    我对 Arduino 业务还很陌生 如何从 SD 卡读取最后一行 通过以下代码片段 我可以读取第一行 n 之前的所有字符 现在我想添加一个 向后 声明 或其他内容 到目前为止我的代码 include
  • 终止导致设备或资源繁忙的进程:“/dev/ttyUSB0”?

    我使用以下 Python 代码连接到我的 Arduino 板 device glob glob dev ttyUSB 0 time sleep 1 arduino serial Serial device 115200 timeout 5
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • Arduino:连接字符串时崩溃和错误

    我尝试将 AES 256 加密的输出连接到一个字符串 将此字符串与从 Android 手机发送的加密字符串进行比较 基本上 连接似乎有效 但在几次运行后会出现错误 不可读的字符 字符串变得更短而不是更长 或崩溃 它是可重现的 重启后在同一点
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 如何提高 PySerial 读取速度

    我目前正在构建一台使用 Arduino Mega2560 作为主控制器的机器 Arduino 通过串口连接 获取命令 执行它并每 1ms 吐出一堆测量数据 我有一个运行 Python 的 Raspberry Pi 为用户提供一个漂亮的 GU
  • Arduino C++ 代码:可以使用虚函数和异常吗?

    跟进这条评论 https stackoverflow com questions 452139 writing firmware assembly or high level 452401从问题中编写固件 汇编还是高级 https stac
  • 使用 Arduino 来操作 Android [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人尝试过让 Android 和 Arduino 相互通信吗 我在网上找到了几个项目 Amarino http www amarino tool

随机推荐

  • 关于C语言中return的总结

    return break和continue 这三个关键字有一个共同点 xff0c 那就是读能让后面的语句不执行 xff0c 不同的地方就是挑的距离不一样 return很强大 xff0c 如果一个函数中有一个return xff0c 并且执行
  • Windows下Cmake的简单使用

    一 安装Cmake 官网 xff1a https cmake org 本文以Windows64为例 二 项目目录如下 xff1a 1 新建demo文件夹 2 在demo文件夹下新建bin文件夹 HelloWorld cpp CMakeLis
  • Cmake的动态链接库dll的生成并测试

    一 项目任务 1 完成一个CMake工程生成一个动态库 xff0c 该动态库包含内容 xff1a 1 包含一个StringUtil类 xff0c 该类具有Split和Trim2个静态方法 上述2个接口的定义如下 xff1a 删除字符串两侧的
  • cmd/dos批处理脚本出错-is not recognized as an internal or external command

    cmd xff08 dos xff09 批处理脚本执行出现错误 xff1a is not recognized as an internal or external command xff0c 运行中断 脚本文件无语法错误 xff0c 编辑
  • CTF竞赛介绍及刷题网址更新---2020.08

    CTF xff08 Capture The Flag xff09 中文一般译作夺旗赛 xff0c 在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会 xff0c 以代替之前黑
  • VS2008与Matlab混合编程设置

    VS2008 与MATLAB R2009b 混合编程环境配置 一 xff0c VS2008 中的函数调用matlab的写好的函数 1 Matlab 生成 DLL 1 1 编译器的安装 实验环境 xff1a XP 32 位机MATLAB R2
  • System.console().readPassword() java.lang.NullPointerException

    java核心技术 卷I 书籍中有关 java io Console 类的1个示例 System console readLine 与 System console readPassword 在 idea 中运行出现 java lang Nu
  • Linux man中文手册的安装与使用

    概要 xff1a 在 ubuntu 20 04 中下载 安装使用 man 中文手册 文章目录 linux shell命令学习法宝 man 手册man中文手册的下载 安装及环境变量的配置下载安装环境变量配置及 cman 命令使用 man 中文
  • X window selection --- xclip

    原文 英文 url xff1a https encyclopedia thefreedictionary com X 43 Window 43 selection 本文为笔者的翻译 xff0c 红色部分为笔者增加的批注 文章目录 Activ
  • linux安装xclip实现终端与剪贴板之间的通道

    概要 xff1a ubuntu 20 04 通过安装 xclip 来实现终端与剪贴板之间的数据通道 xff1a xclip 类似 dos 中的 clip命令 xff0c xclip 可将命令执行的结果保存到剪贴板 xff0c 还允许将文件的
  • java中GBK与UTF-8编码的转换

    文章目录 java源文件中中文字符的编码的问题UTF 8和GBK格式的文件相互转换java实现文件编码的转换 java不同编码的字节数组的转换Java判断文件编码格式对于UTF 8格式文件的判断 xff1a 利用cpdetector开源库确
  • GBK编码表

    全国信息技术标准化技术委员会 汉字内码扩展规范 GBK Chinese Internal Code Specification 1 0 版 xff08 按编码顺序排列 xff09 其编码范围 xff1a 8140 xff0d FEFE xf
  • dll文件下载网址

    https cn dll files com
  • windows中dos命令汇总及获取管理员权限

    文章目录 windows 获取管理员权限的2种方式runas 用法 windows dos 命令行语法项windows dos命令总述 windows dos命令详细介绍 win7及以前 微软官网 windows dos命令详细介绍 win
  • windows比cmd更强大的 WMIC命令使用详解

    文章目录 什么是wmic WMIC能做什么 WMIC命令使用帮助文档WMIC命令使用实例wmic的运行方式可以有两种法1 显示进程的详细信息2 停止 暂停和运行服务功能3 显示出BIOS信息4 停止进程的操作5 连接远程电脑6 BIOS 基
  • 编程意识——宏定义封装多个函数参数

    作者 釜薪君 公众号 嵌入式杂牌军 文章目录 前言一 这种意识的来源二 实现源码分析1 函数调用2 宏定义部分3 函数实现4 宏替换后的函数调用 总结 前言 今天带小伙伴们分析一段不错的代码 xff0c 学习一下关于宏封装的一种意识 xff
  • DSP28335的SCI的FIFO中断使用心得

    自学了一段时间的DSP28335的串口设置 xff0c 写下来帮助更多的新手 xff0c 遇到了很多问题也记录一些解决办法 以下全都是我个人的理解 xff0c 可能说的不对 xff0c 大家讨论 1 关于为什么必须用FIFO 一般的DSP系
  • 51单片机堆栈深入剖析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势 Keil公司的C51编译器支持经典8051和8051派生产品的版本 xff0c 通称为Cx51 应该说 xff0c Cx51是C语言在MCS51单片机上的扩展 xff0c
  • 基于ros_arduino_bridge的智能小车----上位机篇

    基于ros arduino bridge的智能小车 上位机篇 基于ros arduino bridge的智能小车 硬件篇 基于ros arduino bridge的智能小车 下位机篇 ros arduino bridge文件系统 xff08
  • 基于ros_arduino_bridge的智能小车----下位机篇

    基于ros arduino bridge的智能小车 下位机篇 参考文章 xff1a 基于ros arduino bridge的智能小车 上位机篇 基于ros arduino bridge的智能小车 硬件篇 下位机部分实际上可以视作完全独立的