< >
Home » DashgoD1底盘新指南 » DashgoD1底盘新指南-4.5 PC建地图

DashgoD1底盘新指南-4.5 PC建地图

DashgoD1底盘新指南-4.5 PC建地图

PC 使用 gmapping 建地图

本教程使用 Flash Lidar F4 激光雷达 + D1 + Dashgo 进行 gmapping 建地图 运行环境:Ubuntu
14.04 、 indigo版ROS

  • 安装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
  • 若还没有搭建 Dashgo 运行环境,便可直接执行以下操作:
     $ 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
  • 下载激光雷达 Flash Lidar 驱动
     $ cd ~/dashgo_ws/src

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

     $ cd flashgo

     $ git checkout 1.1.0
  • 然后编译
     $ cd ~/dashgo_ws

     $ catkin_make
  • catkin_make 编译完成后,添加 Dashgo 环境变量到 ~/.bashrc 文件中。
     $ echo "source ~/dashgo_ws/devel/setup.bash" >> ~/.bashrc

     $ source ~/.bashrc
  • source ~/.bashrc 使环境变量的配置生效。

  • 若已经搭建 Dashgo 运行环境,便执行以下操作:

  • Dashgo 切换到 SLAM 版本

     $ cd ~/dashgo_ws/src/dashgo

     $ git checkout slam_02
  • 下载激光雷达 Flash Lidar 驱动
     $ cd ~/dashgo_ws/src

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

     $ cd flashgo

     $ git checkout 1.1.0
  • 然后编译

       $ cd ~/dashgo_ws/
    
       $ catkin_make
    

串口访问权限

  • 创建 dashgo 和 flash lidar 的串口访问别名
     $ roscd dashgo_bringup/startup

     $ sudo sh create_dashgo_udev.sh

     $ sudo sh create_flashlidar_udev.sh
  • 重新插拔连接电脑的激光雷达USB线和 D1 串口线

  • 查看 D1 串口是否存在

     $ ls -l /dev/dashgo

注意:如果没有找到 /dev/dashgo 口,先确定 /dev 下是否存在名为 ttyACM 开头的串口,若没有,则是 D1
的串口没有连上。

  • 查看激光雷达USB口是否存在
     $ ls -l /dev/flashlidar

注意:如果没有找到 /dev/flashlidar 口,先确定 /dev 下是否存在名为 ttyUSB 开头的 US
B口,若没有,则是激光雷达的USB口没有连上。

  • 运行地图扫描节点

  • Ctrl + Alt + T 打开终端,运行命令

     $ roslaunch dashgo_nav gmapping_demo.launch
  • 运行成功,如下面显示:
pi@dashgo-d1-web:~/dashgo_ws/src/dashgo/dashgo_nav/launch $ roslaunch dashgo_nav gmapping_demo.launch 
... logging to /home/pi/.ros/log/a05f59f0-a569-11e6-9a1a-b827eb8dfc88/roslaunch-dashgo-d1-web-10624.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://dashgo-d1-web:38957/

SUMMARY
========

CLEAR PARAMETERS
 * /move_base/

PARAMETERS
 * /arduino/Kd: 20
........
[ INFO] [1478578384.240421241]: Using plugin "static_layer"
[ INFO] [1478578384.442934859]: Requesting the map...
[INFO] [WallTime: 1478578384.575114] Attempting to connect to mongodb @ localhost:27017
[ INFO] [1478578384.664973875]: Resizing costmap to 544 X 544 at 0.050000 m/pix
[ INFO] [1478578384.764004366]: Received a 544 X 544 map at 0.050000 m/pix
[ INFO] [1478578384.790346896]: Using plugin "obstacle_layer"
[ INFO] [1478578384.804262619]:     Subscribed to Topics: scan
[ INFO] [1478578384.949661094]: Using plugin "inflation_layer"
[ INFO] [1478578385.456495715]: Loading from pre-hydro parameter style
[ INFO] [1478578385.578284076]: Using plugin "obstacle_layer"
[ INFO] [1478578385.737670722]:     Subscribed to Topics: scan
[ INFO] [1478578385.875052630]: Using plugin "inflation_layer"
[INFO] [WallTime: 1478578386.580523] Attempting to connect to mongodb @ localhost:27017
[ INFO] [1478578386.677315640]: Created local_planner teb_local_planner/TebLocalPlannerROS
[ WARN] [1478578387.057302959]: TebLocalPlannerROS() Param Warning: max_vel_x_backwards <= penalty_epsilon. The resulting bound is negative. Undefined behavior... Change at least one of them!
[ WARN] [1478578387.087761403]: TebLocalPlannerROS() Param Warning: 'alternative_time_cost' is deprecated. It has been replaced by 'selection_alternative_time_cost'.
[ INFO] [1478578387.114672479]: No robot footprint model specified for trajectory optimization. Using point-shaped model.
[ INFO] [1478578387.118526568]: Parallel planning in distinctive topologies disabled.
[ INFO] [1478578387.119119749]: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles.
[ WARN] [1478578387.597289377]: TebLocalPlannerROS() Param Warning: max_vel_x_backwards <= penalty_epsilon. The resulting bound is negative. Undefined behavior... Change at least one of them!
[INFO] [WallTime: 1478578388.584415] Attempting to connect to mongodb @ localhost:27017
[ INFO] [1478578389.330330106]: Recovery behavior will clear layer obstacles
[ INFO] [1478578389.543029629]: Recovery behavior will clear layer obstacles
[ INFO] [1478578389.781773815]: odom received!
  • 若运行过程中,出现红色信息,说明运行出错了,可根据错误提示来寻找原因。

  • 一般原因为下位机arduino连接不上,arduino固件受损,激光雷达连接不上,激光雷达内部出错等等。

  • 运行rviz,查看扫描结果

  • Ctrl + Alt + T 打开新的终端,运行命令

     $ roslaunch turtlebot_rviz_launchers view_navigation.launch
  • 前面launch文件正常启动的情况下,打开的rviz只 D1 控件并没有其他信息显示的情况下,可能是激光雷达没有正常启动。

  • 判断激光雷达是否正常启动,主要看launch文件的启动信息有没有出现 Flash Lidar health status : 0 ,有这行信息则正常。

setting /run_id to a05f59f0-a569-11e6-9a1a-b827eb8dfc88
process[rosout-1]: started with pid [10653]
started core service [/rosout]
process[arduino-2]: started with pid [10671]
process[flashgo-3]: started with pid [10672]
process[robot_state_publisher-4]: started with pid [10673]
process[joint_state_publisher-5]: started with pid [10685]
Flash Lidar health status : 0
process[base_link_to_laser4-6]: started with pid [10707]
process[slam_gmapping-7]: started with pid [10720]
process[move_base-8]: started with pid [10732]
process[world_canvas_server-9]: started with pid [10758]
process[robot_pose_publisher-10]: started with pid [10768]
process[twist_marker_server-11]: started with pid [10780]
process[rosbridge_websocket-12]: started with pid [10799]

注意:在建图前要先对激光雷达 F4 与 D1 的坐标进行对齐,请看 激光雷达F4与D1的坐标校正 这章节。 控制 D1 移动扫描地图

键盘控制

  • 激光雷达 F4 与 D1 的坐标对齐后,Ctrl + Alt + T 打开新的终端,运行命令
     $ rosrun dashgo_bringup teleop_twist_keyboard.py
  • 得到如下内容
Reading from the keyboard  and Publishing to Twist!
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
anything else : stop
  • CTRL-C to quit

  • 控制 D1 移动的按键分布如下:
    前进: i
    后退: ,
    左转: j
    后转: l
    停止: k

注意:键盘控制移动的速度较大,注意人物安全。

手机控制

  • 通过 EAI 团队开发的手机 APP 控制,目前仅支持 Android。

  • 在 APP 启动界面,选择 “WIFI” 便进入到WiFi连接界面,如下图所示:

这里写图片描述

  • 需要输入的 Master IP 是 PC 的 IP 地址。

  • Ubuntu 查看 IP 地址,Ctrl + Alt + T 打开终端,输入 ifconfig ,然后回车

eaibot@eaibot:~$ ifconfig
eth0      Link encap:以太网  硬件地址 44:37:e6:3d:e0:fc  
          inet 地址:172.20.105.24  广播:172.20.105.255  掩码:255.255.255.0   //有线网络的IP地址
          inet6 地址: fe80::4637:e6ff:fe3d:e0fc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:350 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:134 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:27790 (27.7 KB)  发送字节:18843 (18.8 KB)
          中断:17 

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0    //本地的IP地址
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:167 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:167 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1 
          接收字节:12903 (12.9 KB)  发送字节:12903 (12.9 KB)
  • 连接成功后,界面如下:

这里写图片描述

  • 方向的操控,如下图所示:

这里写图片描述

注意:
1、ROS 系统的 IP 必须与手机端的 IP 在同一个网段,即两者要连在同一个路由器上。
2、建议最大线速度为0.2m/s,最大角速度为0.5°/s,扫描出来的地图效果最佳。

  • 扫描完地图后,保存地图

  • Ctrl + Alt + T 打开新的终端,运行下面命令

     $ roscd dashgo_nav/maps

     $ rosrun map_server map_saver -f my_map

     my_map是保存地图的名称,根据实际情况命名。
  • 保存的地图效果如下图:

这里写图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: dashgo d1