目录
1. 串口库(Serial Library)简介:
2. 源码及主页
3. 国内git仓库(ROS2 humble已测试可用)
4. 可能出现的问题
4.1 git clone时使用了sudo,导致cmake执行失败
4.2 程序编译无误,但端口无法打开
ROS2的官方包中并未集成串口serial功能,需要手动下载源码,并编译安装。
于是遇到了一系列的问题。。。
Serial是一个跨平台,易使用的库,可用它驱动电脑的串口。
这个库提供了一个C++且面向对象的接口,以便与Linux和Windows的RS232设备交互。
如果想用于ROS(Robot Operating System)? 也没问题,它可以编译成unary stack。
serial: Serial Library (wjwwood.io)http://wjwwood.io/serial/doc/1.1.0/index.html
ROS2 foxy serial (github.com)https://github.com/ZhaoXiangBox/serial
解决方法:
1)重新使用git clone 下载库源码,按说明文档编译。
2)在cmake ..命令前加上sudo。
解决方法:
1)输入命令:ls -l /dev/ttyUSB0
ls -l /dev/ttyUSB0
查看是否存在串口,或检查串口是否被占用。
2)存在空闲的USB口,请检查/dev/ttyUSB0的权限,放开所有权限。
sudo chmod 777 /dev/ttyUSB0
Linux中运行代码时,找不到libserial.so动态链接库。
出现这个问题时,常常是自己写的.so文件,代码可以编译成功,但是运行的话会出现error while loading shared libraries错误。原因是,Linux 运行的时候,共享库的寻找和加载是由 /lib/ld.so 实现的。默认配置下,ld.so 在标准路经(/) 中寻找应用程序用到的共享库。
一般来说,使用make install会将自己编译的共享库放在在非标准路经中,比如/usr/local/lib中,而不是标准的动态库路径(/usr/lib)。此次需要修改配置,将*.so的路径写入配置中。
解决方法有两个:
1)临时方案:(重新打开terminal后失效)在Terminal中输入以下命令
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
2)长期方案:
(a)打开 ld.so.conf 文件
[root@localhost /]# vi /etc/ld.so.conf
(b)在下面加入非标准的动态共享库路径:一般为/src/local/lib。 保存ld.so.conf 文件
(c) 记得执行ldconfig一下,添加的文件夹内容才能在程序运行时被找到。
[root@localhost /]# ldconfig
如果用上述方法依然无法解决问题,考虑so文件的权限问题,参考下面的文章。
Linux中error while loading shared libraries错误解决办法https://blog.csdn.net/hankerbit/article/details/83834349