Arduino ROS串口通信控制舵机

Arduino通过rosserial_arduino包与ROS进行串口通信控制舵机
基于Ubuntu16.04和ROS(Kinetic)。

通过rosserial_arduino包,可以在Arduino IDE中直接使用ROS,rosserial_arduino提供了ros的通信协议,它可以在Arduino的UART上工作。它可以使Arduino成为一个完整的ROS节点,直接发布和订阅ROS消息,发布TF转换,并获得ROS系统时间。


安装ArduinoADE

ADE运行后可在Sketch栏中找到Include Library再选择Manage Libraries(可通过快捷键Ctrl+shift+I打开)
搜索Rosserial Arduino Library并添加。
完成后在File栏中的Examples便可以看到Rosserial Arduino Library的例程。

硬件
arduino UNO控制板和一个SG90舵机

代码
#include 《ros.h》  
#include 《std_msgs/UInt16.h》
#include 《servo.h》
  
ros::NodeHandle nh;
Servo myservo;  
int servoPin=9;
 
void messageCb(std_msgs::UInt16 servo_msg) {   
    myservo.write(servo_msg.data);             
    delay(15); 
}
 
ros::Subscribersub("servo_control", &messageCb);
 
void setup() {
  myservo.attach(servoPin);
  nh.initNode();
  nh.subscribe(sub);
}
 
void loop() {
  nh.spinOnce();
  delay(1);
}

运行

打开终端1
sudo chmod 777 /dev/ttyUSB0 (在你的机器上名称可能会不同)

运行roscore
roscore

打开另一个终端2
rosrun rosserial_python serial_node.py /dev/ttyUSB0

打开终端3
rostopic pub -1 /servo_control std_msgs/UInt16
例如:rostopic pub -1 /servo_control std_msgs/UInt16 30

- 本文内容来自网络,如有侵权,请联系本站处理。

2022-01   阅读(120)   评论(0)
 标签: 机器人 ROS Arduino 串口

涨知识
导轨

导轨又称滑轨、线性导轨、线性滑轨,用于直线往复运动场合,拥有比直线轴承更高的额定负载, 同时可以承担一定的扭矩,可在高负载的情况下实现高精度的直线运动。

评论:
相关文章
ESP32 Arduino 开发框架

Arduino开发环境下适用于ESP32芯片系列开发板的应用开发框架。


【ESP32 C++教程】Unit1-2 C++类基础知识

本小节主要介绍C++ 类相关的基础知识,包括类的定义、继承、多态,范围作用域等。


【ESP32 C++教程】Unit1-1 开发环境准备

本讲主要介绍VSCode Arduino开发环境的搭建,及与Arduino IDE开发环境的比较。


Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


Arduino 数据结构: 队列Queue

Queue 库提供了一个通用的 C++ 动态队列实现,专为在 Arduino 项目中使用而定制。


小鹏浇花套件单机版程序V1.0.0

本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。


Arduino 数据结构: ArrayList

ArrayList 类是一个 C++ 模板类,它提供了 ArrayList 的实现,以便轻松存储任何指定类型的值。它允许使用索引进行高效存储和检索,支持排序操作。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


理解 MSBFIRST(最高有效位)和 LSBFIRST(最低有效位)

在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。