spark-groupx/README_Detailed.md

479 lines
13 KiB
Markdown
Raw Normal View History

2021-03-04 17:23:09 +08:00
# Spark
This repository contains the ROS wrapper of Sparks's driver plus various ROS applications.This is a meta-package.
## Table of Contents
* [Update Log](#update-log)
* [Packages Overview](#packages-overview)
* [Usage](#usage)
* [Mirror](#mirror)
* [Routine](#routine)
* [Spark-Follower](#spark-follower)
* [Spark-SLAM Mapping](#spark-slam-mapping)
* [Spark-Navigation](#spark-navigation)
* [RTABMap-DeepCamera-Mapping](#rtabmap-deepcamera-mapping)
* [Spark-RTABMap-Mapping-Navigation](#spark-rtabmap-mapping-navigation)
* [Routine (Chinese Version)](#routine-cn)
* [Spark-跟随演示](#spark-跟随演示)
* [Spark-SLAM地图构建](#spark-slam地图构建)
* [Spark-自动导航](#spark-自动导航)
* [RTABMap深度相机手持建图](#rtabmap-深度相机手持建图)
* [Spark-RTABMap建图与导航](#spark-rtabmap建图与导航)
## Update Log
* Raise the stack so that the lidar can be added on it.
* Update the pre install packages so that the navigation and gmapping can be run.
## Packages Overview
* ***src*** : spark driver including base driver, camera driver, robot description, teleop package, and follow person package and so on.
* ***tools*** : it contains the 3rd part openni2 driver which camera driver uses.
* ***doc*** : it shows that how to compile and use this meta-package.
## Usage
### Prequirement
* System: Ubuntu 14.04+
* ROS Version: Indigo(Desktop-Full Install)
### Compile
Build this compile with the following steps:
```yaml
git clone https://github.com/NXROBO/spark.git
#install
cd spark
./onekey.sh
```
If everything goes fine, test the follow-person example as follow:
```yaml
./install/follow_run.sh
```
# Mirror
We also provide a downloadable mirror whose all environments have been configured.
* Download address: [spark_mirror](http://pan.baidu.com/s/1i4ZlH4p)
# Routine
## Spark-Follower
### Introduction
* Spark will follow the object in front of itself and keep a certain distance.
### Procedure
* Ensure spark base or camera are well connected with laptop.
* Configure the workspace
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* Host computer, launch follower file
```yaml
roslaunch spark_follower bringup.launch
```
* Start following
```yaml
Move Spark to open place, stand in front of spark. Spark will take corresponding action when you move back and forth or move left and right.
You should control the moving speed and ensure that there doesn't exist too many objects around you. Otherwise, the following effect will not be guaranteed.
```
## Spark-SLAM-Mapping
### Introduction
* Introduce the how to realize Gmapping, Hector, Karto, and Frontier Exploration algorithm on Spark for map construction
* Different algorithms apply to different situation, users can select appropriate method depending on actual tasks.
### Procedure
* Default parameters are provided by ROS official website, which can be adapted for various requirements.
* Ensure spark base or camera are well connected with laptop.
* Configure the workspace
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* Host computer, launch SLAM file
```yaml
Based on 2d Lidar:
roslaunch spark_slam 2d_slam.launch slam_methods:=gmapping
No Rviz:
roslaunch spark_slam 2d_slam_norviz.launch slam_methods:=gmapping
Based on camera:
roslaunch spark_slam depth_slam.launch slam_methods:=gmapping
No Rviz:
roslaunch spark_slam depth_slam_norviz.launch slam=methods:=gmapping
```
* Host computer, New terminal, launch keyboard control
```yaml
rosrun spark_teleop spark_teleop_node 0.25 0.5
0.25 is linear velocity0.5 is angular velocitySpark can be controlled by WASD.
```
* Host computer, New terminal, launch map saver
```yaml
rosrun map_server map_saver -f ~/my_map
```
### Addition
```yaml
Note: Spark supports various SLAM methods
1. Spark supports GmappingHectorKarto and Frontier Exploration.
2. Users can change slam_methods:=xxxx to choose methods, default is gmapping
3. The value of 'slam_methods' includes gmapping, hector, karto, frontier_exploration
4. For exampleif you want to use Karto Slamselect following instruction
roslaunch spark_slam 2d_slam.launch slam_methods:=karto
```
```yaml
Note: Install corresponding package or download source code
For Gmapping:
Gmapping has been installed in install.sh
For Hector Mapping:
sudo apt-get install ros-indigo-hector-mapping
For Frontier Exploration:
sudo apt-get install ros-indigo-frontier-exploration ros-indigo-navigation-stage
For Karto Mapping:
sudo apt-get install ros-indigo-slam-karto
```
## Spark-Navigation
### Introduction
* Given the map about surrounding environment, Spark can realize the automatic navigation and avoid static or active obstacles.
### Procedure
* Ensure spark base or camera are well connected with laptop.
* Configure the workspace
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* Host computer, launch navigation file
```yaml
Based on 2d Lidar:
roslaunch spark_navigation amcl_demo_lidar.launch map_file:=home/username/my_map.yaml (username is the name of host computer, map_file demonstrates the position of the map your construct and the name of your yaml file. )
Based on camera:
roslaunch spark_navigation amcl_demo.launch map_file:=home/username/my_map.yaml
"odom received!" indicates that the navigation initializes successfully.
```
* In Rviz, use 2D Pose Estimate to estimate the rough position of robot, and hold the left mouse to determine the robots orientation.
* After pose estimationuse 2D Nav Goal to specify the goal and final orientation of robot.
## RTABMap-DeepCamera-Mapping
### Introduction
* RTAB-Map: Real Time Appearance-Based Mapping
* RTAB-Map is a RGB-D SLAM method based on global close-loop detection with real-time constraints.
* The method can generate 3D point cloud about surroundings.
### Procedure
* Ensure spark base or camera are well connected with laptop.
* Configure the workspace
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* Host computer, launch depth camera
```yaml
roslaunch spark_rtabmap camera.launch
```
* Host computer, new terminal, launch mapping
```yaml
roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start"
P.S. "--delete_db_on_start" is used to clear the old database.
```
* Move the camera slowly and stably to construct the map
### Addition
```yaml
Note: Install rtabmap package in advance
sudo apt-get install ros-indigo-rtabmap-ros
```
## Spark-RTABMap-mapping-navigation
### Introduction
* Use rtabmap-ros package to construct map and navigate on Spark
* The method can generate 3D point cloud and 2D occupied grid map about surroundings.
### Procedure
* Ensure spark base or camera are well connected with laptop.
* Configure the workspace
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* Host computerlaunch spark and rtabmap related node
```yaml
roslaunch spark_rtabmap rtab_demo.launch
```
* Host, new terminal, launch mapping
```yaml
roslaunch spark_rtabmap mapping.launch
P.S. If there exists an error indicates that rtabmap node cannot be found in rtabmap_ros
source /opt/ros/indigo/setup.bash
```
* Host, new terminal, launch keyboard control
```yaml
rosrun spark_teleop spark_teleop_node 0.25 0.5
0.25 is linear velocity0.5 is angular velocitySpark can be controlled by WASD.
```
* Host, new terminal, launch localization and navigation
```yaml
roslaunch spark_rtabmap mapping.launch localization:=true
```
* In Rviz, use 2D Pose Estimate to estimate the rough position of robot, and hold the left mouse to determine the robots orientation.
* After pose estimationuse 2D Nav Goal to specify the goal and final orientation of robot.
## Addition
```yaml
Note: Install rtabmap package in advance:
sudo apt-get install ros-indigo-rtabmap-ros
map data is saved in ~/.ros/rtabmap.db
```
# Routine-CN
## Spark-跟随演示
### 说明
* Spark的跟随演示会以它面前的一个目标为中心并保持一定的距离如果太近即主动后退到适当距离如果太远就主动跟上。
### 步骤
* 确保Spark底盘、摄像头与主机连接良好
* 进行工作空间的配置
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* 主机,启动跟随文件
```yaml
roslaunch spark_follower bringup.launch
```
* 开始跟随
```yaml
把Spark搬到开阔的地方站在Spark前面前后移动Spark会根据摄像头获得信息进行相应的移动左右移动时Spark也会进行旋转但左右移动速度不应过快。不要有太多物体在人的周围Spark跟随的物体可能会改变。
```
## Spark-SLAM地图构建
### 说明
* 介绍Spark如何通过Gmapping Hector SLAM Karto SLAM以及Frontier Exploration等方法实现地图构建
* 不同的建图方法可适用于不同的场景中,用户可根据自己的需求选择
### 步骤:
* 默认参数由ros官方的package提供可自行修改以适应不同的情况
* 确保Spark底盘、Lidar或摄像头与主机连接良好
* 进行工作空间的配置
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* 主机启动SLAM建图
```yaml
基于2d lidar的建图:
roslaunch spark_slam 2d_slam.launch slam_methods:=gmapping
不启动Rviz:
roslaunch spark_slam 2d_slam_norviz.launch slam_methods:=gmapping
基于camera的建图:
roslaunch spark_slam depth_slam.launch slam_methods:=gmapping
不启动Rviz:
roslaunch spark_slam depth_slam_norviz.launch slam=methods:=gmapping
```
* 主机,新终端,启动键盘控制
```yaml
rosrun spark_teleop spark_teleop_node 0.25 0.5
0.25为线速度0.5为角速度用户可通过WASD控制Spark移动
```
* 主机,新终端,保存地图
```yaml
rosrun map_server map_saver -f ~/my_map
```
### 补充
``` yaml
Note: Spark支持多种SLAM建图方法
1. Spark支持GmappingHectorKarto以及Frontier Exploration方法
2. 用户可以通过更改slam_methods:=xxxx选择不同的方法默认方法为gmapping
3. slam_methods包括gmapping, hector, karto, frontier_exploration
4. 举个例子如果想使用Karto Slam可以用如下指令
roslaunch spark_slam 2d_slam.launch slam_methods:=karto
```
```yaml
Note: 安装对应的package或下载对应源码
For Gmapping:
Gmapping包在install.sh中已经安装
For Hector Mapping:
sudo apt-get install ros-indigo-hector-mapping
For Frontier Exploration:
sudo apt-get install ros-indigo-frontier-exploration ros-indigo-navigation-stage
For Karto Mapping:
sudo apt-get install ros-indigo-slam-karto
```
## Spark-自动导航
### 说明
* 在构建好周围环境地图的前提下Spark可以在地图范围内实现自动导航并且能够规避动态和静态的障碍物
### 步骤
* 确保Spark底盘、摄像头或雷达与主机连接良好
* 进行工作空间的配置
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* 主机,启动导航文件
```yaml
基于2d lidar:
roslaunch spark_navigation amcl_demo_lidar.launch map_file:=home/username/my_map.yaml (username为主机用户名, map_file后面为地图的yaml文件所在位置, 可根据地图保存的地址进行更改)
基于camera:
roslaunch spark_navigation amcl_demo.launch map_file:=home/username/my_map.yaml
如果你看到 odom received! 说明已经正常运行。
```
* 在Rviz中选择“2D Pose Estimate”估计Spark大概的位置。按住鼠标左键估计确定Spark大概朝向。
* 设置好估计的姿态选择“2D Nav Goal”点击你想让Spark去的地方以及朝向。
## RTABMap-深度相机手持建图
### 说明
* RTAB-MapReal-Time Appearance-Based Mapping
* RTAB-Map是基于具有实时约束的全局闭环检测的RGB-D SLAM方法
* 可以生成环境的3D点云
### 步骤
* 确保Spark底盘、摄像头与主机连接良好
* 进行工作空间的配置
* cd ~/spark_ws
```yaml
source devel/setup.bash
```
* 主机,启动深度相机
```yaml
roslaunch spark_rtabmap camera.launch
```
* 主机,新终端,启动建图模式
```yaml
roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start"
P.S. "--delete_db_on_start"用于清除旧数据库
```
* 缓慢移动camera进行建图
### 补充
```yaml
Note: 在实验前要安装rtabmap package
sudo apt-get install ros-indigo-rtabmap-ros
```
## Spark-RTABMap建图与导航
### 说明
* 利用rtabmap-ros包在spark上实现建图与导航
* 可生成3D点云以及2D占据栅格地图
### 步骤
* 确保Spark底盘、摄像头与主机连接良好
* 进行工作空间的配置
```yaml
cd ~/spark_ws
source devel/setup.bash
```
* 主机启动spark以及rtabmap相关节点
```yaml
roslaunch spark_rtabmap rtab_demo.launch
```
* 主机,新终端,启动建图
```yaml
roslaunch spark_rtabmap mapping.launch
P.S. 这一步若提示在rtabmap_ros找不到rtabmap
source /opt/ros/indigo/setup.bash
```
* 主机,新终端,启动键盘控制
```yaml
rosrun spark_teleop spark_teleop_node 0.25 0.5
0.25为线速度0.5为角速度用户可通过WASD控制Spark移动
```
* 主机,新终端,启动定位导航模式
```yaml
roslaunch spark_rtabmap mapping.launch localization:=true
```
* 在Rviz中选择“2D Pose Estimate”估计Spark大概的位置。按住鼠标左键估计确定Spark大概朝向。
* 设置好估计的姿态选择“2D Nav Goal”点击你想让Spark去的地方以及朝向。
### 补充
```yaml
Note: 在实验前要安装rtabmap package
sudo apt-get install ros-indigo-rtabmap-ros
地图数据保存在 ~/.ros/rtabmap.db中
```