运行slam缺少个激光,机缘巧合获得镭神智能赞助的一款产品,在此将使用过程整理记录,也为有这款激光的小伙伴交流学习,当然想入手这款激光的也可以联系我哦(^_^)。2017.09.09 乐
应用环境:
系统:ubuntu16.04
ROS: kinetic
平台:rikirobot 、kobuki
品牌:镭神智能
型号:N301-01B
相关产品介绍
室内实验:
1、驱动安装记录
ROS SDK程序git
note:v1.02版本
驱动官方网站没有放出链接,不过邮件咨询的时候提供了一个1.4版本的使用说明附带linux/ros 驱动。驱动安装其实就是将官方提供的包放到ros工作空间下catkin_make一下,官方提供的测试环境是ubuntu14.04/ros indigo,我的电脑环境没有报错,仅仅有一个警告:
-- Boost version: 1.58.0
CMake Warning at /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:166 (message):
catkin_package() DEPENDS on 'boost' but neither 'boost_INCLUDE_DIRS' nor 'boost_LIBRARIES' is defined.
不过不影响编译。
2、设置记录
官方提供的测试说明基本可以认为是windows环境下的,linux环境下的可以认为没有。不过相对来说也是比较简单的,估计这也是没linux下使用说明的原因。
在驱动放到工作空间下编译完成后先一步设置网络,新建有线链接。
配置有线网络,基本是配置ip地址:电脑:192.168.1.125(激光默认192.168.1.222) 子网掩码:255.255.255.0 网关:192.168.1.0 。如果修改了默认的激光的ip地址,那就对应修改电脑的ip和网关使他们在一个网段下就ok了。
3、台式机连接
配置好网络后通过网线链接激光和电脑,另外需要准备独立供电的电源,看说明好像供电是9v~36v,我采用的常用的12v供电,个人建议还是跟着大众的脚步吧。
链接网络,然后就可以打开ros看下效果了。
roscore
roslaunch lslidar_n301_decoder lslidar_n301_decoder_nodelet.launch
SDK v1.02版本的运行如下命令:
roslaunch lslidar_n301_decoder lslidar_n301.launch
note:如果无法找到首先确保在当前工作空间下,其次是安装驱动后是否进行了重构(rospack profile
)
4、gmapping试运行
openslam_gmapping
slam_gmapping
如果之前通过apt的方式安装过gmapping可能会运行程序挂掉,主要原因是默认分配空间不够导致的.
用双目的时候安装过,所以这个问题遇到了.解决方案:
将gmapping和openslam_gmapping源码下载.
git clone https://github.com/ros-perception/slam_gmapping
git clone https://github.com/ros-perception/openslam_gmapping
修改引起错误的位置:
~/catkin_rikirobot/src/slam_gmapping/openslam_gmapping/scanmatcher/scanmatcher.cpp
->563行
assert(beams<LASER_MAXBEAMS);
这个在官方提供的sdk中为3600比默认值2048大.所以对应的到头文件中将值修改为:4096.
~/catkin_rikirobot/src/slam_gmapping/openslam_gmapping/include/gmapping/scanmatcher/scanmatcher.h
//#define LASER_MAXBEAMS 2048
#define LASER_MAXBEAMS 4096
对源码进行编译:
cd ~/catkin_rikirobot
catkin_make
如果想把他替换之前安装的可执行文件进行如下操作:
cd /opt/ros/kinetic/lib/gmapping
sudo rm slam_gmapping
sudo rm slam_gmapping_replay
拷贝重新编译的可执行文件:
cd ~/catkin_rikirobot/devel/lib/gmapping
sudo cp slam_gmapping /opt/ros/kinetic/lib/gmapping
sudo cp slam_gmapping_replay /opt/ros/kinetic/lib/gmapping
新建gmapping.launch启动文件:
<launch>
<include file="$(find lslidar_n301_decoder)/launch/lslidar_n301.launch"/>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 0 0 0 0 base_link lslidar 100" /> <!--change laser -->
<node pkg="gmapping" type="slam_gmapping" name="simple_gmapping" output="screen"> </node>
</launch>
执行文件launch文件:
roscore
roslaunch rikirobot stm32bringup.launch
roslaunch lslidar_n301_decoder gmapping.launch
rosrun rviz rviz
然后添加map话题就可以看到建的地图了.
4、平台连接
tx2+rikirobt+lslidar:
rikirobot+lslidar:
kuboki+lslidar:
待完成
5、实验效果
自主导航: