PIBOT上位机开发

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

如需要关闭ap模式,改为连接wifi,只需要执行rm ~/.pibot_ap后重启
如需要打开ap模式, 开启则执行touch ~/.pibot_ap后重启

4.1 安装xshell

网盘中下载xshell并安装

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

输入IP和用户名密码

  • 树莓派3B/3B+pibot
  • firefly RK3288、RK3399firefly
  • nanopi 3399pi
    pibot_xshell.gif

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

  • 设备端


    pibot_init_env_dev.gif
  • 主机端


    pibot_init_env_host.gif

7. ROS驱动开发

7.1 概述

下位机及通过串口与树莓派/RK3288/RK3399/TK1/TX1/TX2/X86主机通讯,PIBOT提供了一个简单的协议,通讯协议具体请参见[https://gitee.com/pibot/pibot_bringup/tree/master/doc)

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
git pull # 拉取最新的代码
cd ~/pibot_ros/ros_ws
catkin_make

测试

初始化配置

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

ls /dev/pibot -l

开始测试

打开终端输入pibot_,再输入2次tab提示支持的命令

pibot_cmd.gif

这些命令具体定义在~/.pibotrc文件,该文件是pibot_init_env脚本自动生成的

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
或者直接浏览器访问192.168.12.1:8080选择相应的Topic即可

192.168.12.1为设备地址, 以具体设备为准

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和里程计融合与单独编码器里程计的对比测试

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容