Cartographer 建图
视频地址
1.功能包的下载
进入网址
按照使用方法安装
cd ~/tianbot_mini_ws/src
git clone https://github.com/tianbot/tianbot_mini.git
git clone https://github.com/JackyMao1999/tbm_slam_cartographer.git
source /opt/ros/melodic/setup.bash
cd ~/tianbot_mini_ws/
catkin_make
echo "source ~/tianbot_mini_ws/devel/setup.bash --extend" >> ~/.bashrc
source /opt/ros/melodic/setup.bash
source /opt/ros/melodic/setup.bash
source /opt/ros/$ROS_DISTRO/setup.bash
安装包的位置,安装 cartographer 在 src 下
补充工作空间和安装包:
在主文件夹下 tianbot_mini_ws 是工作空间,工作空间下 src 目录下的是安装包。 工作空间(workspace)是一个存放工程开发相关文件的文件夹,里面包括有:
- src:代码空间(Source Space)
- build:编译空间(Build Space)
- devel:开发空间(Development Space)
- install:安装空间(Install Space)
这篇文章详细的介绍了工作空间与安装包: https://www.guyuehome.com/35887
我们继续讲解 Cartographer,为验证是否安装成功,打开终端
rospack profile
再新打开一个终端
rospack list | grep tbm_slam
这样就安装成功。
2.无 IMU 下的 Cartographer
启动小车,启动雷达:
roslaunch tianbot_mini bringup,launch
roslaunch tianbot_mini lidar.launch
roslaunch tbm_slam_cartographer slam_laser.launch
此处可能会报错 ,原因是版本更替是因为雷达的话题名字错误
改过来后,可以手拿对周围的环境建图,速度要慢,走太快的话建图效果不好,纯激光。
保存地图
roslaunch tianbot_mini map_save.launch
提示
文件位置为tianbot_mini_ws/src/tianbot_mini/maps
添加 MarkerArray 就可以看到轨迹:
轨迹是根据激光来算出来的,并没有融合 IMU。
复制 slam_laser.launch 并重命名 lds_slam_laser.launch 删掉 cmd_vel 和 Move_base 后同样可以移动,但删去 TF 变换就不行了,说明 TF 变换和话题一样很重要。
此时再启动打开 RViz 构建地图与之前 slam_laser.launch 效果相同。
注意
可能会遇到不出轨迹等问题,要注意 RViz 的 topic 选项 LaserScan,MarkerArray 等选项的 topic 因为版本更替问题会有错误,点开这些 topic 重新选择一下即可。
3.基于手机端 IMU 下的 Cartographer
手机端的 IMU 传感器,关注 tianbot 微信公众号后台回复:迷你机器人 打开终端:Ubuntu20.04 的版本为
sudo apt-get install ros-noetic-rosbridge-server
roslaunch rosbridge_server rosbridge_websocket.launch
Ifconfig 找到 IP 地址,输入到 APP 中,点击 Connnct
手机和电脑连接同一个 wifi,但不要连接 MINI 自己发出来的 WIFI 信号
打开新的终端 rostopic list
有一个/imu 的话题
成功连接之后 rostopic echo /imu 就可以看到数据 只看一次的话 rostopic echo.imu -n1
直接打开 rviz,增加 imu,选择 imu,就可以看到坐标系的变化
此时沿 Z 轴方向也就是上下移动小车,可观察到明显的大小变化。
改 lds_laser_imu.lua 文件 Tracking_frame=’imu’
Use_imu_date=true
复制 lds_cartographer.launch 为 lds_cartographer_imu.launch
配置文件 lds_laser_imu.lua,话题对,TF 要对,TF 复制,laser 改为 imu,上边的 arg name 也对应的复制粘贴
有 IMU 的存在效果会好一些
在关闭所有终端,打开有 IMU 的 Cartographer 如下:
注意
此时电脑连接的是路由器的 WIFI
roslaunch tianbot_mini bringup.launch
roslaunch tianbot_mini lidar.launch
roslaunch rosbridge_server rosbridge_websocket.launch
roslaunch tbm_slam_cartographer lds_cartographer_imu.launch
连接手机,ifconfig 查找 IP 地址,手机端 Connect,检验是否连接上 rostopic list,若有话题/imu,则成功连接。
注意: 如果手机 IMU 未成功连接,会出现下图警告:
在确定手机端 IMU 已连接的情况下,可重启手机端 IMU 的 APP 此时先不固定手机,小车放置不动,仅移动手机就可看到地图的变化,说明 IMU 确实在工作。
此时将手机固定到 MIMI 的支架上,就可以移动建图。