紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
拓展:雷达转接板的无线串口功能驱动代码
-
拓展-雷达转接板的无线串口功能驱动代码
核心代码如下,桥接TCP到串口,可实现自动重连功能。
主要利用虚拟串口+linux的poll实现。
当启动后会自动生成串口,串口地址名称和地址可以自定义,默认为"/tmp/fishbot_laser",默认端口为8889
#!/usr/bin/env python3 import subprocess import os import pty import socket import select import argparse import subprocess import time class SocketServer(): def __init__(self,lport=8889,uart_name="/tmp/fishbot_laser") -> None: self.lport = lport self.uart_name = uart_name self.main() def main(self): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('0.0.0.0', self.lport)) s.listen(5) master, slave = pty.openpty() if os.path.exists(self.uart_name): os.remove(self.uart_name) os.symlink(os.ttyname(slave), self.uart_name) print(f"UART2SOCKET:{self.lport}->{self.uart_name}") mypoll = select.poll() mypoll.register(master, select.POLLIN) try: while True: print("Prepare to Accept connect!") client, client_address = s.accept() mypoll.register(client.fileno(), select.POLLIN) print(s.fileno(), client, master) print('PTY: Opened {} for {}:{}'.format( os.ttyname(slave), '0.0.0.0', self.lport)) is_connect = True try: while is_connect: fdlist = mypoll.poll(256) for fd, event in fdlist: data = os.read(fd, 256) write_fd = client.fileno() if fd == master else master if len(data) == 0: is_connect = False break os.write(write_fd, data) # print(fd, event, data) except ConnectionResetError: is_connect = False print("远程被迫断开链接") finally: mypoll.unregister(client.fileno()) finally: s.close() os.close(master) os.close(slave) os.remove(self.uart_name) def main(): SocketServer() if __name__ == "__main__": main()
-
您好!按照您的代码,我无法正确启动雷达节点,麻烦您看我的操作哪里有问题,操作流程如下:
1.在虚拟机中运行该代码,显示如下:
2.小车端雷达转接板的连接是将跳线帽调整到WIFI模式。
3.在虚拟机中驱动雷达使用的是ydlidar_ros2源码包,启动命令是ros2 launch ydlidar ydlidar_launch.py,报错如下:
-
@583486715 为什么不用教程中的镜像,这个错误估计是雷达型号配置错误,需要修改驱动配置
@小鱼 在 提问前必看!一定要看!必须看一下! 中说:
一个好的提问不仅能够帮助自己理清楚问题,还有助于别人快速帮助到你。——提问的智慧
问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社区)
基本的Markdown语法一定要学习下,有的小伙伴图片代码一团糟
提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案
先搜索再提问,很多问题其实都有解决方案,确保你自己对自己的问题有一定了解再提问
尽量一句话说完,不要把社区当微信聊天一样用,每一个回复都尽量提供更多的的信息。