@jaccica 建图移动过程要保持平稳
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
xiaoqiang 发布的帖子
-
小强ROS机器人教程(28)___使用Intel RealSense D400系列深度摄像头进行自主移动避障
1.驱动测试
连接好RealSense摄像头后,运行下述命令可以测试sdk有没有安装成功
#sdk的安装教程 https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installing-the-packages rs-capture
正常的话可以看到类似下图的图像
关闭上述命令,继续测试ros驱动#ros驱动的安装教程 https://gitee.com/bluewhalerobot/realsense roslaunch realsense2_camera rs_camera.launch
如果正常,在rviz里面可以订阅显示深度和color图像话题。
2.关闭步骤1中命令,开始自主移动避障测试
intel RealsSense和kinect是兼容的,使用它来自主移动避障的教程也和kinect一样,区别是教程2.b、2.c步骤需要选择realsense。
roslaunch realsense2_camera rs_camera_xiaoqiang.launch
kinect避障教程:
https://community.bwbot.org/topic/115/小强ros机器人教程-10-___使用kinect进行自主移动避障 -
intel realsense D435 ROS驱动启动提示UVC device is already streaming错误的解决办法
如果topic数据正常,则可以忽略这个错误;如果图像话题不正常,主要问题就是sdk和固件的版本需要一致
1.librealsense的安装推荐用deb安装方式,简单可靠https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installing-the-packages
2.D435的固件版本更新,运行realsense-viewer会自动提示你当前固件版本问题。这里可以下载安装最新的固件https://downloadcenter.intel.com/download/28237/Latest-Firmware-for-Intel-RealSense-D400-Product-Family?product=128255 -
RE: 自定义消息在RVIZ中可视化如何实现???
@道灼 frame_id 和time 一般都需要的,可以写一个rviz plugin,参考这篇教程http://docs.ros.org/kinetic/api/rviz_plugin_tutorials/html/display_plugin_tutorial.html
-
RE: 原装和国产ps3手柄ros驱动程序
@xiangxiang123 多次短按试试,第1步是绑定(只用绑定一次),第2步才是配对(每次重启机器后都要操作一次)。第1步绑定成功后,断开usb和手柄连接,重启系统,然后直接进行第2步操作
-
浮点数计算误差对平均值计算的影响
计算当前时间前n个数的滑动平均值时,有一种常用数值加速办法:构造一个n*1大小的先进、先出的堆栈队列数据结构,然后记录这n个数的和sum,每次只需要把sum减去最老的值再加上最新的值就可以得到最新的和值,这样相当于把n次求和变成了2次加减运算,可以加速计算。
但是,如果因为数据异常,某次新加入的值很大,求和的时候,就会引入截断误差,从而导致后续的sum值一致存在一个偏差(即当队列里面值都更新为0时,sum值依然为一个不可忽略的的小量)。
解决办法是把异常值过滤掉,或者改为直接求和计算。 -
FreeRTOS系统的任务调度时间精度
FreeRTOS系统进行任务调度的时间精度只能保证小于调度周期,调度周期一般是毫秒级。因此在FreeRTOS中执行定时调度任务时,如果要获取这个任务两次调度的精确间隔时间,是不能只由xTaskGetTickCount()系统函数返回值计算得到的(这是一个毫秒级的整数),需要结合stm32 的systemtick定时器得到微秒级精度间隔时间。
-
RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理
@leslie 仔细看上面教程,你发的命令不是保存充电桩命令,同时浏览前人回复的帖子,检查里程计设置
-
RE: ROS中求解二次规划问题
@rockyren 非线性优化求解(包括二次规划类),可以用google的Ceres 库,http://ceres-solver.org/nnls_tutorial.html
-
RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理
@kevin 上面launch没有remap那个里程计话题名字,{remap from=“/odom” to=“/xqserial_server/Odom” }改成{remap from=“/odom” to=“你的里程计话题名字” }
-
RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理
@kevin launch里面的里程计话题有没有改成自己小车的里程计名字,还有slamdb文件夹创建一下,发布dockposition_save命令后看一下里面是否有一个txt文件dock_station.txt。
mkdir ~/slamdb
dock_station.txt文件里面第三行,存储了当前充电桩位置,这行三个数据依次为x、y、角度。
-
小强底盘驱动xqserial_server发布的IMU数据简介
最新版本的xqserial_server驱动包增加了IMU话题的发布功能,现在小强上电开机后,将以50hz的频率发布IMU话题数据。
话题名字是:/xqserial_server/IMU
话题所在frame_id: imu
imu到base_link的tf关系的设置参数在xqserial.launch文件里面
1.驱动包更新
roscd xqserial_server git stash git pull cd .. cd .. catkin_make
2.重启startup任务,现在可以使用/xqserial_server/IMU话题了
可以使用rostopic工具查看话题数据
还可以使用python脚本可视化话题数据rosrun xqserial_server visualization.py
-
小强ROS机器人教程(26)___使用奥比中光astrapro进行自主移动避障
奥比中光astrapro和kinect是兼容的,使用它来自主移动避障的教程也和kinect一样,区别是教程2.b、2.c步骤需要选择astrapro。
roslaunch astra_launch astrapro.launch
kinect避障教程:
https://community.bwbot.org/topic/115/小强ros机器人教程-10-___使用kinect进行自主移动避障 -
loam_velodyne使用速腾聚创16线激光雷达建图和计算激光雷达里程计
loam_velodyne 是业界比较有名的一个3d 激光雷达slam包,它不以常规的3d icp策略而以3d雷达点云特征点为主要匹配方式,结合IMU实现实时地计算高精度的6自由度激光雷达里程计,在此基础上再结合3d icp得到高精度地图点云数据。
1. 数据包准备
loam_velodyne包原始作者是针对vlp-16激光雷达设置的,我们测试发现它对其他平台的IMU数据兼容性不好,在下文的建图过程,我们只使用速腾聚创3d激光雷达输出的三维点云数据进行测试,不使用小强开发平台的IMU。
测试结果发现因为没有IMU,loam_velodyne对剧烈晃动、快速转向适应性差,为了得到好的结果,需要保证运动的平稳、匀速。同时雷达输出点云的速率提升到20HZ后,slam效果也有提高。20hz的设置需要使用windows配置软件设置。rosbag数据包的详细制作过程,请参考这篇教程: https://community.bwbot.org/topic/522/使用rosbag录制和回放3d激光雷达数据和小强ros开发平台的里程计imu数据
下文教程将以蓝鲸机器人录制的bag包为例,演示如何使用loam_velodyne包得到激光雷达里程计。bag包百度云下载地址2. 配置安装loam_velodyne
#需要安装到ros工作空间,以小强主机为例 cd ~/Documents/ros/src git clone https://github.com/BluewhaleRobot/loam_velodyne.git cd .. catkin_make
3. 启动loam_velodyne 开始建图
#先关闭小车的ros启动节点 #在小车主机上新开一个命令终端 sudo service startup stop roscore
#启动loam节点 #在小车主机上新开一个命令终端 roslaunch loam_velodyne xiaoqiang_lungu_off.launch
#播放bag数据 #在小车主机上新开一个命令终端 rosbag play -s 200 2018-08-11-13-20-34.bag #从200秒开始播放数据,这段数据比较好
-
谷歌cartographer使用速腾聚创3d激光雷达转二维数据进行2d建图
谷歌cartographer_ros请参考这篇安装教程:http://community.bwbot.org/topic/136/google激光雷达slam算法cartographer的安装及bag包demo测试
1. 数据包准备
本文建图将采用普通的2d 雷达数据,结合IMU和里程计数据进行2d建图。2d 雷达数据由速腾聚创3d激光雷达转换得到,其他数据由小强机器人底盘得到。
rosbag数据包的详细制作过程,请参考这篇教程: https://community.bwbot.org/topic/522/使用rosbag录制和回放3d激光雷达数据和小强ros开发平台的里程计imu数据
下文教程将以蓝鲸机器人录制的bag包为例,演示如何建立2d地图。bag包百度云下载地址2. 配置cartographer_ros
蓝鲸机器人github上的cartographer_ros已经配置好了所有文件,对于加装速腾聚创小强xq5开发平台采集的数据包,cartographer_ros需要使用的是下列文件,简略的说明在下文。cartographer_ros的详细文档可以参考官方wiki
cartographer_ros/launch/demo_xiaoqiang_rslidar_scan.launch #建图时启动的launch文件,负责启动rviz,加载cartographer_ros主要的启动节点和参数文件,话题数据名字的remap也在这个文件设定。 cartographer_ros/urdf/rslidar_2d.urd #模型文件,用来发布3d激光雷达、小车里程计、IMU、小车本体之间的tf关系 cartographer_ros/configuration_files/xiaoqiang_rslidar_scan.lua #cartographer_ros算法参数配置文件,优化建图效果需要调整的参数就是这个文件。
ros中坐标系的设置,请参考这篇教程,小强xq5平台的base_link原点设置在两个主动轮轴中间位置。
# cartographer_ros/configuration_files/xiaoqiang_rslidar_scan.lua文件里面设置是否使用imu、odom数据的参数是这两个: use_odometry = true #true使能里程计,false禁用里程计 TRAJECTORY_BUILDER_2D.use_imu_data = false #true使能IMU,false禁用IMU
# cartographer_ros)/urdf/rslidar_2d.urd文件需要调整的参数是3d雷达相对base_link的安装位置,laserbase_link等价于base_link <joint name="horizontal_laser_link_joint" type="fixed"> <parent link="laserbase_link" /> <child link="rslidar" /> <origin xyz="0 0 0.4" rpy="0 0 0" /> </joint>
3. 启动cartographer_ros,播放rosbag数据包,开始建图
#先关闭小车的ros启动节点 #在小车主机上新开一个命令终端 sudo service startup stop roscore
#启动cartographer #在小车主机上新开一个命令终端 roslaunch cartographer_ros demo_xiaoqiang_rslidar_scan.launch
#播放bag数据 #在小车主机上新开一个命令终端 rosbag play --clock 2018-08-11-13-20-34.bag
4. bag播放完成后,用map_server保存地图
rosrun map_server map_saver --occ 51 --free 49 -f work0
保存成功后,会在home目录里面生成work0.yaml work0.pgm两个地图文件,这两个文件可以用来amcl导航。
-
谷歌cartographer直接使用速腾聚创3d激光雷达三维数据进行2d建图
谷歌cartographer_ros请参考这篇安装教程
1. 数据包准备
使用激光雷达进行2d建图,一般是使用2d雷达数据,3d雷达需要先转换成2d。cartographer_ros的2d建图直接支持三维点云输入,因此可以不需要转换。本文建图将使用里程计和三维点云数据。
rosbag数据包的详细制作过程,请参考这篇教程: https://community.bwbot.org/topic/522/使用rosbag录制和回放3d激光雷达数据和小强ros开发平台的里程计imu数据
下文教程将以蓝鲸机器人录制的bag包为例,演示如何建立2d地图。bag包百度云下载地址2. 配置cartographer_ros
蓝鲸机器人github上的cartographer_ros已经配置好了所有文件,对于加装速腾聚创小强xq5开发平台采集的数据包,cartographer_ros需要使用的是下列文件,简略的说明在下文。cartographer_ros的详细文档可以参考官方wiki
cartographer_ros/launch/demo_xiaoqiang_rslidar_2d.launch #建图时启动的launch文件,负责启动rviz,加载cartographer_ros主要的启动节点和参数文件,话题数据名字的remap也在这个文件设定。 cartographer_ros/urdf/rslidar_2d.urd #模型文件,用来发布3d激光雷达、小车里程计、IMU、小车本体之间的tf关系 cartographer_ros/configuration_files/xiaoqiang_rslidar_2d.lua #cartographer_ros算法参数配置文件,优化建图效果需要调整的参数就是这个文件。
ros中坐标系的设置,请参考这篇教程,小强xq5平台的base_link原点设置在两个主动轮轴中间位置。
# cartographer_ros/configuration_files/xiaoqiang_rslidar_2d.lua文件里面设置是否使用imu、odom数据的参数是这两个: use_odometry = true #true使能里程计,false禁用里程计 TRAJECTORY_BUILDER_2D.use_imu_data = false #true使能里程计,false禁用里程计
# cartographer_ros)/urdf/rslidar_2d.urd文件需要调整的参数是3d雷达相对base_link的安装位置,laserbase_link等价于base_link <joint name="horizontal_laser_link_joint" type="fixed"> <parent link="laserbase_link" /> <child link="rslidar" /> <origin xyz="0 0 0.4" rpy="0 0 0" /> </joint>
3. 启动cartographer_ros,播放rosbag数据包,开始建图
#先关闭小车的ros启动节点 #在小车主机上新开一个命令终端 sudo service startup stop roscore
#启动cartographer #在小车主机上新开一个命令终端 roslaunch cartographer_ros demo_xiaoqiang_rslidar_2d.launch
#播放bag数据 #在小车主机上新开一个命令终端 rosbag play --clock 2018-08-11-13-20-34.bag
4. bag播放完成后,用map_server保存地图
rosrun map_server map_saver --occ 51 --free 49 -f work0
保存成功后,会在home目录里面生成work0.yaml work0.pgm两个地图文件,这两个文件可以用来amcl导航。
-
谷歌cartographer使用速腾聚创3d激光雷达数据进行三维建图
谷歌cartographer_ros请参考这篇安装教程:http://community.bwbot.org/topic/136/google激光雷达slam算法cartographer的安装及bag包demo测试。2020年之后购买的小强用户可以跳过安装步骤,车载主机已经配置好。
1. 数据包准备
使用cartographer_ros进行3d建图,需要三维点云数据和IMU数据,三维点云由速腾聚创3d激光雷达提供,IMU数据则由小强xq5开发平台提供。
rosbag数据包的详细制作过程,请参考这篇教程: https://community.bwbot.org/topic/522/使用rosbag录制和回放3d激光雷达数据和小强ros开发平台的里程计imu数据
下文教程将以蓝鲸机器人录制的bag包为例,演示如何建立三维地图。bag包百度云下载地址2. 配置cartographer_ros
蓝鲸机器人github上的cartographer_ros已经配置好了所有文件,对于加装速腾聚创小强xq5开发平台采集的数据包,cartographer_ros需要使用的是下列文件,简略的说明在下文。cartographer_ros的详细文档可以参考官方wiki
cartographer_ros/launch/demo_xiaoqiang_3d.launch #建图时启动的launch文件,负责启动xiaoqiang_3d.launch文件和rviz cartographer_ros/launch/xiaoqiang_3d.launch #用来加载cartographer_ros主要的启动节点和参数文件,话题数据名字的remap也在这个文件设定。 cartographer_ros/launch/assets_writer_xiaoqiang_3d.launch #用来将demo_xiaoqiang_3d.launch输出的pbstreamfile转换成ply点云数据 cartographer_ros/urdf/rslidar_2d.urd #模型文件,用来发布3d激光雷达、小车里程计、IMU、小车本体之间的tf关系 cartographer_ros/configuration_files/xiaoqiang_3d.lua #cartographer_ros算法参数配置文件,优化建图效果需要调整的参数就是这个文件。
ros中坐标系的设置,请参考这篇教程,小强xq5平台的base_link原点设置在两个主动轮轴中间位置。
# cartographer_ros)/urdf/rslidar_2d.urd文件需要调整的参数是3d雷达相对base_link的安装位置,laserbase_link等价于base_link <joint name="horizontal_laser_link_joint" type="fixed"> <parent link="laserbase_link" /> <child link="rslidar" /> <origin xyz="0 0 0.4" rpy="0 0 0" /> </joint> #小强用户速腾聚创雷达按上面设置即可 #小强用户北科天绘雷达需要把角度反转180度 <joint name="horizontal_laser_link_joint" type="fixed"> <parent link="laserbase_link" /> <child link="rslidar" /> <origin xyz="0 0 0.4" rpy="0 0 3.1415926" /> </joint>
3. 启动cartographer_ros,播放rosbag数据包,开始建图
#先关闭小车的ros启动节点 #在小车主机上新开一个命令终端 sudo service startup stop roscore
#启动cartographer #在小车主机上新开一个命令终端 roslaunch cartographer_ros demo_xiaoqiang_3d.launch
#播放bag数据 #在小车主机上新开一个命令终端 rosbag play --clock 2018-08-11-13-20-34.bag
4. bag播放完成后,使用rosservice保存cartographer_ros建图结果,用于后续地图输出。
#打开ros service调用工具 #在小车主机上新开一个命令终端 rosrun rqt_service_caller rqt_service_caller #先调用/finish_trajectory服务结束建图 #接着调用/write_state服务,将cartographer_ros建图结果保存为pbstream文件,test_3d.pbfile。保存成功后,文件可以在~/.ros/目录找到
关闭cartographer_ros,建图部分完成,下文继续处理pbstream文件得到点云地图文件5.用assets_writer_xiaoqiang_3d.launch将pbstream文件转换成ply点云文件
#在小车主机上新开一个命令终端,下面是一条命令,假设bag文件和pbstream文件保存在了home目录 roslaunch cartographer_ros assets_writer_xiaoqiang_3d.launch bag_filenames:=${HOME}/2018-08-11-13-20-34.bag pose_graph_filename:=${HOME}/test_3d.pbfile
等待一段时间,处理完成后命令会自动退出,此时在bag文件旁边会生成一个.bag_points.ply后缀文件,这个就是点云文件。
6.使用pcl工具将ply文件转换成pcd文件
#在小车主机上新开一个命令终端,假设ply文件在home目录 pcl_ply2pcd 2018-08-11-13-20-34.bag_points.ply test_3d.pcd
转换成功后就可以得到tes_3d.pcd文件,可以直接用pcl可视化工具查看
pcl_viewer test_3d.pcd