3 Star 25 Fork 11

xiihoo-robot / DIY_A_SLAM_Navigation_Robot

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Loading...
README.md

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里面对应的应用层功能包。

Empty file

About

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

Releases

No release

Contributors

All

Activities

Load More
can not load any more
1
https://gitee.com/xiihoo-robot/DIY_A_SLAM_Navigation_Robot.git
git@gitee.com:xiihoo-robot/DIY_A_SLAM_Navigation_Robot.git
xiihoo-robot
DIY_A_SLAM_Navigation_Robot
DIY_A_SLAM_Navigation_Robot
master

Search

F2647f8d 8189591 Bbdfb06e 8189591