ESP32 S3使用rosserial连接ros

记笔者自己连上ros的经历:
第一步,在linux上配置arduino ide:
在arduino官网下载linux对应版本,比如笔者下的是压缩包形式:

接着就是解压后直接运行其中的arduino-ide文件:
 

./arduino-ide

注意不要不要关闭终端,这时终端和ide一起运行。

这时我们还要下载ESP32开发板的包,导入rosserial_arduino库:

这里加入开发板管理器地址:https://dl.espressif.com/dl/package_esp32_index.json

这里搜索rosserial_arduino库安装

这里搜索esp32开发板安装

第二步,改arduino例程:

笔者这里使用的是这个例程:

这个例程中将wifi名称和密码改成你的网络(手机热点),这里注意虚拟机的网络要改为桥接模式才能让虚拟机和主机在一个局域网下(?我也不知道原理,欢迎大佬解答)

IP地址和端口为你的linux虚拟机IP和ros端口,IP可以使用ip addr指令查询,一般是ens33下面的ip,端口可以使用后面配置好的rosserial软件包中的指令来查询

rosrun rosserial_python serial_node.py tcp 

改完后编译烧录就好。

第三步:安装rosserial软件包:
 

sudo apt-get install ros-${ROS_DISTRO}-rosserial-arduino
sudo apt-get install ros-${ROS_DISTRO}-rosserial

其中${ROS_DISTRO}替换为你的ros版本

第四步:编写一个测试节点来订阅ESP32发布的话题:
我的代码为:

#include "ros/ros.h"
#include <std_msgs/String.h>



void chatterCallback(std_msgs::String msg) 
{
  printf(msg.data.c_str());
  printf("\n");
}
int main(int argc, char *argv[])
{
    ros::init(argc,argv,"test_node");
    ros::NodeHandle nh;
    ros::Subscriber sub = nh.subscribe("chatter", 10, chatterCallback);
    while(ros::ok())
        ros::spinOnce();
    return 0;
}

至于如何建立节点或者编译,大家可以看b站up主:机器人工匠阿杰,我认为他讲的很生动形象,十分好懂,编译后就可以进行最后一步啦。

第五步:展示成果:
首先运行ros

roscore

接着使用指令等待ESP32连接:

rosrun rosserial_python serial_node.py tcp

连接上后使用指令查看我们的ESP32话题

rostopic list

同时运行我们刚刚的测试节点
 

rosrun test_pkg test_node

最后就可以看到hello world啦!

PS:有没有大佬知道如何用esp-idf连接上ros,真的不太想用arduino进行开发

参考文献:

rosserial_arduino/教程/Arduino IDE 设置 - ROS Wiki

通过WiFi将ESP32与ROS集成_esp32 ros_Stan Fu的博客-CSDN博客

ROSserial是一种ROS包,它允许在ROS系统中使用微控制器。以下是将STM32与ROS系统连接的步骤: 1. 首先,需要安装ROSserial包。可以使用以下命令进行安装: ``` sudo apt-get install ros-<distro>-rosserial-arduino sudo apt-get install ros-<distro>-rosserial ``` 其中,`<distro>`代表你正在使用ROS版本。 2. 接下来,在STM32上安装ROSserial库。可以使用以下命令下载ROSserial库: ``` git clone https://github.com/ros-drivers/rosserial.git ``` 3. 在STM32上使用Arduino IDE打开刚才下载的库,并打开`examples/rosserial_arduino/HelloWorld`示例。 4. 确保STM32与计算机通过串口连接。在Arduino IDE中选择正确的串口和STM32板型。 5. 编译并上传示例代码到STM32上。 6. 在计算机上打开终端,运行以下命令: ``` rosrun rosserial_python serial_node.py /dev/ttyACM0 ``` 其中,`/dev/ttyACM0`应该替换为你的STM32所连接的串口名称。 7. 现在,STM32已经与ROS系统连接起来了。可以在ROS系统中使用`rosserial_arduino`包来与STM32进行通信,例如发布和订阅话题。 下面是一个示例代码,可以在ROS系统中发布一个名为`chatter`的话题,并向STM32发送数据: ```python import rospy from std_msgs.msg import String pub = rospy.Publisher('chatter', String, queue_size=10) rospy.init_node('talker', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): hello_str = "hello world %s" % rospy.get_time() rospy.loginfo(hello_str) pub.publish(hello_str) rate.sleep() ``` 在STM32上,可以使用ROSserial库来接收这个话题,并处理数据。 以上就是通过ROSserial将STM32与ROS系统连接的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值