PIBOT上位机开发
- 1. 概述
- 2. 软件框架
- 3. Ubuntu的刷入、ROS的安装
- 4. ssh远程连接
- 5. 用户主机
- 6. 多机通讯
- 7. ROS驱动开发
- 8. 校准
- 9. ROS建图与导航
- 10 导航
- 11. 模拟器
- 12. Android App
- 13. IMU的相关包使用
1. 概述
采用树莓派/RK3288/RK3399/X86工控机/TK1/TX1/TX2
作为上位ROS
主控,基于ROS
开发适配导航建图算法
2. 软件框架
软件框架图3. Ubuntu的刷入、ROS的安装
具体请参考树莓派(raspberry pi 3b)安装ROS Kinetic Kame与Firefly RK3288/3399固件刷新与ROS安装
tf卡启动的
nanopi(RK3399)
则同树莓派
一样操作
4. ssh远程连接
windows
中推荐安装xshell
远程连接
树莓派/
nanopi rk3399
默认开启了热点ssid
和password
均为pibot_ap
,可以通过连接该热点连接树莓派/nanopi rk3399
,树莓派/nanopi rk3399
的IP为192.168.12.1
4.1 安装xshell
网盘中下载xshell
并安装
通过Xshell
连接树莓派/RK3288/RK3399
输入IP
和用户名密码
-
树莓派3B/3B+
为pibot
-
firefly RK3288、RK3399
为firefly
-
nanopi 3399
为pi
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
PIBOT
的ROS 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_bringup
或roslaunch pibot_bringup bringup.launch
- 在用户主机运行
pibot_configure
或rosrun rqt_reconfigure rqt_reconfigure
可以查看和修改内置的配置信息,运行pibot_control
或roslaunch pibot keyboard_teleop.launch
即可通过键盘控制小车运动
同时支持小米等手柄的接入,运行
roslaunch pibot joystick.launch
即可
8. 校准
无IMU校准
IMU校准
9. ROS建图与导航
9.1 概述
ROS
驱动中提供了cmd_vel
的订阅及odom
的发布,至此再需要一个激光雷达就可以完成建图了
9.2 建图
在树莓派/RK3288/RK3399
运行pibot_gmapping
或roslaunch 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_view
或roslaunch pibot_navigation view_nav.launch
,通过RViz
提供的功能既可以完成导航测试(这里需要先指定初始位置)
如果直接运行
roslaunch pibot_navigation nav.launch
而不指定map_name
参数则使用默认参数,nav.launch
文件中可以设置默认使用的地图文件
多点导航
可以通过修改pibot/scripts
中的navigation_demo.py
的python
脚本完成单点和多点的导航
具体可以参考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
选择roscore
的URI
点击CONNECT
切换
Camera View
与Map 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的相关包使用
装有IMU
的PIBOT
系列小车,底层提供IMU
的数据采集,上层提供了IMU
的互补滤波以及融合里程计和IMU
的扩展的卡尔曼滤波包robot_pose_ekf
启动时只需相应的with_imu
的launch
文件,例如
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和里程计融合与单独编码器里程计的对比测试