EAI dashgo底盘(不带陀螺仪版本)+SICK激光(选择LMS100)的ROS建图导航基础

1.安装Ubuntu

    官网下载镜像,这里选择长期维护版本14.04,官方下载地址:

   https://www.ubuntu.com/download/alternative-downloads

    用软碟通ISO做一个Ubuntu镜像,软碟通中国网址:

    https://cn.ultraiso.net/

    制作Ubuntu镜像的步骤百度经验有参考,网址:

    https://jingyan.baidu.com/article/d5c4b52be79960da560dc59f.html

    安装完成后,可以做一下Ubuntu系统简化处理,安装输入法以及卸载不常用的软件,让系统更简洁。参考网址:

    https://blog.csdn.net/batman_0331/article/details/43638813

2.安装ROS 

    这里选择indigo版本,ROS indigo和 Ubuntu 14.04 都是LTS(长期维护版本),并且ROS indigo是专门为 Ubuntu14.04 量身定做。并且dashgo的软件包也是推荐这俩版本的结合。

    在dash搜索里面搜索software updater配置Ubuntu软件仓库以及选择速度快的服务器。

    配置 ROS 的 apt 源

ROS的apt源有官方源、国内 USTC 源或新加坡源可供选择, 选择其一就可以了,建议使用国内 USTC 源或新加坡源,安装速度会快很多。

方式一:官方源

$ 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://pool.sks-keyservers.net --recv-key 0xB01FA116
  $ sudo apt-get update
方式二:国内 USTC 源 URL :http://mirrors.ustc.edu.cn/ros/
$ sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

$ sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xB01FA116

$ sudo apt-get update
安装ROS软件包
$ sudo apt-get install ros-indigo-desktop-full

$ sudo apt-get install python-rosinstall
配置环境变量
$ sudo rosdep init

$ rosdep update

$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc

$ source ~/.bashrc
测试ROS安装是否成功

在终端输入 roscore ,输出如下所示,表示环境配置成功,ros正常运行。

  Ubuntu@Ubuntu:~$ roscore
    ... logging to /home/opt/ros/log/45d93ed8-a23a-11e6-99b1-4437e63de0fc/roslaunch-ubuntu-3460.log
    Checking log directory for disk usage. This may take awhile.
    Press Ctrl-C to interrupt
    Done checking log file disk usage. Usage is <1GB.
    
    started roslaunch server http://ubuntu:35377/
    ros_comm version 1.11.20


SUMMARY
========

PARAMETERS
 * /rosdistro: indigo
 * /rosversion: 1.11.20

NODES

auto-starting new master
process[master]: started with pid [3472]
ROS_MASTER_URI=http://eaibot:11311/

setting /run_id to 45d93ed8-a23a-11e6-99b1-4437e63de0fc
process[rosout-1]: started with pid [3485]
started core service [/rosout]

3.安装DASHGO软件包

因为底盘是选择的EAI底盘,可以参考创客智造里面的安装方式,但是我们的激光选择不同,参考网址:

https://www.ncnynl.com/archives/201709/1968.html

安装ROS依赖包

$ sudo apt-get install ros-indigo-serial ros-indigo-turtlebot-rviz-launchers ros-indigo-move-base-msgs libghc-sdl-image-dev libsdl-image1.2-dev ros-indigo-navigation ros-indigo-slam-gmapping ros-indigo-teb-local-planner

创建文件夹

$ mkdir -p  ~/dashgo_ws/src

$ cd ~/dashgo_ws/src

下载 Dashgo SLAM 版本

     $ git clone https://github.com/EAIBOT/dashgo.git

     $ cd dashgo

     $ git checkout slam_02

注意这里是切换到slam_02分支,对应的是他们自带的F4激光,对LMS100激光也可以用。

4.下载LMS100激光驱动(网口版本)

deb包安装

sudo apt-get install ros-indigo-lms1xx

源码安装

$ mkdir -p  ~/dashgo_ws/src
$ cd   ~/dashgo_ws/src
$ git clone https://github.com/ncnynl/LMS1xx.git

修改激光IP

    在激光配置软件(SICK官方有提供)上查询激光IP,将笔记本IP和激光改成同一网段,参考网址:

     http://blog.csdn.net/u013453604/article/details/50725833

Ubuntu的IP
    在Ubuntu下“编辑连接”——“以太网”——“添加”创建一个名为lmsxxx的有线连接。
    手动设定子网掩码为255.255.255.0,手动设定IP为:192.168.0.2~192.168.0.254都行。
    这样此IP与LMSxxx设备IP就处于同一网段了。

编译:

$ cd  ~/turtlebot_ws
$ catkin_make

另外,在建图之前应确保底盘编码器输出(Odom),激光扫描图像,TF关系调试。

    编码器输出(Odom)可在底盘进行精度测试的时候确定即可,直线校正与360度原地转弯矫正,具体矫正方式在底盘使用说明上有,这里不再赘述。

    激光调试,激光雷达通过网线连接到ubuntu电脑,新终端,执行

$ roscore

    新终端,执行

$ rosrun lms1xx LMS1xx_node _host:=192.168.0.1
    新终端,执行
$ rosrun rviz rviz
左击ADD-->by topic-->选择LaserScan
这时会发现status error,再将FixedFrame后面的值改为laser即可,效果:

EAI dashgo底盘(不带陀螺仪版本)+SICK激光(选择LMS100)的ROS建图导航基础_第1张图片

参考:https://www.ncnynl.com/archives/201703/1432.html

TF调试可以通过rqt工具调整:

EAI dashgo底盘(不带陀螺仪版本)+SICK激光(选择LMS100)的ROS建图导航基础_第2张图片

分析你的TF tree结构应保持一致。


5.代码

因为激光驱动是移植到dashgo软件包里面的所以注意frame_ID要保持一致,将laser修改为laser_frame这些细节要注意。

将bring_nav 文件夹里面的launch文件里面的原激光启动文件屏蔽,添加LMS1xx节点下的launch文件,注意LMS100激光的IP地址。

修改TF在RIVZ里面打开TF可以看到laser的变换修改括号里面的五个值使他们符合自己激光的安装位置。


6.执行

可执行里面的gmapping launch文件,打开rviz以及开启键盘控制即可。

$ roslaunch dashgo_nav gmapping_demo.launch
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py


7.地图保存

$ roscd dashgo_nav/maps

$ rosrun map_server map_saver -f my_map

附建图图像:

EAI dashgo底盘(不带陀螺仪版本)+SICK激光(选择LMS100)的ROS建图导航基础_第3张图片

第一次写博客,如有问题请联系我:[email protected],谢谢~

你可能感兴趣的:(实践)