电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Bittle和Raspberry Pi 4的ROS SLAM

使用Bittle和Raspberry Pi 4的ROS SLAM

2023-06-14 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

本文的主题将是 SLAM 和 ROS 映射。我们将使用来自 Petoi 的敏捷四足机器人 Bittle,它在上个月完成了他们的 Kickstarter 活动并取得了巨大成功。

pYYBAGNYhLyAWog7AAjlBN685A0783.jpg
Bittle 和他的哥哥 Nybble
 

首先让我们从一些理论开始。

2022 年 4 月 4 日更新我尽我所能定期更新我的文章,并根据您在 YouTube/Hackster 评论部分的反馈。如果您想表达对这些努力的支持和赞赏,请考虑给我买杯咖啡(或披萨):)。

什么是SLAM?

SLAM 代表 Simultaneous Localization and Mapping - 它是一组算法,允许计算机创建 2D 或 3D 空间地图并确定其在其中的位置。虽然 SLAM 本身并不是导航,但拥有地图并知道您在地图上的位置是从 A 点导航到 B 点的先决条件。

我们可以使用各种传感器来接收有关可用于映射的环境的数据

  • 激光扫描仪(一维和二维(扫描)激光测距仪)
  • 相机(单目、立体和 RGB-D)
  • 声纳传感器
  • 触觉传感器
  • 其他

在实践中很多时候使用传感器的组合,然后应用融合算法,例如扩展卡尔曼滤波器,以获得精确的信息

poYBAGNYhL-ANmydAADNNGJkXOo415.jpg
如果您想了解更多信息,请访问 https://www.kalmanfilter.net。是的,它甚至还有一个网站。
 

如果我们回到基础,对于大多数应用程序,您将处理基于 LIDAR 的 SLAM 或视觉 SLAM。基于激光雷达的 SLAM 相对容易设置并且非常精确——Waymo 在其自动驾驶汽车上使用激光雷达是有原因的。

pYYBAGNYhMGANMxuAAEqA0WB4-0437.png
你刚才说“激光雷达好”吗?
 

但当然,特斯拉没有这样做是有原因的——激光雷达体积庞大、价格昂贵,而且它们的旋转部件需要在较长时间内运行时进行维护。对于视觉 SLAM,RGB-D 传感器方法也可以非常强大,而简单的立体或单目系统可能很难设置。以下是描述中的更多链接,以详细了解 SLAM!

什么是同时定位和映射?

LSD-slam 和 ORB-slam2,基于文献的解释

RPLIDAR 和 ROS 编程 - 构建机器人的最佳方式

在本文中,我们将尝试称为 ORB-SLAM2 的单目视觉 SLAM 算法和基于激光雷达的 Hector SLAM。

使用 ORB-SLAM2 的视觉 SLAM

对于 ORB-SLAM2,我们将使用普通的廉价网络摄像头——需要对其进行校准以确定每个摄像头型号所独有的内在参数我建议使用内置的 ROS 相机校准工具进行校准。要安装这些(您可以安装在您的 Ubuntu PC 上):

sudo apt-get install ros-melodic-camera-calibration

打印校准棋盘,从这里下载

以毫米为单位测量正方形的边。然后输入以下命令开始校准:

roslaunch usb_cam usb_cam.launch
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera

更改 square 参数以匹配校准板上的正方形大小。

poYBAGNYhMSAD00kAAClXhUU_2Q804.png
 

为了获得良好的校准,您需要在相机框架中移动棋盘格,以便:

  • 相机视野左、右、上、下的棋盘
  • X 条 - 视野中的左/右
  • Y 条 - 视野中的顶部/底部
  • 尺寸栏 - 朝向/远离和倾斜相机
  • 相机左侧、右侧、顶部和底部的棋盘 X 栏 - 左侧/右侧在视野中 Y 栏 - 顶部/底部在视野中尺寸栏 - 朝向/远离和倾斜相机
  • 棋盘格填满整个视野
  • 棋盘向左、右、上和下倾斜(倾斜)

在每一步,保持棋盘静止,直到图像在校准窗口中突出显示。

当应用程序收集到足够的数据时,您将能够按下校准按钮。校准过程可能需要几分钟,所以请耐心等待。成功的校准将导致现实世界中的直边在校正后的图像中显得笔直。校准失败通常会导致空白或无法识别的图像,或不保留直边的图像。

之后你需要借助这个包将相机参数转换成.yaml格式,重命名为head_camera.yaml,放到.ros/camera_info/文件夹下。

有一个将 ORB-SLAM2 集成到 ROS 的包,它还发布了 2D 占用图。安装过程比较复杂,我推荐使用 Ubuntu 18.04 的树莓派镜像作为起点,避免编译很多(很多很多很多)额外的包。

安装 ROS 桌面和必要的依赖项

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source  ~/.bashrc
sudo apt-get install ros-melodic-pcl-ros ros-melodic-image-geometry ros-melodic-octomap-ros ros-melodic-usb-cam

创建 catkin 工作区,安装catkin构建工具并将 ORB_SLAM2_ROS 存储库和 Bittle 驱动存储库克隆到 catkin_ws/src 文件夹

mkdir -p catkin_ws/src && cd catkin_ws/src
git clone https://github.com/rayvburn/ORB-SLAM2_ROS
git clone https://github.com/AIWintermuteAI/bittle_ROS
cd bittle_ROS && git checkout slam

下载词汇文件并将其放在ORB_SLAM2/orb_slam2_lib/Vocabulary文件夹中

wget https://github.com/raulmur/ORB_SLAM2/raw/master/Vocabulary/ORBvoc.txt.tar.gz

然后从 catkin 工作区文件夹中,执行

cd src/ORB-SLAM2_ROS/ORB_SLAM2
sudo chmod +x build*
./build_catkin.sh
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source  ~/.bashrc

如果编译过程冻结,请尝试将交换大小增加到 2 Gb

sudo swapoff -a
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
grep SwapTotal /proc/meminfo

以后如果不需要,可以删除交换文件。成功安装后,运行一个示例以确保它按预期工作:

roslaunch orb_slam2_ros raspicam_mono.launch

需要一个额外的步骤,因为您很可能在无头模式下运行 Raspberry Pi(或其他 SBC),没有屏幕或键盘 - 无论是那个还是您的机器人都非常笨重。因此,我们需要配置 ROS 以在多台机器上工作 - 请查看我之前在 BITtle 系列中的文章,其中详细描述了此过程。

由于 Bittle 驱动程序是用 Python 3 编写的,而 ROS 默认仍使用 Python 2.7,因此我们需要为 Python 3 安装 rospkg 以使它们一起运行。

pip3 install rospkg

一旦你有了 ORB-SLAM2 和Bittle(或你的机器人基地)的软件包你就可以运行网络摄像头驱动程序了

roslaunch bittle_driver bittle_vslam_robot.launch

它将启动整个系统——机器人驱动程序、网络摄像头节点和 ORB-SLAM2。ORB-SLAM2 需要足够的环境信息来初始化,因此您可以手动移动机器人以避免平移或方向的大变化。ORB-SLAM2 初始化后将开始发布八图。您可以使用控制来移动您的机器人。

pYYBAGNYhMaAQ3ZYAAIpdiHW9dM868.png
路径(绿色)很乱,但总体正确,另一方面,占用地图完全关闭
 

不幸的是,我发现由于 Bittle 上的相机在转动过程中移动得太快,它往往会丢失关键点,需要返回到之前的位置。

可以在这里进行一些改进以使其更稳定

  • 使用立体相机
  • 使用 ORB-SLAM3 可以集成 IMU 数据以实现更精确的定位

基于激光雷达的 SLAM 与 Hector SLAM

如果 Visual SLAM 对我们的机器人不起作用,那么安装 LIDAR 并尝试一种基于激光扫描仪的算法怎么样?这里的好消息是,对于 LIDAR,我们不需要那么快的处理速度,因此即使是较旧的 Raspberry Pi 3 也可以。坏消息是,即使是小型激光雷达也很大,我可以使用的 RPLIDAR A1M8 重 190 克,当安装在这个有腿机器人的顶部时,它会严重干扰其重心并影响行走步态。

pYYBAGNYhM2ATD4qABALPcWL8_w630.jpg
我什至很惊讶它甚至可以处理这个 - 无论是在所需的电流和扭矩方面
 

在腹部下方增加了一些额外的重量以平衡事物之后,它可以爬行和行走,尽管我仍然试图小心并避免突然停止。

Hector SLAM的软件安装在 Ubuntu 18.04 上轻而易举。如果您还没有安装 ROS Desktop,请使用以下命令进行安装(与上面关于 Visual SLAM 的第一部分相同):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source  ~/.bashrc
sudo apt-get install ros-melodic-hector-slam

创建 catkin 工作区,安装catkin构建工具并将 RPLIDAR 存储库和 Bittle 驱动程序存储库克隆到 catkin_ws/src 文件夹

mkdir -p catkin_ws/src && cd catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
git clone https://github.com/AIWintermuteAI/bittle_ROS
cd bittle_ROS && git checkout slam

构建 Bittle 驱动程序包并获取你的 catkin 工作空间

catkin build
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source  ~/.bashrc

由于 Bittle 驱动程序是用 Python 3 编写的,而 ROS 默认仍使用 Python 2.7,因此我们需要为 Python 3 安装 rospkg 以使它们一起运行。

pip3 install rospkg

安装完所有这些后,将 ROS 配置为在多台机器上工作。然后运行

roslaunch bittle_driver bittle_lslam_robot.launch

启动 LIDAR、机器人控制和 hector SLAM 节点。总体映射结果看起来比 ORB-SLAM2 好得多,Hector SLAM 甚至可以发布里程计和路径消息,这为使用 ROS 导航堆栈运行自主导航开辟了道路。

poYBAGNYhNCAbpgjAAK3peGdWNM919.png
路径看起来更精确,我可以看到我们办公室中心的粗略计划
 

对于在 Bittle 上使用 LIDAR 时的改进,

  • IMU数据也可以集成
  • 步态和平衡算法可以调整以适应机器人顶部的额外重量
  • 可以使用更紧凑的激光雷达

这是关于来自 Petoi 的机器狗 Bittle 的系列文章的最后一篇。Kickstarter 活动已经结束,因此,如果您想购买 Bittle,请继续关注 Seeed 工作室子公司 TinkerGen 的预购公告,该公司将在其在线商店和亚马逊上销售 Bittle。

玩得开心建造机器人!


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费