1 Star 0 Fork 14

JOKER_XUE / DIY_A_SLAM_Navigation_Robot

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
Loading...
README

DIY_A_SLAM_Navigation_Robot

自己动手做一台SLAM导航机器人

温馨提示

关于

资料汇总下载

目录

  • 第一章:Linux基础
  • 第二章:ROS入门
  • 第三章:感知与大脑
  • 第四章:差分底盘设计
  • 第五章:树莓派3开发环境搭建
  • 第六章:SLAM建图与自主避障导航
  • 第七章:语音交互与自然语言处理
  • 附录A:用于ROS机器人交互的Android手机APP开发
  • 附录B:用于ROS机器人管理调度的后台服务器搭建
  • 附录C:如何选择ROS机器人平台进行SLAM导航入门

环境要求

  • ubuntu 16.04 或 ubuntu-mate 16.04
  • ROS kinetic

源码说明

本仓库的code文件夹中包含4个子文件夹,分别为driver、carto、nav和apps;其中文件夹driver中存放的是miiboo机器人相关的底层ROS驱动包源码,文件夹carto中存放的是google开源SLAM算法(即cartographer)相关的核心算法库以及ROS接口调用项目的源码,文件夹nav中存放的是导航相关的核心算法库、插件以及ROS接口调用项目的源码,文件夹apps中存放的是用户应用层业务逻辑代码。

文件夹 源码包 说明
driver miiboo 机器人底盘驱动(电机控制和URDF模型)
miiboo_imu IMU传感器驱动
usb_cam USB摄像头驱动
ydlidar 激光雷达驱动
broadcast_ip 广播本机IP地址
carto cartographer_ros cartographer算法的ROS接口调用
cartographer cartographer算法的核心库
ceres-solver cartographer算法中需要调用的非线性优化库
nav navigation-kinetic-devel 导航功能包集
teb_local_planner teb路径规划插件
miiboo_nav 导航算法的ROS接口调用
apps miiboo_asr 语音交互应用程序
patrol 指定路线巡航应用程序

源码编译

在正式编译本仓库内的代码之前,你需要先搭建好“miiboo”机器人的软硬件环境。硬件环境是指机器人的传感器(电机控制板、激光雷达、IMU、摄像头等)以及主机(比如树莓派、Jetson nano/tx1/tx2、RK3399等开发板);软件环境是指机器人所搭载主机的操作系统(也就是ubuntu 16.04 或 ubuntu-mate 16.04)以及ROS系统(也就是ROS kinetic)。

  • 硬件环境搭建教程:
    • 《自己动手做一台SLAM导航机器人》第三章:感知与大脑
    • 《自己动手做一台SLAM导航机器人》第四章:差分底盘设计
  • 软件环境搭建教程:
    • 《自己动手做一台SLAM导航机器人》第一章:Linux基础
    • 《自己动手做一台SLAM导航机器人》第二章:ROS入门
    • 《自己动手做一台SLAM导航机器人》第五章:树莓派3开发环境搭建

如果“miiboo”机器人的软硬件环境已经搭建完毕,就可以将本仓库 https://github.com/xiihoo/DIY_A_SLAM_Navigation_Robothttps://gitee.com/xiihoo-robot/DIY_A_SLAM_Navigation_Robot 的代码下载或者克隆到你自己的计算机,并且将下载或克隆下来的所有文件拷贝到你的机器人主机备用,其实只需要将文件夹code中的内容拷贝到你的机器人主机。 由于code文件夹下的driver、carto、nav和apps都是ROS功能包或ROS功能包集,所以不能直接编译,而是需要放在特定的ROS工作空间才能编译。

driver源码编译

请按教程(《自己动手做一台SLAM导航机器人》第二章:ROS入门)中的方法在机器人主机端新建一个catkin_ws工作空间,然后将本项目提供的"code/driver/"路径中的所有功能包拷贝到该工作空间的"catkin_ws/src/"路径中,最后使用catkin_make命令编译即可。

carto源码编译

由于cartographer算法采用catkin_make_isolated命令编译,这与传统的catkin_make命令编译有所不同。因此这里要为cartographer算法专门新建一个catkin_ws_carto工作空间,然后按照cartographer官方教程步骤或者本项目的教程(《自己动手做一台SLAM导航机器人》第六章:SLAM建图与自主避障导航)将cartographer算法安装到catkin_ws_carto工作空间。由于实际使用中需要对cartographer算法的部分代码以及配置文件进行修改,所以大家需要将本项目提供的"code/carto/"路径中的源码覆盖到上面默认源码安装路径“catkin_ws_carto/src/”。源码覆盖完成后,使用catkin_make_isolated命令重新编译即可生效。

nav源码编译

由于nav里面包含的功能包很多,为了便于管理维护。这里同样为其专门新建一个catkin_ws_nav工作空间,接着将本项目提供的"code/nav/"路径中的所有功能包拷贝到该工作空间的"catkin_ws_nav/src/"路径中,然后按照本项目的教程(《自己动手做一台SLAM导航机器人》第六章:SLAM建图与自主避障导航)进行编译。

apps源码编译

同样为了便于管理维护,这里为apps里面包含的功能包专门新建一个catkin_ws_apps工作空间。接着将本项目提供的"code/apps/"路径中的所有功能包拷贝到该工作空间的"catkin_ws_apps/src/"路径中,然后按照本项目的教程(《自己动手做一台SLAM导航机器人》第六章:SLAM建图与自主避障导航、第七章:语音交互与自然语言处理)进行编译。

程序运行

当所以源码都编译完成后,就可以按照需求顺序启动需要的功能包程序。比如要进行SLAM建图,就先启动driver里面的各个功能包,然后启动carto里面的功能包,最后用遥控或键盘控制机器人移动建图并将建好的地图保存下来。如果要进行导航,就先启动driver里面的各个功能包,然后启动nav里面的功能包,最后通过远程电脑端的rviz或手机APP给机器人发送目标点。如果要实时运行SLAM建图和导航,就先启动driver里面的各个功能包,然后启动carto里面的功能包,接着启动nav里面的功能包,最后通过远程电脑端的rviz或手机APP给机器人发送目标点,当不发送目标点时也可以用遥控或键盘控制机器人移动建图,不过这种同时启动SLAM建图和导航的情况需要进行特殊的配置比较麻烦(新手不推荐)。如果要进行指定路线巡航,就需要先建立好地图或在导航过程中实时建图,然后启动导航,最后启动apps里面对应的应用层功能包。

空文件

简介

自己动手做一台SLAM导航机器人 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/JOKER__XUE/DIY_A_SLAM_Navigation_Robot.git
git@gitee.com:JOKER__XUE/DIY_A_SLAM_Navigation_Robot.git
JOKER__XUE
DIY_A_SLAM_Navigation_Robot
DIY_A_SLAM_Navigation_Robot
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891