Jetson TX2 使用 Rplidar A2 实现 Cartographer

参考:

TX2+rplidar+cartographer

实时 Cartographer 测试 (1) - rplidar

rplidar 跑 cartographer

ROS 下使用 rplidar 运行 google cartographer

Ubuntu版本:16.04 LTS

Jetson TX2 安装 ROS kinetic

TX2 入门教程软件篇 - 安装 ROS kinetic

Jetson TX2 安装 cartographer

google的官方教程:https://google-cartographer-ros.readthedocs.io/en/latest/index.html

安装Rplidar激光雷达驱动

首先必须给Jetson TX2 编译内核,才可读取出雷达,编译方法参考 http://m.blog.csdn.net/gzj2013/article/details/77069803

注意:

1、要选择 CP210x 驱动,而不是例子中的 CH341

2、必须保证Jetson TX2 中有足够的空间(大于 5G)才可正常安装

开始安装雷达驱动

在https://github.com/robopeak/rplidar_ros 下载安装 rplidar 的 ROS 驱动:

1、在 ~/catkin_ws/src下运行:

nvidia@tegra-ubuntu:~$ git clone https://github.com/robopeak/rplidar_ros

2、重新编译,执行以下代码:

catkin_make_isolated --install --use-ninja

3、设置 USB 口的权限:

nvidia@tegra-ubuntu:~$ ls -l /dev |grep ttyUSB

nvidia@tegra-ubuntu:~$ sudo chmod 666 /dev/ttyUSB0

每次插上 rplidar 都要设置一遍 USB 口的权限,可以将权限写在 rules 里(参考这个):
root 权限新建文件/etc/udev/rules.d/70-ttyusb.rules

写入 KERNEL=="ttyUSB[0-9]*", MODE="0666",保存,重新插上设备,在运行一次·ls -l /dev |grep ttyUSB* 查看权限,有两个 rw 就可以了

4、运行

驱动里提供了三个 launch 文件,跑 cartographer 的话用 rplidar.launch 即可

nvidia@tegra-ubuntu:~$ roslaunch rplidar_ros rplidar.launch

运行完可以先关掉

测试 cartographer

运行 cartographer,首先 编辑用于运行 rplidar 的配置文件:

1、 修改revo_lds_.lua:

位于/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files文件夹下,修改了 22 和 23 行。

-- Copyright 2016 The Cartographer Authors
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
 
include "map_builder.lua"
include "trajectory_builder.lua"
 
options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "laser",
  published_frame = "laser",
  odom_frame = "odom",
  provide_odom_frame = true,
  use_odometry = false,
  num_laser_scans = 1,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
}
 
MAP_BUILDER.use_trajectory_builder_2d = true
 
TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.3
TRAJECTORY_BUILDER_2D.max_range = 8.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1
 
POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65
 
return options

2、修改demo_revo_lds.launch :

位于~/catkin_ws/src/cartographer_ros/cartographer_ros/launch文件夹下,注意 23 和 25 行。

主要修改两个地方, 这一句后面的 horizontal_laser_2d改成 scan;最后的 playbag 节点删掉。


 

  
 
  
    
  
 
  
 
  
 

3、重新编译

nvidia@tegra-ubuntu:~$ cd ~/catkin_ws
nvidia@tegra-ubuntu:~/catkin_ws$ catkin_make_isolated --install --use-ninja

4、运行

启动两个终端,分别运行 rplidar 的节点和 cartographer_ros 节点:

第一个终端:
nvidia@tegra-ubuntu:~$ roslaunch rplidar_ros rplidar.launch

第二个终端:
nvidia@tegra-ubuntu:~$ roslaunch cartographer_ros demo_revo_lds.launch

文章在个人博客上地址:点击进入

你可能感兴趣的:(SLAM,ROS,Jetson)