Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    1. Home
    2. xiaoqiang
    3. Posts
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision
    • Profile
    • Following 0
    • Followers 2
    • Topics 88
    • Posts 312
    • Best 5
    • Groups 1

    Posts made by xiaoqiang

    • RE: 小强AMCL导航,可以自主定位吗?为什么rviz里每次都需要手动定位(2d pose estimate)才可以?

      @eee 试试cartographer的重定位

      posted in 激光雷达
      xiaoqiang
      xiaoqiang
    • RK3588 npu python运行 YOLOv8 和 YOLOv8-seg 的教程

      在 RK3588 上运行 YOLOv5 的教程比较丰富,而对于 YOLOv8 相关的 Python 开源库则较少。对于多线程推理,一个不错的开源库是 rknn-multi-threaded。RKNN_model_zoo 中的 examples 提供了 YOLOv8 的相关 demo,但其 Python 后处理部分编写不佳,需要 PyTorch 依赖,并且后处理耗时较大,无法满足视频实时推理的需求。
      我们在 rknn-multi-threaded 的基础上,对 RKNN_model_zoo 中的 YOLOv8 example 进行了整合,并使用 github Copilot 重写了后处理函数。这一改进不仅取消了对 PyTorch 的依赖,还将后处理耗时从几百毫秒降低到了几十毫秒。在 3 线程模式下,推理 YOLOv8s 模型可以达到约 45fps,而推理 YOLOv8s-seg 模型则可以达到约 25fps。

      一、优化修改后的开源代码库

      • yolov5: http://git.bwbot.org/publish/rknn-multi-threaded.git
      • yolov8: http://git.bwbot.org/publish/rknn3588-yolov8.git
      • yolov8-seg: http://git.bwbot.org/publish/rknn3588-yolov8-seg.git

      二、代码运行说明

      上面三个代码仓库的运行方法相同,都是通过 git clone 克隆代码后,准备好 Python 环境,然后执行 main.py。我们以 YOLOv8 为例:

      1. 升级 NPU 运行库。参考 RK3588 在 Ubuntu22.04 下使用 rknn-toolkit2 的注意事项。
      2. 克隆源代码:
      git clone http://git.bwbot.org/publish/rknn3588-yolov8.git
      
      1. 准备python运行环境:
        我们在 RK3588 上使用的是 Ubuntu22.04 Desktop,默认的 Python 版本是 3.10。为了避免破坏系统环境,我们使用 virtualenv 来配置需要的 Python 运行环境。
      sudo apt install python3-virtualenv
      
      #进入上面git clone下来的文件夹根目录
      cd rknn3588-yolov8
      
      #创建虚拟环境
      virtualenv --system-site-packages -p /usr/bin/python3 venv
      
      #激活虚拟环境
      source venv/bin/activate
      
      #开始在虚拟环境中安装rknn_toolkit_lite2,这里需要安装和python版本相同的whl
      pip install rknn_toolkit_lite2-2.0.0b0-cp310-cp310-linux_aarch64.whl
      
      #安装opencv
      pip install -i https://mirror.baidu.com/pypi/simple opencv_contrib_python
      

      4.环境配置完成,开始运行yolov8:

      python main.py
      

      在 main.py 文件中,您可以修改模型、线程数,还可以修改成实时推理摄像头。

      # 推理视频文件
      cap = cv2.VideoCapture('./720p60hz.mp4')
      # 推理实时摄像头
      cap = cv2.VideoCapture(0)
      cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
      cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
      

      三、运行结果

      YOLOv8s 的运行速度大约是 YOLOv5 的 70%,YOLOv8s-seg 的运行速度大约是 YOLOv8s 的 50%。
      YOLOv8s 运行截图
      YOLOv8s-seg 运行截图
      YOLOv8s-seg 实时摄像头截图

      posted in 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 求助:orbslam2中观测为0的地图点是怎样产生的?谢谢

      @anbeeyao 这个是因为keyframe可能会被删除,删除后相关的地图点也就可能存在观测为零的情况

      posted in 机器视觉
      xiaoqiang
      xiaoqiang
    • rk3588在ubuntu22.04下使用rknn-toolkit2的注意事项

      rknn-toolkit2是开发rk3588的npu时使用的sdk,github地址是:https://hub.nuaa.cf/airockchip/rknn-toolkit2.git。
      git clone下载后,在doc文件内有相关的pdf使用文档,比较重要的是这份文档:02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf。

      一、 rk3588npu驱动升级

      上面这份文档的2.2节设备NPU环境准备中,会更新RKNN Server和 RKNPU2 Runtime 库,操作是通过adb指令,不方便,可以直接把rknn-toolkit2下载到rk3588里面,然后直接cp指令拷贝升级。

      #升级rknn server
      sudo cp rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/rknn_server  /usr/bin/rknn_server
      sudo cp rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/start_rknn.sh  /usr/bin/start_rknn.sh
      sudo cp rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/restart_rknn.sh  /usr/bin/restart_rknn.sh
      #升级 RKNPU2 Runtime 库
      cp rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/librknnrt.so
      #2.0版本没有librknn_api.so,创建一个软连接到librknnrt.so
      sudo ln -s /usr/lib/librknnrt.so /usr/lib/librknn_api.so
      

      npu的driver可以不用升级,我们用的是0.8.2版本,实测发现除了动态shape功能不支持外,暂时没发现其他问题,可以正常跑通yolov5、yolov8。

      二、 运行rknn_model_zoo中的demo

      rknn_model_zoo中的demo模型连板运行时,需要先在rk3588中启动rknn_server

      #在rk3588上执行
      start_rknn.sh
      

      rk3588的adb支持网络模式

      #在x86主机上执行
      adb connect 192.168.0.xxx:5555
      #192.168.0.xxx需要换成实际的rk3588地址
      
      posted in 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 底盘驱动问题

      @lyon https://community.bwbot.org/topic/16624/ubuntu中用udev规则绑定usb串口和映射别称的办法

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • ubuntu中用udev规则绑定usb串口和映射别称的办法

      1、为什么要把usb串口号映射绑定到usb口

        usb转串口设备是常用的外设,用来扩展主机的串口功能。在实操过程中,一个机器人底盘往往会外接多个usb转串口设备,如果不对这些串口设备利用udev规则加以区分,则每次系统上电时这些串口设备的设备号是随机分配的。比如超声波模块的串口第一次开机分配成ttyUSB0, 自动充电模块串口则分配了ttyUSB1这个串口号,然后你重新断电开机后会发现ttyUSB1竟然被系统分配给了超生波模块的串口号,导致超生波和充电模块的ros驱动都工作异常。
        解决办法就是把usb口和串口设备进行绑定,同时给这个串口设备映射一个新的名字,比如第一个usb口和超声波串口进行绑定,绑定后超声波串口映射成一个新的名字bwSensors,超生波
      的ros驱动程序通过新名字bwSensors对串口进行操作,这样无论系统如何断电重启,都不会串台了。因为usb口的系统编号在关机重启后不会变化,绑定了usb口也就等价获取了静态分配的串口号。

      2、如何把usb串口设备绑定到usb口同时映射一个新名字

      2.1确定要绑定的usb口在系统中的名字

      #执行下列指令
      dmesg --follow
      

      将usb串口设备插在你要绑定的usb口上,观察上面指令的输出信息,确定系统这次分配的串口号是什么,一般是ttyUSB0、ttyUSB1之类,如下图中attached to ttyUSB1表示给新插入的设备分配了ttyUSB1这个编号。

      1fc331d0-c579-4267-a72b-427eff9dc533-图片.png
      再通过系统分配的串口号确定当前usb口的编号,下列指令输出信息中找到下图蓝色方框所在位置,红色方框内的2-2.3:1.0就是我们要获取的信息。

      #ttyUSB1要换成你上面实际获取的串口号
      udevadm info /dev/ttyUSB1
      

      814b7606-9513-424c-922c-536ceaea3ee6-图片.png

      2.2建立udev规则文件

      在/etc/udev/rules.d/路径下新建95-persistent-serial.rules,如果文件之前存在,不用新建直接修改内容。

       sudo nano  /etc/udev/rules.d/95-persistent-serial.rules
      

      文件内容如下

      ACTION!="add", GOTO="persistent_serial_end"
      SUBSYSTEM!="tty", GOTO="persistent_serial_end"
      KERNEL!="ttyUSB[0-9]*", GOTO="persistent_serial_end"
      
      KERNELS=="2-2.3:1.0"         ,SYMLINK="bwSensors" ,OWNER="xiaoqiang",    MODE="0666"
      
      KERNELS=="2-2.4:1.0"         ,SYMLINK="bwIMU" ,OWNER="xiaoqiang",    MODE="0666"
      
      LABEL="persistent_serial_end"
      

      KERNELS==“2-2.3:1.0” 中的"2-2.3:1.0"换成上面获取的usb口信息。
      SYMLINK=“bwSensors” 中的"bwSensors"就是我们要设置的别称,你可以修改成自己想要的名字。
      OWNER="xiaoqiang"中的"xiaoqiang"是系统当前用户名,要改成你自己的用户名。

      上面实列是把2-2.3:1.0这个usb口上的usb转串口设备绑定映射成bwSensors,把2-2.4:1.0这个usb口上的usb转串口设备绑定映射成bwIMU,
      一行代表一个端口的映射,理论上几十个usb转串口设备都可以通过这种方式进行绑定区分,你只要添加对应内容就行。
      

      Ctrl + s保存后, Ctrl + x退出。

      2.3主机重启生效

      重启后用ls /dev指令,一切正常的话会看到自己映射成功的设备号

      ls  /dev
      

      f43b7848-4842-40f2-a574-40848cfc6d3c-图片.png

      posted in 技术交流
      xiaoqiang
      xiaoqiang
    • RE: ps4手柄ros驱动安装和蓝牙配对教程

      @cuiliyun ps4手柄有多款山寨版本,有些版本就会能蓝牙配对但是无法使用ros。包装盒有大小两款,小盒子的一般是用不了的垃圾,大盒子能用的概率比较大,原厂原装的最好。

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: ps4手柄ros驱动安装和蓝牙配对教程

      @cuiliyun 手柄是哪里采购的?

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: ps4手柄ros驱动安装和蓝牙配对教程

      @cuiliyun 手柄配对没成功,先配对

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: google激光雷达slam算法Cartographer的安装及bag包demo测试

      @蓝胖子 没找到对应的launch文件,检查ros包launch文件夹内是否有这些launch文件,同时检查是否source了ros工作空间

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理

      @dennis odom_combined的话题类型需要是标准的里程计话题,不能是其它类型话题

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电无法保存dockposition问题

      @yanyan 18588452063

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电,无法保存dockposition

      @yanyan http://community.bwbot.org/topic/16596/二维码自动充电无法保存dockposition问题/34

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: Odom drifting heavily

      @loto https://community.bwbot.org/topic/612/recalibrate-the-chassis-imu

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 关于启动xiaoqiang_local.launch后自动结束进程

      @yao 用windows上位机软件测试能否正常充电,排除硬件问题后再用rostopic工具打印充电节点输出的充电电压和电流话题数据,看值是否异常

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电无法保存dockposition问题

      @yanyan1011-0 还不行就通过销售微信拉群远程演示一下

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电无法保存dockposition问题

      @yanyan1011-0 frame_id不要带/,如何查找话题是否订阅成功用rqt_graph、rosnode info工具确定。提供的代码很多用户已经成功使用了,卡在的地方是你们ros基础不扎实。

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电无法保存dockposition问题

      @yanyan1011-0 tf树解决后,再解决其它问题,打印/ar_pose_marker话题,看是否识别了二维码,以及话题内的frame—id显示的是不是和设置的一样。b84f96e8-b83d-45dd-93ce-d046b3582cac-图片.png
      还有里程计话题里面的速度值要为零,节点会根据这个速度,判断车是否处于静止状态,处于运动状态也会不保存位置。

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 二维码自动充电无法保存dockposition问题

      @yanyan1011-0 这是静态tf,随便发布,不存在无法加的问题

      posted in 产品服务
      xiaoqiang
      xiaoqiang
    • 1
    • 2
    • 3
    • 4
    • 5
    • 15
    • 16
    • 2 / 16