ROS2 Humble如何使用串口驱动?(Serial)

目录

1. 串口库(Serial Library)简介:

2.  源码及主页

3.  国内git仓库(ROS2 humble已测试可用)

4. 可能出现的问题

4.1 git clone时使用了sudo,导致cmake执行失败

4.2 程序编译无误,但端口无法打开

4.3 error while loading shared libraries错误解决

写在前面

ROS2的官方包中并未集成串口serial功能,需要手动下载源码,并编译安装。

于是遇到了一系列的问题。。。

1. 串口库(Serial Library)简介:

Serial是一个跨平台,易使用的库,可用它驱动电脑的串口。

这个库提供了一个C++且面向对象的接口,以便与Linux和Windows的RS232设备交互。

如果想用于ROS(Robot Operating System)? 也没问题,它可以编译成unary stack。

2.  源码及主页

serial: Serial Library (wjwwood.io)http://wjwwood.io/serial/doc/1.1.0/index.html

3.  国内git仓库(ROS2 humble已测试可用)

ROS2 foxy serial (github.com)https://github.com/ZhaoXiangBox/serial

4. 可能出现的问题

4.1 git clone时使用了sudo,导致cmake执行失败

 

        解决方法:

        1)重新使用git clone 下载库源码,按说明文档编译。

        2)在cmake ..命令前加上sudo。

4.2 程序编译无误,但端口无法打开

        解决方法:

        1)输入命令:ls -l /dev/ttyUSB0 

ls -l /dev/ttyUSB0


              查看是否存在串口,或检查串口是否被占用。

        2)存在空闲的USB口,请检查/dev/ttyUSB0的权限,放开所有权限。

               

sudo chmod 777 /dev/ttyUSB0

4.3 error while loading shared libraries错误解决

        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错误解决办法icon-default.png?t=M85Bhttps://blog.csdn.net/hankerbit/article/details/83834349

猜你喜欢

转载自blog.csdn.net/slampai/article/details/127876015