Cartographer的安装与测试

Ros版本:ROS-Kinect

工作目录:~/carto_ws

1.RoboSense 16线雷达驱动安装

安装依赖项

sudo apt-get install libpcap-dev

下载源码到工作目录的src/文件夹下

 cd ~/carto_ws/src

git clone https://github.com/RoboSense-LiDAR/ros_rslidar

修改文件权限

cd ~/carto_ws/src/ros_rslidar/rslidar_drvier

chmod 777 cfg/*

cd ~/carto_ws/src/ros_rslidar/rslidar_pointcloud

chmod 777 cfg/*

源码编译

cd ~/carto_ws

catkin_make

设置电脑的静态ip地址

默认 RS-LiDAR-16 固件情况下,配置电脑系统的静态 IP 地址为“192.168.1.102”,子网掩码为“255.255.255.0”,网关不需要配置。配置完成后,可以通过 ifconfig 命令查看静态 IP 是否生效。
我的方法很简单,直接显示器右上角选择有线连接,设置IPV4网络,如下图:

 

连接雷达电源和网线,连接网络

cd carto_ws

source devel/setup.bash

roslaunch rslidar_pointcloud rs_lidar_16.launch

可以在RVIZ中看到点云,注意要设置全局坐标系为rslidar。

2.Cartographer的安装

cartographer的安装主要是ceres、prtobuf和cartographer的安装,cartographer_ros是ROS的功能包,调用cartographer算法。

安装依赖: 

sudo apt-get update

sudo apt-get install -y python-wstool python-rosdep ninja-build

安装Ceres solver

cd  ~/carto_ws/document

git clone https://github.com/BlueWhaleRobot/ceres-solver.git

cd ceres-solver

mkdir build

cd build

cmake ..

make

sudo make install

安装Prtobuf 3.0
 

cd  ~/carto_ws/document

git clone https://github.com/google/protobuf.git

cd protobuf

git checkout v3.6.1

mkdir build

cd build

cmake  -DCMAKE_POSITION_INDEPENDENT_CODE=ON  -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF ../cmake

make

sudo make install

安装Cartographer

cd  ~/carto_ws/document

git clone https://github.com/BlueWhaleRobot/cartographer.git

cd cartographer

mkdir build

cd build

cmake ..

make

sudo make install

安装cartographer_ros

cd ~/carto_ws/src   #请修改路径到自己的ROS catkin工作空间
git clone https://github.com/BlueWhaleRobot/cartographer_ros.git
cd ..
catkin_make_isolated --install --use-ninja

测试

下载文件:https://www.bwbot.org/s/vQ2D9Z

然后运行。根据个人平台计算能力不同,完整运行时间一般为半个小时到1个小时之间

source devel_ioslated/setup.bash
roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag

##修改到自己保存的路径

提取建立的地图,结束测试

上面步骤会生成一个pbstream文件,用cartographer_ assets_writer可以转换成ROS使用的栅格地图。

roslaunch cartographer_ros assets_writer_ros_map.launch bag_filenames:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag pose_graph_filename:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag.pbstream

 

配置文件结构说明

工作目录为carto_ws,src同级目录除了编译产生的,其余都是安装依赖留下的文件夹。

Cartographer配置文件主要存在src/cartographer_ros/cartographer_ros下的urdf文件夹的myself_robot.urdf、configuration文件夹下的myself_rslidar_2(3)d.lua,myself_backpack_2(3)d_localization.lua以及rslidar_2(3)d.rviz、demo_2d.rviz配置文件、launch文件夹下的myself_rslidar_2(3)d.launch、myself_backpack_2(3)d_localization.launch。这里定位由于和后面导航rviz显示冲突,注释了rviz,纯定位时需要取消注释,显示调用rviz。

在3D建图还需要后面进行离线处理,需要assets_writer_myself_3d.launch,其中相关的配置文件为 assets_writer_myself_3d.lua。

利用bag包进行离线3D SLAM建图可以使用offline_myself_rslidar_3d.launch

配置文件详解

URDF文件的配置(这里2D和3D都是使用的同一个urdf):

<?xml version="1.0"?>
<robot name="myfirstrobot">
<!--设置颜色-->

  <material name="orange">

    <color rgba="1.0 0.5 0.2 1"/>

  </material>

  <material name="gray">

    <color rgba="0.2 0.2 0.2 1"/>

  </material>

 <!--设置imu link,长方体,长宽高为0.06 0.04 0.02,这里的单位为米m-->

  <link name="imu">

    <visual>

      <origin xyz="0.0 0.0 0.0"/>

      <geometry>

        <box size="0.06 0.04 0.02"/>

      </geometry>

      <material name="orange"/>

    </visual>

  </link>

 
  <!--设置lidar link,圆柱,半径0.05,高为0.07,这里的单位为米m-->

  <link name="laser">

    <visual>

      <origin xyz="0.0 0.0 0.0"/>

      <geometry>

        <cylinder length="0.07" radius="0.05"/>

      </geometry>

      <material name="gray"/>

    </visual>

  </link>

 

 <!--设置base link,box 0.5x0.5x0.5,可根据实际机器人大小设置-->

  <link name="base_link">

   <visual>

      <origin xyz="0 0 0"/>

      <geometry>

        <box size="0.5 0.5 0.5"/>

      </geometry>

      <material name="Cyan"/>

<color rgba="0 0.4 0.2 0.6"/>

    </visual>

  </link>

 
 <!--设置imu和基座base的关系,imu和base没有偏移和旋转,默认为同一个坐标系,根据实际情况修改,注意子零件在父零件的坐标中的位姿表示,(右手坐标系,车头方向为x正向,车体左侧为y正向,天空为z正向)-->

  <joint name="imu2base" type="fixed">

    <parent link="base_link"/>

    <child link="imu"/>

    <origin xyz="0 0 0" rpy="0 0 0"/>

  </joint>

 

  <!--设置lidar和基座base的关系,在base的x方向上偏移0.25,z方向偏移0.5-->

  <joint name="laser2base" type="fixed">

    <parent link="base_link"/>

    <child link="laser"/>

    <origin xyz="0.25 0.0 0.5" rpy="0. 0. 0."/>

  </joint>
  </robot>

模型图

本文参照合工大实验室的帖子编写,在调试过程中发现了帖子代码有几处小错误,故修改记录。参考链接

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值