ROS中使用串口
来源:互联网 发布:ccer数据库 校外账号 编辑:程序博客网 时间:2024/05/17 04:39
一. 移植c++ boost 库:
1.Boost官网 下载Boost
2.解压后,进入目录: cd boost_1_6_0,
执行:$ ./bootstrap.sh --prefix=path/to/installation/prefixprefix 的值是你希望安装boost的路径, 不开启此参数的话默认安装在 /usr/local 下.Note: 家目录不要用 ~ 表示, 编译脚本不识别 ~, 会在当前目前新建一个名为 '~' 的目录.执行:$ ./b2 install这条命令把boost的头文件文件夹 include/ 安装在prefix定义的目录中, 并且会编译所有的boost模块, 并将编译好的库文件夹 lib/ 也放在prefix定义的目录中. 如果成功编译的的话, prefix目录即 /home/xzz/boost_1_56_0目录应当包含有 include/ 和 lib/ 两个文件夹.
二. 测试
1.ros工作空间/包/src/ 创建boost_bode.cpp文件:
#include <iostream>#include <boost/asio.hpp>#include <boost/bind.hpp>using namespace std;using namespace boost::asio;int main(int argc, char* argv[]){ io_service iosev; //节点文件 serial_port sp(iosev, "/dev/ttyUSB0"); // 设置参数 sp.set_option(serial_port::baud_rate(115200)); sp.set_option(serial_port::flow_control(serial_port::flow_control::none)); sp.set_option(serial_port::parity(serial_port::parity::none)); sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one)); sp.set_option(serial_port::character_size(8)); // 向串口写数据 write(sp, buffer("Hello world", 12)); // 向串口读数据 char buf[1]; read(sp, buffer(buf)); printf("buf[0] = %c\n",buf[0]); iosev.run(); return 0;}
ASIO不仅支持网络通信,还能支持串口通信。ASIO提供了boost::asio::serial_port类,它的set_option(const SettableSerialPortOption& option)方法用于设置串口参数:serial_port::baud_rate 波特率,构造参数为unsigned intserial_port::parity 奇偶校验,构造参数为serial_port::parity::type,enum类型,可以是none, odd, even。serial_port::flow_control流量控制,构造参数为serial_port::flow_control::type,enum类型,可以是none software hardwareserial_port::stop_bits 停止位,构造参数为serial_port::stop_bits::type,enum类型,可以是one onepointfive twoserial_port::character_size 字符大小,构造参数为unsigned in
2.添加编译选项:
在 工作空间/src/包/ CMakeLists.txt 文件中添加:
add_executable(boost_node src/boost_node.cpp)
target_link_libraries(boost_node ${catkin_LIBRARIES})
3.编译:
进入工作空间:
执行:
catkin_make
备注:如果出现错误提示:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >' what(): open: Permission deniedAborted (core dumped)
权限不够:执行:sudo chmod 666 /dev/ttyUSB0
0 0
- ros中使用串口
- ROS中使用串口
- ros中串口的使用
- 在ROS中与其他器件使用十六进制串口通信
- ROS中Hokuyo_node使用
- ros中使用摄像头
- ROS中使用URDF
- 在ROS中使用Arduino
- ROS中nodelet的使用
- ROS中安装使用cartographer
- ROS中安装使用cartographer
- ROS中使用USB摄像头
- 2.ROS串口控制
- vmware中串口使用
- Zstack中使用串口
- ROS中使用摄像头的问题
- ROS中robot_pose_ekf包的使用
- RoboCup中使用Gazebo和ROS
- Android弹幕功能实现,模仿斗鱼直播的弹幕效果
- MySql+Mybatis学习笔记
- LSTM的完整推导过程,附上推导的手写稿
- 动态网站技术相关介绍
- 编译问题集合
- ROS中使用串口
- Qt之FTP上传/下载
- Tab栏切换
- HTTPS 中的加密算法相关概念
- Faster RCNN实现所用PASCAL VOC数据集内容剖析
- 1 Java概述
- Spark调度机制:2)集群资源注册
- UVA572油田问题(DFS求连通块)
- 虚拟机redhat9.0域名解析DNS配置