无人机避障—— 激光雷达定高北醒TF03-UART(二)

无人机避障过程,光靠大疆飞控内部的气压计不准,很容易在高度较低的时候受到地面植被等障碍物影响,使得掉高严重,因此采用激光雷达定高模块进行定高。

硬件:

北醒TF03-UART、Xavier-NX

软件代码:

北醒官方python指导:Benewake(北醒) TFmini-S\TFmini Plus\TF-Luna\TF02-Pro\TF03 串口版本雷达在Linux(Ubuntu)-Python上的运用-CSDN博客

python 复制代码
#创建日期:2020年10月10日
#版本:初版
#此程序对应北醒TF系列默认配置下串口版本有效
#此程序只提供参考和学习
# -*- coding: utf-8 -*-

import serial.tools.list_ports
import time
import numpy as np

ser = serial.Serial()
ser.port = '/dev/ttyUSB1'    #设置端口
ser.baudrate = 115200 #设置雷达的波特率
def getTFminiData():
   while True:
      count = ser.in_waiting #获取接收到的数据长度
      if count > 8:
         recv = ser.read(9)#读取数据并将数据存入recv
         #print('get data from serial port:', recv)
         ser.reset_input_buffer()#清除输入缓冲区
         if recv[0] == 0x59 and recv[1] == 0x59:  # python3
            distance = np.int16(recv[2] + np.int16(recv[3] << 8))
            strength = recv[4] + recv[5] * 256
            temp = (np.int16(recv[6] + np.int16(recv[7] << 8)))/8-256 #计算芯片温度
            print('distance = %5d  strengh = %5d  temperature = %5d' % (distance, strength, temp))
            ser.reset_input_buffer()
         if recv[0] == 'Y' and recv[1] == 'Y':  # python2 //此处标示出文件读取成功
            lowD = int(recv[2].encode('hex'), 16)
            highD = int(recv[3].encode('hex'), 16)
            lowS = int(recv[4].encode('hex'), 16)
            highS = int(recv[5].encode('hex'), 16)
            lowT = int(recv[6].encode('hex'), 16)
            highT = int(recv[7].encode('hex'), 16)
            distance = np.int16(lowD + np.int16(highD << 8))
            strength = lowS + highS * 256
            temp = (np.int16(lowD + np.int16(highD << 8)))/8-256 #计算芯片温度
            print('distance = %5d  strengh = %5d  temperature = %5d' % (distance, strength, temp))
      else:
         time.sleep(0.005) #50ms
if __name__ == '__main__':
   try:
      if ser.is_open == False:
         try:
            ser.open()
         except:
            print('Open COM failed!')
      getTFminiData()
   except KeyboardInterrupt:  # Ctrl+C 停止输出数据
      if ser != None:
         ser.close()

最重要的就是设置端口号:

python 复制代码
ls -l /dev/ttyUSB*

拔掉激光雷达串口:

确定是USB1设置就好了。

运行代码:

bash 复制代码
sudo python3 test.py

测试成功!

相关推荐
feng_you_ying_li10 分钟前
liunx之线程控制与解析,页表,TLB
linux
2601_9611940211 分钟前
化学教资科三真题答案
linux·windows·ubuntu·pdf·centos·gnu
weixin_5206498728 分钟前
Modbus RTU
linux·运维·服务器
zhangfeng113331 分钟前
超算中心 高性能计算 slurm的linux版本 centos7,如何安装docker,如何安装torch2.4
linux·运维·服务器·开发语言·人工智能·机器学习·docker
YOLO数据集集合33 分钟前
无人机低空安防巡检AI落地方案|航拍小目标人员入侵检测、多场景跨领域目标检测数据集与YOLO算法工程实战
人工智能·yolo·目标检测·无人机
钓了猫的鱼儿1 小时前
基于深度学习+AI的无人机森林火灾目标检测与预警系统(Python源码+数据集+UI可视化界面+YOLOv11训练结果)
人工智能·深度学习·无人机
Configure-Handler1 小时前
linux-kernel-fault-codes
linux·运维·服务器
xiaoye-duck1 小时前
《Linux系统编程》Linux 进程间通信之 System V 共享内存:IPC 底层原理与实战
linux
一勺菠萝丶1 小时前
Linux 服务器临时用户创建与删除教程
linux·运维·服务器
曲幽1 小时前
你的FastAPI又在服务器上“跑不起来”了?来,今天咱把打包这件事彻底聊透
linux·windows·python·docker·fastapi·web·pyinstaller·nssm·services