树莓派下使用esp32无线通信总记录

本文只为自己学习记录用,记录踩到的坑以及解决方法等等。持续更新
之前购置了一个树莓派4b,一直闲置,后来想学学ros开始折腾之路,
ros使用记要
首先在运行ros前一定要运行roscore,其为ros的核心。
运行roscore后能够看到版本信息等等,我所使用的为noetic
在安装好ros环境后我们编译需要工作空间,使用工作空间时有一些操作出问题是可以看看是否是忘记了环境配置。运行source devel/setup.bash

source devel/setup.bash

即可设置好。关于功能包可用roscd直接跳到package内。
下面是一些记录的linux常用命令,仅为个人使用记录。

rostopic echo  xxxxx(为消息)显示消息
rosrun rqt_graph rqt_graph //显示当前逻辑图标
rostopic list -v  	//显示当前有的话题和目前所监听的
rostopic pub -1 消息  geometry_msgs/Twist “或者直接tab补全了
rostopic type 消息       显示消息
紧跟rosmsg show 上述返回值 //即可看到详细
在使用工作空间前要先source devel/setup.bash设置环境变量

在使用esp32时我个人喜欢无线连接的方式,这里需要在ros上下载rosserial功能包,
在安装前记得提高权限输入su 后输入密码提高权限再安装,不然可能安装失败。

sudo apt-get install ros-indigo-rosserial
安装好后可以试试运行
rosrun rosserial_python serial_node.py tcp

在以上操作后如果成功则会看到等待连接等等
下一步是处理esp32 的程序。
我们在arduino上开发,首先要安装好对应的库,在此次开发中使用ros_serial这个库名称可能输错了再arduino库管理中能够搜到,可以找找试试。
之后我们编译下载到esp32中对应程序如下:

#include <WiFi.h>
#include <ros.h>
#include <std_msgs/String.h>
 
const char* ssid     = "wifi名称";
const char* password = "密码";
// Set the rosserial socket server IP address
IPAddress server(192,168,43,4);//该端口号如果不清楚可以在树莓派的wifi处查看链接信息获取到ipv4的ip地址
// Set the rosserial socket server port
const uint16_t serverPort = 11411;
 
ros::NodeHandle nh;
// Make a chatter publisher
std_msgs::String str_msg;
ros::Publisher chatter("esp32dev", &str_msg);
 
// Be polite and say hello
char hello[13] = "hello world!";
 
void setup()
{
  // Use ESP8266 serial to monitor the process
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  // Connect the ESP8266 the the wifi AP
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
 
  // Set the connection to rosserial socket server
  nh.getHardware()->setConnection(server, serverPort);
  nh.initNode();
 
  // Another way to get IP
  Serial.print("IP = ");
  Serial.println(nh.getHardware()->getLocalIP());
 
  // Start to be polite
  nh.advertise(chatter);
}
 
void loop()
{
 
  if (nh.connected()) {
    Serial.println("Connected");
    // Say hello
    str_msg.data = hello;
    chatter.publish( &str_msg );
  } else {
    Serial.println("Not Connected");
  }
  nh.spinOnce();
  // Loop exproximativly at 1Hz
  delay(1000);
}

在成功下载并且连接到wifi后应该能够在ros主机处看到变化,如果要查看esp32 想ros发送的消息可以使用echo的命令查看chatter即可,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值