rikibotROS小车
硬件接线
YOLO v5
一个终端启动摄像头:
roslaunch astra_camera astra_pro.launch
另一个终端启动YOLO v5:
roslaunch rikibot_yolov5 rikibot_yolov5.launch
YOLOv5都是封装好了训练好了的,cuda报错不用管。
多机通讯
免键盘可以连接手机热点,去ubuntu里的设置-网络-热点网络旁边的小齿轮看ip地址,其实不需要ip a。
而且不需要桥接也可以。
举个例子我手机开好热点,虚拟机的ip是192.168.131.136, 小车是192.168.43.142。
那我就直接在虚拟机里面开个终端ssh gj@192.168.43.142就可以了。目前看来不需要export也行
通过同网段实现通信,需要改一下环境变量配置文件。
.bashrc:
export ROS_MASTER = http://172.20.10.12:11311 # 本机IP地址,端口是固定的11311,具体根据网络ip改
export ROS_HOSTNAME = 172.20.10.12
Ubuntu里面怎么看小车IP地址?
ip a # 查询IP地址
然后看inet那一行(除了环回测试地址),就是需要的IP地址。
用虚拟机需要设置网络为桥接模式。
总的来说,需要以下步骤:
- 手机开热点,电脑和小车同时连这个热点,保证两个机子都在同一无线网下。
- 改虚拟机网络为桥接。
- 用
ip a
查询IP地址,小车和虚拟机都查。 - 改虚拟机的
.bashrc
文件,设置ROS_MASTER_URI和ROS_HOSTNAME。
export ROS_MASTER_URI=http://小车的ip地址:11311
export ROS_HOSTNAME=虚拟机的ip地址(不加http://)
然后用SSH测试一下: 虚拟机开一个终端:
ssh gj@小车的ip地址
# 密码是buct
然后可以拔掉键盘和鼠标。
开三个终端ssh。
底盘测试
在虚拟机里面开好五个终端(四个连接ssh完毕)。
第一个键入:
roslaunch rikibot bringup.launch
# 成功了就会实时更新消息
第二个终端启动一个键盘控制节点:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
这样的话就可以像控制小海龟一样控制车全向行驶,控制方向键是UIO JKL MN。
实际Debug的时候,一定要注意开下位机,我为什么这么说呢,如果你是接联想电源充着电做的话,那下位机(似乎)是不工作的,所以最好是充好电了,然后再去开小 车的总控开关debug。
否则,就会出现以下情景:
SLAM建图
第三个终端开SLAM建图节点,小车自带一个gmapping 包:
roslaunch rikibot lidar_slam.launch
# 出现Registering First Scan 即为启动成功
第四个不连接SSH的虚拟机本地终端启动rviz:
rviz
打开Rviz什么也没有,这个时候点File-Open Config,打开gj_ws/src/rikibot_project/rikibot/rviz/slam.rviz
导入小车的激光雷达以及SLAM地图信息。
此时光标点击一下(其实不点也行?)第二个键盘控制节点的终端,车到处走,就可以建图。
地图保存
第五个连接着SSH的终端进行地图保存的操作
cd ~/gj_ws/src/rikibot_project/rikibot/maps # 切换到地图保存的文件夹
ls # 看看有没有map.sh,用于保存地图
./map.sh
# 出现Done即为保存完整
建的地图放在了~/gj_ws/src/rikibot_project/rikibot/maps
里面,格式是pgm和yaml文件,可以打开确认一下。
底盘launch文件解读
进入~/gj_ws/src/rikibot_project/rikibot/launch
,找到bringup.launch
文件。
找到group标签:
惯性测量单元(IMU):有两种型号,默认是MPU6050,根据imu_type这个参数选择(应该不用改了)。
底下的node标签中的程序包imu_calib是校正程序,程序包hfi没提供不用管,cmm_type是通讯模式(默认是serial串口通信)。
节点imu_filter_madgwick是imu滤波程序。节点riki_base_node是底盘控制程序。
static_transform_publisher是静态坐标变换程序(发布者节点)。
ekf_localization_node是里程计信息发布者程序,并且包含了滤波和校正功能。
最后的param标签是加载小车urdf模型到服务器中。
多点导航
参考以下launch文件:
cd ~/gj_ws/src/rikibot_project/rikibot/launch #文件路径
roslaunch rikibot_navigation navigate.launch
# 其中, show_mark.py就是源码,路径是~/gj_ws/src/rikibot_project/rikibot/script/show_mark.py
这一段源码要读,根据建图的地址,在# first goal
标签下设置导航目标。