@记录我用树莓派完成的期末实验历程,中间装系统装软件遇到很多bug都解决了。
树莓派的Ubuntu20.04系统安装
我的树莓派是4B,先是装了ubnuntu24.04太新了!对于小白来说很多不明白的地方所以立马重装20.04版本,这是我的教程连接:链接: link.
系统安装遇见的问题与解决方法
1,在ubuntu serve网络编辑50-cloud-init.yaml文件的时候,打开文件只读状态,无法修改内容。
解决办法:
1)输入“ls”即可开启插入模式,这时候就可以修改修改内容了
2)修改完成后,按下ESC键,输入:wq"进行保存修改。
2,进入Ubuntu系统后,没有中文输入法
链接: link.
这应该是最简单的方法,(虽然这个输入法笨笨的并不好用)
3,ubunut系统安装好后,WIFI不可用。
链接: link.
这个问题解决老久了,如果文件无法修改按第一个问题那样处理。
Ubuntu20.04系统下的ROS安装
这个csdn上有很多详细教程了:链接: link.
Ubuntu20.04系统下的Arduino安装
主要教程链接:链接: link.我并没有像教程中用软件商店下载(因为我没有),而是从官网下载。
Arduino中使用ROS遇见的问题与解决方法
1,安装arduino时候,进入arduino官方发现下载的linux安装包zip,不会装,解压后没有install.sh。最后放弃直接sudo apt-get install arduino了。
2,在按照教程装好ros_lib库和例程后,编译显示**cannot find<ros.h>**我大为吃惊!苦恼了很久,怎么也不得劲。最后我打算重装arduino,再次进入官网,发现我下错版本了。。我说怎么教程里都是rar压缩包我是zip
在这个界面往下滑,这个就是我们需要下载的版本。
再按教程那样操作,一切都可行了
ROS发布消息下位机Arduino控制舵机
这是个很简单的实验,直接用例程库ros_lib中的ServoControl。
1.硬件连接部分,舵机按图连线,信号线接pwm的7号口。
2.编译上传下列代码到arduino
#if (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);
}
3.打开终端,运行roscore
roscore
4.打开新的终端,运行程序
rosrun rosserial_python serial_node.py /dev/ttyUSB0
加粗部分看Arduino界面右下角自己的端口号修改
5.发布命令使得舵机转动
rostopic pub /servo std_msgs/UInt16 90