PIBOT上位机开发

作者: PIBOT导航机器人 | 来源:发表于2019-06-02 23:26 被阅读1次

    1. 概述

    采用树莓派/RK3288/RK3399/X86工控机/TK1/TX1/TX2作为上位ROS主控,基于ROS开发适配导航建图算法

    2. 软件框架

    软件框架图

    3. Ubuntu的刷入、ROS的安装

    具体请参考树莓派(raspberry pi 3b)安装ROS Kinetic KameFirefly RK3288/3399固件刷新与ROS安装

    tf卡启动的nanopi(RK3399) 则同树莓派一样操作

    4. ssh远程连接

    windows中推荐安装xshell远程连接

    树莓派/nanopi rk3399默认开启了热点ssidpassword均为pibot_ap,可以通过连接该热点连接树莓派/nanopi rk3399,树莓派/nanopi rk3399的IP为192.168.12.1

    4.1 安装xshell

    网盘中下载xshell并安装

    通过Xshell连接树莓派/RK3288/RK3399

    输入IP和用户名密码

    • 树莓派3B/3B+pibot
    • firefly RK3288、RK3399firefly
    • nanopi 3399pi
    输入IP
    SHELL

    Windows通过xshell传输文件


    5. 用户主机

    需要一个PC安装ROS环境,用来显示查看地图或者玩转模拟器等,PIBOT提供了一个一键安装ROS的脚本pibot_install_ros,可以直接在Ubuntu下安装ROS
    用户主机环境Ubuntu 16.04或者Windows7/10+Vmvare+Ubuntu16.04虚拟机Ros kinetic环境, 安装ROS参见Windows下安装Ubuntu虚拟机及ROS相关章节

    6. 多机通讯

    用户主机树莓派/RK3288/RK3399/TK1/TX1/TX2/X86主机怎么建立ROS通讯的,PIBOT提供了一键配置脚本pibot_init_env
    如需了解细节
    请参考ROS多机的通讯配置pibot_init_env介绍即可

    7. ROS驱动开发

    7.1 概述

    下位机及通过串口与树莓派/RK3288/RK3399/TK1/TX1/TX2/X86主机通讯,PIBOT提供了一个简单的协议,通讯协议具体请参见ROS机器人底盘(3)-通讯协议,同时PIBOT提供两个一个ROS无关的串口控制接口具体可以参见PIBOT通讯协议的python解析实现

    7.2 驱动开发及PID参数动态调整

    PID参数已在出厂时候配置,如需了解细节请参考ROS机器人底盘(10)-PIBOT的driver的实现及动态PID调节

    7.3 目录结构简介

    建议拷贝提供的压缩文件至目标设备(树莓派/RK3288/RK3399/X86工控机/TK1/TX1/TX2)上解压或者直接git clone,不然会遇到一些问题,具体问题见Q&A

    PIBOTROS workspace目录如下图

    • arbotix_ros 模拟器
    • pibot 工具集
      pibot
    • pibot_bringup pibot驱动包
      pibot_bringup
    • pibot_description pibot urdf文件
      pibot_description
    • pibot_navigation 建图导航相关配置项
      pibot_navigation
    • pibot_simulator pibot导航模拟器
      pibot_simulator
    • rplidar_ros rplidar激光雷达驱动包
    • ydlidar-1.2.1 eai激光雷达驱动包

    7.4 编译与测试

    配置

    apollo车型安装rplidar为例

    树莓派/RK3288/RK3399

    车载主机

    控制PC

    控制主机

    编译

    cd ~/pibot_ros/ros_ws
    catkin_make
    

    测试

    初始化配置

    重新拔插USB口或者重启树莓派/RK3288/RK3399

    ls /dev/pibot -l
    

    开始测试

    • 树莓派/RK3288/RK3399运行pibot_bringuproslaunch pibot_bringup bringup.launch
    • 用户主机运行pibot_configurerosrun rqt_reconfigure rqt_reconfigure可以查看和修改内置的配置信息,运行pibot_controlroslaunch pibot keyboard_teleop.launch即可通过键盘控制小车运动

    同时支持小米等手柄的接入,运行roslaunch pibot joystick.launch即可

    8. 校准

    无IMU校准

    参见ROS机器人底盘(11)-PIBOT的控制及校准

    IMU校准

    参见ROS机器人底盘(25)-PIBOT的IMU校准

    9. ROS建图与导航

    9.1 概述

    ROS驱动中提供了cmd_vel的订阅及odom的发布,至此再需要一个激光雷达就可以完成建图了

    9.2 建图

    树莓派/RK3288/RK3399运行pibot_gmappingroslaunch pibot_navigation gmapping.launch
    用户主机运行roslaunch pibot_navigation view_nav.launch或者pibot_view

    两种建图方法

    • 运行roslaunch pibot keyboard_teleop.launch或者roslaunch pibot joystick.launch即可通过键盘或者遥控手柄开始建图
    • 直接选择导航的点(2D Nav Goal)开始建图

    保存地图

    • 运行下列命令即可(xxx为自定义名称)
    roslaunch pibot_navigation save_map.launch map_name:=xxx
    

    或者

    roscd pibot_navigation/maps/
    rosrun map_server map_saver -f xxx`
    

    可以看到生成2个文件

    10 导航

    单点导航测试

    树莓派/RK3288/RK3399运行roslaunch pibot_navigation nav.launch map_name:=xxx.yaml
    用户主机运行pibot_viewroslaunch pibot_navigation view_nav.launch,通过RViz提供的功能既可以完成导航测试(这里需要先指定初始位置)

    如果直接运行roslaunch pibot_navigation nav.launch而不指定map_name参数则使用默认参数,nav.launch文件中可以设置默认使用的地图文件

    多点导航

    可以通过修改pibot/scripts中的navigation_demo.pypython脚本完成单点和多点的导航
    具体可以参考ROS机器人底盘(18)-如何在实际项目中应用ROS导航相关(1)

    11. 模拟器

    PIBOT包内置了模拟器,可以直接运行模拟导航

    • 运行roslaunch pibot_simulator nav.launch或者pibot_simulator
    • 运行roslaunch pibot_navigation view_nav.launch
      这样无需小车也可以模拟导航了

    12. Android App

    12.1相关功能

    保证手机跟跟PC或者树莓派/RK3288/RK3399连接同一个网络,保证手机能够访问到roscore(export ROS_IP=XXX.XXX.XXX.XXX)具体参见ROS多机的通讯配置


    修改Master URI选择roscoreURI 点击CONNECT
    切换Camera ViewMap View
    android_app
    • Set Pose在地图长按 相当于Rviz中的 2D Pose Estimate
    • Set Goal在地图长按 相当于Rviz中的 2D Nav Goal
    • 左下角Joystick可以发出cmd_vel topic控制小车移动

    12.2 显示视频

    显示视频需要硬件摄像头支持同时在PC或者树莓派/RK3288/RK3399启动roslaunch pibot usb_camera.launch

    13. IMU的相关包使用

    装有IMUPIBOT系列小车,底层提供IMU的数据采集,上层提供了IMU的互补滤波以及融合里程计和IMU的扩展的卡尔曼滤波包robot_pose_ekf
    启动时只需相应的with_imulaunch文件,例如
    roslaunch pibot_bringup bringup_with_imu.launch或者pibot_bringup_with_imu
    roslaunch pibot_navigation gammping_with_imu.launch或者pibot_gmapping_with_imu
    roslaunch pibot_navigation nav_with_imu.launch或者pibot_naviagtion_with_imu
    具体可以参考ROS机器人底盘(22)-IMU和里程计融合
    ROS机器人底盘(23)-IMU和里程计融合与单独编码器里程计的对比测试

    相关文章

      网友评论

        本文标题:PIBOT上位机开发

        本文链接:https://www.haomeiwen.com/subject/kyofxctx.html