ROS与STM32串口通信

serial安装
sudo apt-get install ros--serial, 由于是Ubuntu 18, 那么就是:
sudo apt install ros-melodic-serial
安装好后,在ROS终端中输入如下,创建ros_serial 功能包
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

catkin_create_pkg serial_port roscpp std_msgs serial
打开 cd serial_port/src

将serial_port.cpp文件添加进去,

//serial_port.cpp
#include
#include
#include

int main(int argc, char** argv)
{
ros::init(argc, argv, “serial_port”);
//创建句柄(虽然后面没用到这个句柄,但如果不创建,运行时进程会出错)
ros::NodeHandle n;

//创建一个serial类
serial::Serial sp;
//创建timeout
serial::Timeout to = serial::Timeout::simpleTimeout(100);
//设置要打开的串口名称
sp.setPort("/dev/ttyUSB1");
//设置串口通信的波特率
sp.setBaudrate(115200);
//串口设置timeout
sp.setTimeout(to);

try
{
    //打开串口
    sp.open();
}
catch(serial::IOException& e)
{
    ROS_ERROR_STREAM("Unable to open port.");
    return -1;
}

//判断串口是否打开成功
if(sp.isOpen())
{
    ROS_INFO_STREAM("/dev/ttyUSB1 is opened.");
}
else
{
    return -1;
}

ros::Rate loop_rate(500);
while(ros::ok())
{
    //获取缓冲区内的字节数
    size_t n = sp.available();
    if(n!=0)
    {
        uint8_t buffer[1024];
    uint8_t IMU_data[15];
        uint8_t Txbuffer[3]={0x01,0x02,0x03};
        //读出数据
        n = sp.read(buffer, n);
        
        for(int i=0; i

}

保存,编译
在caktin_ws目录下catkin_make
然后,重新打开终端,运行roscore
然后在运行 $ rosrun serial_port serial_port

注意,如果usb端口不正确可能不成功,
此时可以通过$ ls -l /dev |grep ttyUSB 来查看usb的端口号,在serial.cpp里面进行修改,修改保存完毕后,进行编译
再次运行$ rosrun serial_port serial_port

你可能感兴趣的:(ROS与STM32串口通信)