树莓派4B+ROS+Arduino【Ubuntu安装-ROS安装-Arduino通信控制舵机】踩坑记录

@记录我用树莓派完成的期末实验历程,中间装系统装软件遇到很多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

本实验就结束了,可能之后还会深入学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值