串口在ros中的使用

1.通过sudo apt-get install ros-indigo-serial下载ROS对应版本的工具包

serial会安装在opt/ros//share/serial目录下,

重启终端,输入 roscd serial,可以检测到serial包的路径,说明serial包已经安装成功

2.永久修改串口权限
发现无法通过串口下载程序,权限不足的问题。
假设串口设备是 /dev/ttyUSB0,那么可以在终端下输入
sudo chmod 666 /dev/ttyUSB0
但是每次重新插入USB to TTL设备都要重新更改权限,很不方便,于是找到了插入后自动设置权限的方法:
sudo gedit /etc/udev/rules.d/70-ttyusb.rules
其中gedit用vim也好其它的也行
在该文件中添加如下一行(可能不存在此文件而创建一个新文件)
KERNEL==“ttyUSB[0-9]*”, MODE=“0666”
这样ttyUSB0-ttyUSB9默认的权限都变成了666,普通用户也可以读写串口了。


#include <ros/ros.h> 
#include <serial/serial.h>  //ROS已经内置了的串口包 
#include <std_msgs/String.h> 
#include <std_msgs/Empty.h> 

serial::Serial ser; //声明串口对象 

//回调函数 
void write_callback(const std_msgs::String::ConstPtr& msg) 
{ 
    ROS_INFO_STREAM("Writing to serial port" <<msg->data); 
    ser.
好的,我会尽力回答你的问题。下面是使用Boost库实现串口首发例程的步骤: 1. 安装Boost库 在Linux系统,可以通过以下命令安装Boost库: ``` sudo apt-get install libboost-all-dev ``` 2. 创建ROS package 可以使用以下命令创建一个名为“serial_example”的ROS package: ``` catkin_create_pkg serial_example roscpp std_msgs ``` 3. 编写串口首发例程 在src文件夹下创建一个名为“serial_example.cpp”的文件,代码如下: ``` #include <ros/ros.h> #include <std_msgs/String.h> #include <boost/asio.hpp> using namespace boost::asio; int main(int argc, char** argv) { ros::init(argc, argv, "serial_example"); ros::NodeHandle nh; // 打开串口 io_service io; serial_port port(io, "/dev/ttyUSB0"); port.set_option(serial_port_base::baud_rate(9600)); port.set_option(serial_port_base::character_size(8)); port.set_option(serial_port_base::stop_bits(serial_port_base::stop_bits::one)); port.set_option(serial_port_base::parity(serial_port_base::parity::none)); port.set_option(serial_port_base::flow_control(serial_port_base::flow_control::none)); // 发送数据 std_msgs::String msg; msg.data = "Hello, world!"; write(port, buffer(msg.data.c_str(), msg.data.size())); return 0; } ``` 上述代码使用Boost库的serial_port类打开串口,并设置数据位、停止位、奇偶校验位和流控制等参数。然后创建一个std_msgs::String类型的消息,将其内容设置为“Hello, world!”,并使用write()函数将消息发送到串口。 4. 编译运行 在ROS package的根目录下执行以下命令编译: ``` catkin_make ``` 然后运行ROS节点: ``` rosrun serial_example serial_example ``` 这样就可以将消息发送到串口了。 希望这个回答能够帮助到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值