實操影片:YouTube
樹莓派版本:Raspberry Pi 4B 4GB
操作系統:Ubuntu 18.04 LTS
ROS版本:melodic
使用連接方式:USB
Arduino型號:Arduino Mega2560
馬達型號:SG90 servo
第一步:在樹莓派上開啟Arduino IDE,Arduino板子接好,燒入以下code
Arduino Code:
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include <WProgram.h>
#endif#include <Servo.h>
#include <ros.h>
#include <std_msgs/UInt16.h>ros::NodeHandle nh;
Servo servo;
void servo_cb( const std_msgs::UInt16& cmd_msg){
servo.write(cmd_msg.data); //set servo angle, should be from 0-180
digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}ros::Subscriber<std_msgs::UInt16> sub("servo", servo_cb);
void setup(){
pinMode(13, OUTPUT);nh.initNode();
nh.subscribe(sub);
servo.attach(9); //attach it to pin 9
}void loop(){
nh.spinOnce();
delay(1);
}
第二步:快捷鍵 CTRL+ALT+T 開啟Terminal(終端)
接著輸入以下指令來開啟roscore
roscore
第三步:開第二個Terminal
之後輸入以下指令,來搭起樹莓派與Arduino的通訊節點
rosrun rosserial_python serial_node.py _port:=/dev/你的USB口號碼
這個USB口,可以在Arduino IDE找到,我目前設備是在/dev/ttyACM0
第四步:開啟第三個Terminal
輸入以下指令來送出馬達運動角度到Arduino上
rostopic pub servo std_msgs/UInt16 角度
角度值 0 到 180 (度)
按CTRL+C可以結束一個node,在用新指令來驅動他運動
在這邊用0度跟180度來回測試