1.robot_base_control 概述
--------
该功能包包含Arduino库和用来控制Arduino的ROS驱动包,它旨在成为在ROS下运行Arduino控制的机器人的完整解决方案。
其中当前主要关注的是:功能包集中一个兼容不同驱动的机器人的基本控制器(base controller),它可以接收ROS Twist类型的消息,可以发布里程数据到ROS端。
**1.1 特点:**
* 直接支持 Ping 声纳和Sharp红外 (GP2D12) 传感器
* 也可以从通用的模拟和数字信号的传感器读取数据
* 可以控制数字输出(例如打开和关闭开关或 LED)
* 支持PWM伺服机
* 如果使用所要求的硬件的话,可以配置基本的控制
* 如果你的Arduino编程基础好的话,并且具有python基础的话,你就可以很自由的改动代码来满足你的硬件要求
* * 该库包括一个用于差速驱动机器人的Base Controller,该控制器接受 ROS Twist 消息并将 Odom 里程计数据发布回 PC。Base Controller需要使用电机控制器和编码器来读取里程数据。库的当前版本支持以下基本控制器硬件:
**1.2 注意:**
* Robogaia Mega Encoder shield 只能与 Arduino Mega 一起使用。
* 板上编码计数器(ARDUINO_ENC_COUNTER)目前仅支持Arduino Uno
* 上面非硬性规定,有一定的编程基础,你也可以按需更改
**1.3 模块:**
* ros_arduino_bridge: metapackage (元功能包),catkin_make安装即可
* ros_arduino_msgs: #消息定义包
* ros_arduino_firmware: 固件包,更新到Arduino(执行运动指令、发送电机编码器数据,通过serial与上位机通讯)
* ros_arduino_python: #ROS相关的Python包,用于上位机,树莓派等开发板或电脑等(监听/cmd_vel并转换为移动指令下发给电机;将电机编码器数据转换为里程计数据发到/odom)
**1.4 文件结构:**
├── robot_base_control # metapackage (元功能包)
├── CMakeLists.txt
└── package.xml
├── ros_arduino_firmware #固件包,更新到Arduino
├── CMakeLists.txt
├── package.xml
└── src
└── libraries #库目录
├── MegaRobogaiaPololu #针对Pololu电机控制器,MegaRobogaia编码器的头文件定义
├── commands.h #定义命令头文件
├── diff_controller.h #差分轮PID控制头文件
├── MegaRobogaiaPololu.ino #PID实现文件
├── sensors.h #传感器相关实现,超声波测距,Ping函数
└── servos.h #伺服器头文件
└── ROSArduinoBridge #Arduino相关库定义
├── commands.h #定义命令
├── diff_controller.h #差分轮PID控制头文件
├── encoder_driver.h #编码器驱动头文件
├── encoder_driver.ino #编码器驱动实现, 读取编码器数据,重置编码器等
├── motor_driver.h #电机驱动头文件
├── motor_driver.ino #电机驱动实现,初始化控制器,设置速度
├── ROSArduinoBridge.ino #核心功能实现,程序入口
├── sensors.h #传感器头文件及实现
├── servos.h #伺服器头文件,定义插脚,类
└── servos.ino #伺服器实现
├── ros_arduino_msgs #消息定义包
├── CMakeLists.txt
├── msg #定义消息
├── AnalogFloat.msg #定义模拟IO浮点消息
├── Analog.msg #定义模拟IO数字消息
├── ArduinoConstants.msg #定义常量消息
├── Digital.msg #定义数字IO消息
└── SensorState.msg #定义传感器状态消息
├── package.xml
└── srv #定义服务
├── AnalogRead.srv #模拟IO输入
├── AnalogWrite.srv #模拟IO输出
├── DigitalRead.srv #数字IO输入
├── DigitalSetDirection.srv #数字IO设置方向
├── DigitalWrite.srv #数字IO输入
├── ServoRead.srv #伺服电机输入
└── ServoWrite.srv #伺服电机输出
└── ros_arduino_python #ROS相关的Python包,用于上位机,树莓派等开发板或电脑等。
├── CMakeLists.txt
├── config #配置目录
└── arduino_params.yaml #定义相关参数,端口,rate,PID,sensors等默认参数。由arduino.launch调用
├── launch
└── arduino.launch #启动文件
├── nodes
└── arduino_node.py #python文件,实际处理节点,由arduino.launch调用,即可单独调用。
├── package.xml
├── setup.py
└── src #Python类包目录
└── ros_arduino_python
├── arduino_driver.py #Arduino驱动类
├── arduino_sensors.py #Arduino传感器类
├── base_controller.py #基本控制类,订阅cmd_vel话题,发布odom话题
└── __init__.py #类包默认空文件
上述目录结构虽然复杂,但是关注的只有两大部分:
* robot_base_control/ros_arduino_firmware/src/libraries/ROSArduinoBridge
* robot_base_control/ros_arduino_python/config/arduino_params.yaml
前者是Arduino端的固件包实现,需要修改并上传至Arduino电路板;
后者是ROS端的一个配置文件,相关驱动已经封装完毕,我们只需要修改配置信息即可。
整体而言,借助于 robot_base_control 可以大大提高我们的开发效率。
**1.5 官方 ROS 文档**
可以在 ROS wiki 上找到此文档的标准 ROS 样式版本:
http://www.ros.org/wiki/robot_base_control
2.准备工作
-------------------
**2.1 Python Serial:**
robot_base_control 依赖于 python-serial 功能包,请提前安装此包。
在Ubuntu下安装python-serial包,使用命令:
$ sudo apt-get install python-serial
在非 Ubuntu 系统上,使用:
$ sudo pip install --upgrade pyserial
or
$ sudo easy_install -U pyserial
**2.2 Arduino IDE 1.6.6 或更高版本:**
请注意,条件 #include 语句的预处理在早期版本的 Arduino IDE 中被破坏。为确保 ROS Arduino Bridge 固件正确编译,请务必安装 1.6.6 或更高版本的 Arduino IDE。您可以从https://www.arduino.cc/en/Main/Software下载 IDE 。
**2.3 硬件:**
固件应与任何兼容 Arduino 的控制器配合使用,以读取传感器和控制 PWM 伺服系统。但是,要使用Base Controller,您将需要上述支持的电机控制器和编码器硬件。如果您没有这个硬件,您仍然可以尝试读取传感器和控制伺服系统的软件包。有关如何执行此操作的说明,请参阅本文档末尾的 NOTES 部分。
要使用Base Controller,您还必须为电机控制器和编码器安装适当的库。对于 Pololu VNH5019 双电机屏蔽,可以在以下位置找到库:
https://github.com/pololu/Dual-VNH5019-Motor-Shield
对于 Pololu MC33926 双电机屏蔽,可以在以下位置找到库:
https://github.com/pololu/dual-mc33926-motor-shield
Ro
没有合适的资源?快使用搜索试试~ 我知道了~
ros-arduino-bridge py3 双路pid
共70个文件
h:14个
ino:11个
srv:7个
需积分: 0 8 下载量 29 浏览量
2023-09-15
12:59:23
上传
评论 1
收藏 109KB ZIP 举报
温馨提示
可以在ubuntu20.04上运行(py3版本)已调通 arduino里使用了双路pid,可以有效解决两个电机存在自身差异导致一个pid很难走直线的问题,并且可以通过串口绘图器,将两路编码器的值全部输出,直接观察曲线图,易于调试。这里的pid使用了Kp,Ki,Kd,Ko四个参数,前面三个参数就是正常的比例系数、积分系数、微分系数,而最后一个Ko是用于将PID三个参数作一个整体的放大或缩小,用于提高调整的精度。(不要随意修改编码器的AB相信号输出引脚以及编码器的计数方式,因为可能会影响到上位机的键盘控制节点出现问题,只能是一侧轮子转动,具体原因还有待研究,如果arduino无法驱动电机,很有可能是引脚接线问题,但不排除一些接触不良、板子本身有问题,有遇到过arduino nano的板子两个IO口是互通的奇葩问题) 关于上位机的部分,也修改为了双路pid,运行arduino.launch后,会在终端实时打印出当前编码器的计数值。
资源推荐
资源详情
资源评论
收起资源包目录
robot_base_control_10086.zip (70个子文件)
robot_base_control_10086
.vscode
c_cpp_properties.json 1KB
settings.json 316B
ros_arduino_firmware
CMakeLists.txt 198B
src
libraries
ROSArduinoBridge
diff_controller.h 4KB
imu.h 837B
motor_driver.ino 3KB
encoder_driver.h 630B
encoder_driver.ino 2KB
commands.h 542B
servos.ino 2KB
ROSArduinoBridge2wd.ino 9KB
servos2.h 1KB
servos2.ino 2KB
sensors.h 1001B
imu.ino 2KB
motor_driver.h 617B
servos.h 997B
ROSArduinoBridge.ino 11KB
ROSArduinoBridge2wd
diff_controller.h 6KB
motor_driver.ino 3KB
encoder_driver.h 630B
encoder_driver.ino 2KB
commands.h 542B
servos.ino 2KB
ROSArduinoBridge2wd.ino 9KB
sensors.h 1001B
motor_driver.h 617B
servos.h 997B
package.xml 375B
ros_arduino_bridge
CMakeLists.txt 117B
package.xml 567B
ros_arduino_msgs
CMakeLists.txt 743B
package.xml 541B
msg
AnalogFloat.msg 101B
Analog.msg 95B
Digital.msg 77B
ArduinoConstants.msg 101B
SensorState.msg 75B
srv
DigitalRead.srv 42B
ServoRead.srv 48B
DigitalSetDirection.srv 52B
ServoWrite.srv 48B
DigitalWrite.srv 42B
AnalogRead.srv 44B
AnalogWrite.srv 44B
README_en.md 20KB
ros_arduino_python
CMakeLists.txt 376B
setup.py 232B
src
ros_arduino_python
__init__.py 0B
.vscode
c_cpp_properties.json 1KB
settings.json 316B
arduino_sensors.pyc 15KB
base_controller.py.bak 10KB
base_controller.pyc 8KB
arduino_sensors.py 8KB
arduino_driver.py.bak 12KB
arduino_driver.pyc 15KB
__pycache__
arduino_driver.cpython-38.pyc 10KB
base_controller.cpython-38.pyc 6KB
arduino_sensors.cpython-38.pyc 9KB
base_controller.py 10KB
arduino_driver.py 12KB
nodes
arduino_node.py.bak 9KB
arduino_node.py 9KB
package.xml 670B
launch
arduino.launch 217B
config
arduino_params.yaml 1KB
my_arduino_params.yaml 2KB
.gitignore 1KB
README.md 24KB
共 70 条
- 1
资源评论
YRrYRr
- 粉丝: 3556
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于SpringBoot+Vue的农产品直卖平台(前端代码)
- DPDK编程指南 本文档包含DPDK软件安装和配置的相关说明 旨在帮助用户快速启动和运行软件 文档主要描述了在Linux环境下编译和运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节
- 基于SpringBoot+Vue的农产品直卖平台(后端代码)
- 游戏开发简介学科的学术项目.zip
- EMIF接口参考代码verilog
- AI开发:逻辑回归的概念 - 实战演练- 垃圾邮件的识别(一)之邮件模拟文件
- 基于SSM+Vue的学生课堂考勤系统(前后端代码)
- 基于SpringBoot+Thymeleaf的校园电动车管理系统(前后端代码)
- 渲染医生,基于RenderDoc的渲染分析工具,以html形式进行方便阅读和分享 .zip
- 基于SpringBoot+Thymeleaf的erp进销存仓库管理系统(前后端代码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功