导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    1. 主页
    2. xiaoqiang
    3. 帖子
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision
    • 资料
    • 关注 0
    • 粉丝 2
    • 主题 88
    • 帖子 312
    • 最佳 5
    • 群组 1

    xiaoqiang 发布的帖子

    • 谷歌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
      

      0_1534137389985_scan_1.png
      0_1534137402544_Screenshot from 2018-08-13 13-14-09.png
      0_1534137413409_Screenshot from 2018-08-13 13-16-04.png
      0_1534137441815_Screenshot from 2018-08-11 20-08-13.png

      4. bag播放完成后,用map_server保存地图

      rosrun map_server map_saver --occ 51 --free 49 -f work0
      

      保存成功后,会在home目录里面生成work0.yaml work0.pgm两个地图文件,这两个文件可以用来amcl导航。

      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 谷歌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
      

      0_1534131252839_2d_1.png
      0_1534131282229_Screenshot from 2018-08-13 11-32-47.png
      0_1534131505449_Screenshot from 2018-08-13 11-38-14.png

      4. bag播放完成后,用map_server保存地图

      rosrun map_server map_saver --occ 51 --free 49 -f work0
      

      保存成功后,会在home目录里面生成work0.yaml work0.pgm两个地图文件,这两个文件可以用来amcl导航。

      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 谷歌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
      

      0_1534126256505_Screenshot from 2018-08-12 18-20-35.png
      0_1534129179226_Screenshot from 2018-08-12 21-55-29.png

      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/目录找到
      

      0_1534127015499_Screenshot from 2018-08-12 20-42-30.png
      0_1534127029035_Screenshot from 2018-08-12 20-42-57.png
      关闭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后缀文件,这个就是点云文件。
      0_1534127988119_2018-08-11-13-20-34.bag_xray_xy_all.png

      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
      

      0_1534127875497_3d_1.png

      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 使用rosbag录制和回放3d激光雷达数据和小强ROS开发平台的里程计IMU数据

      用激光雷达进行大范围建图时,为了方便调整建图算法的参数,可以先录制数据包,然后离线回放数据包方式建图。安装有速腾聚创3d激光雷达的小强xq5开发平台,能同时输出3d雷达点云、2d雷达点云、IMU、里程计、图像等数据,结合小车主机配置的高速、高容量固态硬盘,可以录制高质量的数据包,满足各种场景的3d、2d建图。

      1.安装无线路由,架设随车wifi网络

      小车底盘的“kinect供电”dc头,是通用的直流12v输出电源,可以用来给常用的9V、12V无线路由供电。在小车上固定一个无线路由,我们就可以架设一个随车移动的wifi网络。利用这个wifi网络,我们可以远程控制录制过程和遥控小车移动。

      2.在windows笔记本上安装小强开发平台的《伽利略导航客户端安装程序》和ssh客户端

      伽利略导航客户端用来方便的遥控小强开发平台,ssh客户端则用于ssh登录小车主机,ssh客户端可以用putty。

      3.启动3d激光雷达的ros驱动和pointcloud_to_laserscan包,2020年之后购买的小强设备不需要自己启动请跳过本步骤。

      使用wifi网络,在windows笔记本电脑上ssh登录小车主机。小车的IMU、里程计、图像等数据默认是开机自动启动的。

      #新开一个ssh连接启动ros驱动
      ssh xiaoqiang@192.168.x.x #小车密码为xiaoqiang,请将192.168.x,x换成实际的ip地址
      #如果是小强xq5轮毂电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_lungu.launch
      #如果是小强xq4-pro普通电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_pro.launch
      
      #如果是北科天绘3d激光雷达,请启动下面这个launch文件
      roslaunch rfans_driver xiaoqiang_lungu.launch
      
      #新开一个ssh连接启动pointcloud_to_laserscan包
      ssh xiaoqiang@192.168.x.x #小车密码为xiaoqiang,请将192.168.x,x换成实际的ip地址
      roslaunch pointcloud_to_laserscan xiaoqiang_rslidar.launch
      

      4.开始录制数据

      #新开一个ssh连接启动rosbag录制线程
      ssh xiaoqiang@192.168.x.x #小车密码为xiaoqiang,请将192.168.x,x换成实际的ip地址
      rosbag record /rslidar/scan /rslidar_points /xqserial_server/IMU /xqserial_server/Odom 
      
      rosbag的使用方法,[请参考wiki](http://wiki.ros.org/rosbag/Commandline)
      /rslidar/scan 对应雷达的2d数据
      /rslidar_points 对应雷达的3d数据
      /xqserial_server/IMU 对应小车的IMU数据
      /xqserial_server/Odom 小车的底盘里程计
      

      5.使用windows伽利略导航客户端,遥控小车对待建图场景进行扫描。完成后,手动关闭rosbag录制线程

      小车的遥控移动轨迹,最好要有多个闭合回路,因为现在的激光雷达slam算法通常都可以使用回环检测技术进一步消除误差。
      ctrl+c关闭rosbag录制线程后,在小车home目录会自动生成一个2018-xxx-xxx.bag文件,这个文件就是录制的数据包。
      0_1534121752218_rosbag.png

      6.用rosbag回放录制的数据包

      #先关闭小车上启动的所有的ros驱动节点,因为回放数据包发布的传感器数据会和小车当前数据冲突,因此需要关闭现有的ros驱动节点
      #在小车主机上新开一个命令终端
      sudo service startup stop
      roscore
      
      #用rosbag回放数据包
      #在小车主机上新开一个命令终端
      sudo service startup stop
      rosbag play   2018-08-11-13-20-34.bag #请将 2018-08-11-13-20-34.bag替换成实际bag包名字
      

      一切正常的话,数据包里录制的话题数据就已经在ros中发布了,可以使用rostopic工具查看,也可以用rviz订阅。
      还可以使用rqt_bag可视化工具打开bag数据包,rqt_bag可以方便的浏览、可视化bag包内容。

      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 使用pointcloud_to_laserscan包将速腾聚创3d激光雷达转换成高质量2d激光雷达

      将3d激光雷达转换成2d雷达,有两种方式:一种是只使用3d雷达中的一条扫描线,另一种是将多条扫描线合成一条2d雷达扫描线。使用pointcloud_to_laserscan包可以很方便地实现第二种办法,第二种方法因为使用了多条扫描线,因此可以输出更高质量的2d雷达数据。
      下文将演示如何将速腾聚创激光雷达rslidar-16的三维点云数据转换成平面的ros laserscan话题。

      1.安装pointcloud_to_laserscan包

      #需要安装到ros工作空间,以小强主机为例
      cd ~/Documents/ros/src
      git clone https://github.com/BluewhaleRobot/pointcloud_to_laserscan.git
      cd  ..
      catkin_make
      

      2.启动ros_rslidiar雷达驱动包和pointcloud_to_laserscan节点

      雷达驱动发布三维点云数据/rsldiar_points, pointcloud_to_laserscan节点订阅后将其转换成laserscan话题/rslidar/scan,两者的frame_id都是“rsldiar”

      #新开一个终端,启动3d雷达驱动
      #如果是小强xq5轮毂电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_lungu.launch
      #如果是小强xq4-pro普通电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_pro.launch
      
      #新开一个终端,启动pointcloud_to_laserscan节点
      roslaunch pointcloud_to_laserscan xiaoqiang_rslidar.launch
      

      正常的话,现在就可以获取10hz的laserscan类型话题数据了
      275e1b43-a092-48f6-a887-93430c335555-image.png

      4.在rviz中查看2d雷达数据

      roscd  pointcloud_to_laserscan/rviz/
      rviz -d  rsldiar.rviz
      
      #图中白线就是转换输出的2d雷达数据
      

      93f0c804-7960-4e14-a55e-03e682344b9e-image.png

      5.pointcloud_to_laserscan 中xiaoqiang_rslidar.launch文件参数简介

      pointcloud_to_laserscan假定输入的点云数据坐标系是这样分布的:前进方向为x,重力反方向是z轴,左边是y轴的右手系

      min_height 、max_height #这两个参数用来指定这段z轴高度范围内的输入点云将参与转换,范围外的不参与
      angle_min、angle_max #这两个参数用来指定这段yaw角度范围内的输入点云将参与转换,范围外的不参与
      angle_increment #输出的2d雷达数据的角分辨率,即相邻扫描点的角度增量
      scan_time #扫描时间,即话题的发布周期
      range_min、range_max #这两个参数用来指定输出数据的有效距离,即2d雷达的有效测量范围
      
      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 速腾聚创16线激光雷达rslidar-16的ros驱动安装与rviz点云显示

      速腾聚创16线激光雷达rslidar-16的供电是直流12v 3A,通信接口是rs485网络接口。小强ros开发平台用户可以用底盘dc电源头供电,主机的网口也可以直接连接雷达。下面介绍它的ros驱动安装和测试教程,如果是和小强平台一起购买的雷达,小强主机出厂时已经配置好驱动,请直接跳过安装部分。

      1.在windows平台设置雷达网络接口参数

      rslidar-16雷达的网络接口是静态ip分配方式,且需要用官方配置软件编辑它的固件才能设置网络参数。
      使用速腾聚创官网提供的RSView-1.4.3软件,根据《RS-Lidar-16用户手册v3.7.pdf》手册设置雷达和主机的ip地址。因为主机往往还需要连接其他网络,因此最好按照下图设置成169.254.x.x网段,这个网段ubuntu默认为本地网络,不会干扰其它网络的运行。
      0_1534089165715_3d雷达ip设置.PNG

      它的ros驱动也需要指定ip地址参数,为了后续教程的方便,请将ip地址按照上图的地址设成一模一样
      

      2.根据步骤1中的ip地址设置ros主机的有线网络

      0_1534089799119_网络.png

      3.安装ros驱包ros_rslidar

      #ros_rslidar需要安装到ros工作空间,以小强主机为例
      cd ~/Documents/ros/src
      git clone https://gitee.com/BluewhaleRobot/ros_rslidar_robosense.git
      cd  ..
      catkin_make
      

      4.将雷达接入电源,同时用网线连接ros主机,启动ros驱动launch文件

      #下面aunch文件里面的ip地址可以根据实际设置,进行修改
      #如果是小强xq5轮毂电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_lungu.launch
      #如果是小强xq4-pro普通电机版本,请启动这个launch文件
      roslaunch rslidar_pointcloud xiaoqiang_pro.launch
      #启动成功后,驱动节点默认会发布10hz的点云话题//rslidar_points,这个话题的frame_id是rslidar,上面的launch文件也发布了base_link到rslidar的tf关系,请根据实际安装参数进行调整。
      

      0_1534090546709_驱动1.png

      6.在rviz中显示发布的点云数据

      roscd rslidar_pointcloud/rviz_cfg/
      rviz -d rslidar.rviz
      

      0_1534090874379_Screenshot from 2018-08-08 10-24-59.png
      0_1534090956766_Screenshot from 2018-08-08 09-51-32.png

      发布在 激光雷达
      xiaoqiang
      xiaoqiang
    • 给usb 摄像头创建udev规则添加symlink后,使用symlink名字出现 inapproriate ioctl for device 错误

      可能是udev规则设置错了,需要在SUBSYSTEM=="video4linux"层链接,在上面一层相当于没有加载v4L驱动,会引发上面的错误

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 小强机器人windows的原理实现

      @ttxs20180101 通过sftp从slamdb拷贝的

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 小强机器人windows的原理实现

      没有使用rosserial,直接使用udp进行通信,包的协议是自己定义的。

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 局部路径规划teb_local_planner的使用问题

      http://wiki.ros.org/teb_local_planner/Tutorials 这里有详细的官方教程。崩溃的问题用gdb调试看一下是在源代码哪里崩溃的,gdb调试参考http://community.bwbot.org/topic/138/%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%E5%B4%A9%E6%BA%83%E7%9A%84%E7%A8%8B%E5%BA%8F

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理

      点击此处购买自动充电模块套件

      1.jpg
      尺寸图:
      (尾部两个4mm通孔用于固定小车底板尾部,5.5mmDC头接车载电池)
      2.jpg
      图形1.png

      自动充电模块串口通信协议v1.2.pdf,2020年新版

      自动充电模块串口通信协议V1.0.pdf,2020年之前老版本

      自动充电串口质检工具.exe

      ROS驱动包

      【使用与实现原理】

      2018年12月之后购买的用户,充电模块全部升级到了2代,2代相比一代使用超声波替换了碰撞开关,减少了模块机械损坏机率。2代支持同时测量电池电压和充电输入电压,1代只支持测量充电电压。电压测量值以ros话题形式发布,具体请看驱动包readme文件。

      1. 将自动充电模块安装在小车尾部,把充电桩固定好,接好电源。小车充电过程会接触充电桩,因此充电桩需要固定不能左右、前后移动,最好是靠墙放置。充电桩前面需要至少预留1米乘以1.5米的自由活动空间。

      0_1533288521912_充电桩放置示意图.png

      2. 在主机ros catkin工作空间中下载安装自动充电模块的ros驱动包

      如果是已经配置好的小强用户,可以直接跳过本步骤。

      #假设catkin工作空间在~/Documents/ros
      cd  ~/Documents/ros
      cd src/
      git clone http://git.bwbot.org/publish/bw_auto_dock.git
      #切换到对应分支,1代切换到master,2代切换到version2分支,如果ros版本是melodic以上版本用noetic-version2分支
      git checkout noetic-version2 #语法“git checkout 分支名字”
      cd ..
      catkin_make  
      
      

      3.将模块通过usb转串口模块接入主机usb,添加udev规制,将串口号映射为/dev/ttyUSB004,同时根据插入的usb端口号进行端口绑定。参考:这里

      如果是已经配置好的小强用户,可以直接跳过本步骤。

      #先安装串口设置包
      sudo apt-get install setserial
      #将当前计算机用户名添加进dailout用户组,以xiaoqiang为例
      sudo adduser xiaoqiang dialout
      
      #查看串口所在usb端口,即下条命令输出结果中/ttyUSBXXX字符前面的数字例如2-2:1.0,/ttyUSBXXX需要替换成实际端口号
      udevadm info --name=/dev/ttyUSBXXX --attribute-walk
      
      #根据这个端口号和映射信息/dev/ttyUSB004建立udev规则文件/etc/udev/rules.d/95-persistent-serial.rules,下面内容可供参考。对于非小强用户,xiaoqiang需要更换成自己的计算机用户名
      ACTION!="add", GOTO="persistent_serial_end"
      SUBSYSTEM!="tty", GOTO="persistent_serial_end"
      KERNEL!="ttyUSB[0-9]*", GOTO="persistent_serial_end"
      
      # This is old 11.10 style: IMPORT="usb_id --export %p"
      IMPORT{builtin}="path_id"
      KERNELS=="2-2:1.0"         ,SYMLINK+="ttyUSB004" , OWNER="xiaoqiang" ,RUN+="/bin/setserial /dev/ttyUSB004 low_latency"
      LABEL="persistent_serial_end"
      
      
      #最后重新加载udev规则
      udevadm control --reload-rules
      #重新插拔u转串模块 如果 ls /dev可以看到ttyUSB004设备,说明操作成功。
      

      4.启动ros驱动节点,开始测试自动充电功能

      对于小强用户,可以直接启动xiaoqiang_local.launch进行测试。
      对于其它平台的用户,请根据xiaoqiang_local.launch里面的参数注释,把里程计和安装参数修改一下。

      roslaunch bw_auto_dock xiaoqiang_local.launch
      

      手动设置充电桩位置:节点启动成功后,先遥控小车到充电桩附近,小车可以不用接触上充电桩,保证充电桩已经很接近小车充电部位(相差10cm左右),现在可以通过运行下列命令手动发布充电桩位置保存指令,这样小车会把当前位置记录为充电桩位置。

      rostopic pub  /bw_auto_dock/dockposition_save   std_msgs/Bool   '{data: true}'  -1
      #保存成功后会在launch文件设置的目录里面生成一个文件,里面有位置数据。
      #只有在红外传感器收到数据而且里程计消息有效时才会保存数据
      

      遥控小车到一个随机位置,运行下列命令后,小车会自动进入自动充电模式,然后尝试自动对准充电桩。

      rostopic pub  /bw_auto_dock/EnableCharge   std_msgs/Bool   '{data: true}'  -1
      

      运行下列命令可以使小车退出自动充电模式,现在又可以返回到上一步,继续发布自动充电命令。

      rostopic pub  /bw_auto_dock/EnableCharge   std_msgs/Bool   '{data: false}'  -1
      

      5.自动充电原理介绍

      充电桩会广播一组红外信号,小车上的自动充电模块有4个红外接收器。通过分析这四个红外接收器接收的红外信号,小车可以确定自己相对充电桩的位置。

      0_1533288551997_自动充电原理介绍.png

      安装在小车上的自动充电模块有充电电压、充电电流检测功能,还有两个碰撞检测开关。
      整个自动充电控制逻辑是这样的:

      a. 设置充电桩位置后,bw_auto_dock会自动设定两个参考点,充电桩位于这两个参考点连线一侧的中间位置。
      b. 每次接收到自动充电指令后,小车会自动在这两个参考点之间循环运动。
      c. 当L1或者R1接收器接收到充电桩的中间位置信号后,小车会判断已经到达充电桩正前方,会先后退一段距离(back_distance长度),然后原地旋转使R2、L2接收器正对充电桩。
      d. 小车开始直线后退对准充电桩,期间根据R2、L2接收的信号进行pid对准控制。
      e. 如果侦测到充电电压、电流,就停止移动,开始充电。如果触发了碰撞开关,同时还没有侦测到电压和电流就回到步骤b。

      6.常见问题

      a.back_distance该如何设置?
         back_distance对应的是超声波模块到base_link的距离,这个距离决定了上文5.c步骤小车后退距离。如果发现小车每次5.c旋转后都没有正对充电桩,说明这个参数设置的过大或过小,手动调一下back_distance参数(一般是减去过调的距离)。
      
      b.在步骤5.e中机器人经常没有碰到充电桩就不后退了反而立即离开,即crash_distance该如何设置?
         crash_distance是一个碰撞检测阈值,在5.e步骤中,如果超声波探测的值小于crash_distance就认为是触发了碰撞开关。
         如果5.e中机器人经常没有碰到充电桩就不后退了反而立即离开,说明crash_distance值设置的太大了,尝试把它改小一些(每次减少10)。
         如果5.e中机器人已经碰到墙了,还在不断后退,说明crash_distance值设置的太小了,尝试把它改大一些(每次增加10)。
         在rqt_console里面打开dock_driver节点的debug输出,可以查看超声波模块的当前测量值。
      

      超声波距离.png

      7.升级控制算法

      xq5分支代码是控制算法升级后的版本(ros melodic以上版本需要用noetic分支代码),同时整合提供了service和action接口,还支持手动对接充电,具体请阅读代码了解。

      #编译xq5分支代码(或者noetic分支),所依赖的ros包从这里git clone下载后catkin_make编译
      http://git.bwbot.org/publish/bw_auto_dock.git  #noetic分支
      https://gitee.com/BluewhaleRobot/galileo_serial_server.git
      https://gitee.com/BluewhaleRobot/galileo_msg.git
      
      发布在 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 雷达开始了工作,也打开了文件,但就是扫不出地图,怎么回事?

      @muyou 可能是底盘驱动没有成功启动,导致里程计没有发布,gmapping建图需要里程计。运行“bwcheck”看小车当前状态,如果底盘驱动没有成功启动,就检查u转串设备有没有插好、有没有上电、最后重启startup服务

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 小强ROS机器人教程(7)___使用ps3手柄控制小强移动

      @yangoogle 只有上面教程里面的带编号的按键和轴才有效,其它轴比如25轴ros驱动里面没有使用,值漂不漂都没有用。

      发布在 产品服务
      xiaoqiang
      xiaoqiang
    • qq远程协助无法移动鼠标

      在某些情况下,使用qq远程协助时会遇到无法控制对方鼠标但是画面正常的情况,解决办法是:不要最小化你和对方的qq对话窗口,可能是隐私安全设置导致的。

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 上位机问题

      设置udev规则,把你的usb转串口设备映射成ttyAMA0,参考http://community.bwbot.org/topic/134/%E5%B0%8F%E5%BC%BAros%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%95%99%E7%A8%8B-13-___rplidar%E4%BA%8C%E4%BB%A3%E6%BF%80%E5%85%89%E9%9B%B7%E8%BE%BE%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E5%88%A9%E7%94%A8udev%E7%BB%99%E5%B0%8F%E8%BD%A6%E5%A2%9E%E5%8A%A0%E4%B8%B2%E5%8F%A3%E8%AE%BE%E5%A4%87

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • ROS超声波扩展板使用说明

      1.先固定安装好扩展模块和超声波头,根据下图连接好电源线和通信线。

      0_1526121412785_bw_sensors.PNG

      2.在主机ros catkin工作空间中下载安装模块的ros驱动包

      #假设catkin工作空间在~/Documents/ros
      cd  ~/Documents/ros
      cd src/
      git clone https://github.com/BlueWhaleRobot/bw_sensors.git #代码分支选择noetic分支
      cd ..
      catkin_make 
      
      

      3.将扩展模块通过usb转串口模块接入主机usb,添加udev规制,

      将串口号映射为/dev/bwSensors,同时根据插入的usb端口号进行端口绑定。参考:https://msadowski.github.io/linux-static-port/

      #先安装串口设置包
      sudo apt-get install setserial
      #将当前计算机用户名添加进dailout用户组,以xiaoqiang为例
      sudo adduser xiaoqiang dialout
      
      #查看串口所在usb端口,即下条命令输出结果中/ttyUSBXXX字符前面的数字例如2-6:1.0,/ttyUSBXXX需要替换成实际端口号
      udevadm info --name=/dev/ttyUSBXXX --attribute-walk
      
      #根据这个端口号和映射信息/dev/bwSensors建立udev规则文件,下面内容可供参考,xiaoqiang需要更换成自己的计算机用户名
      ACTION!="add", GOTO="persistent_serial_end"
      SUBSYSTEM!="tty", GOTO="persistent_serial_end"
      KERNEL!="ttyUSB[0-9]*", GOTO="persistent_serial_end"
      
      # This is old 11.10 style: IMPORT="usb_id --export %p"
      IMPORT{builtin}="path_id"
      KERNELS=="2-6:1.0"         ,SYMLINK="bwSensors"        , SYMLINK+="ttyUSB005" , OWNER="xiaoqiang" ,RUN+="/bin/setserial /dev/ttyUSB005 low_latency"
      LABEL="persistent_serial_end"
      
      
      #最后重新加载udev规则
      udevadm control --reload-rules
      #重新插拔u转串模块 如果 ls /dev可以看到bwSensors设备,说明操作成功。
      

      4.启动ros驱动节点,根据超声波安装位置,可以修改launch文件中的tf变换关系

      roslaunch bw_sensors bw_sensors.launch
      

      节点启动成功后,会自动发布下列topic

      /bw_sensors/IMU             50hz       imu话题数据(选配)
      /bw_sensors/Power           50hz       电压测量值数据
      /bw_sensors/StatusFlag      50hz       模块状态数据
      /bw_sensors/Sonar1          10hz       1号超声波数据
      /bw_sensors/Sonar2          10hz       2号超声波数据
      /bw_sensors/Sonar3          10hz       3号超声波数据
      /bw_sensors/Sonar4          10hz       4号超声波数据
      

      5.在rviz中打开bw_sensors/launch/view.rviz文件,即可观察超声波数据

      6.观察IMU数据(选配功能)

      #新开一个终端,输入下列命令可视化IMU输出
      rosrun bw_sensors visualization.py
      

      0_1526128228367_imu.png
      如果运行出错"python no module named visual",先安装visual库

      sudo apt-get install python-visual
      

      7.重新标定IMU(选配功能)

      第一次安装模块后,需要重新标定IMU,消除安装误差提高精度,新开一个终端输入下列命令,等待3分钟,模块会自主标定完IMU,然后继续使用。

      rostopic pub  /bw_sensors/IMU_cal std_msgs/Bool '{data: true}' -1
      

      购买请联系淘宝卖家咨询超声波模块
      淘宝

      发布在 产品服务
      xiaoqiang
      xiaoqiang
    • RE: 关于小强底层的电机驱动

      基本原理是:底层stm32采集电机编码器和其它传感器信息,配合ros驱动包xqserial_server包(软件包代码在蓝鲸github开源仓库)下发的速度指令进行速度pid控制。

      发布在 技术交流
      xiaoqiang
      xiaoqiang
    • RE: 原装和国产ps3手柄ros驱动程序

      @wukefu 按配对键的时候手柄不能用usb连接电脑,但是上一部的绑定需要手柄和电脑用usb连接,因此会有一个断开的操作。断开usb时,手柄会自动触发蓝牙连接(手柄配对指示灯会闪),此时就会导致不能配对成功,因为是usb断开引起的。
      正确操作是:断开usb后,先等配对指示灯不闪后,再执行“rosrun ps3joy ps3joyfake_node.py”,最后按手柄配对键就可以配对了

      发布在 产品服务
      xiaoqiang
      xiaoqiang
    • 工业和信息化部 公安部 交通运输部关于印发《智能网联汽车道路测试管理规范(试行)》的通知

      工业和信息化部 公安部 交通运输部关于印发《智能网联汽车道路测试管理规范(试行)》的通知
      各省、自治区、直辖市及计划单列市、新疆生产建设兵团工业和信息化主管部门、公安厅(局)、交通运输厅(局、委):

      现将《智能网联汽车道路测试管理规范(试行)》印发给你们,请各地结合实际,认真贯彻执行。

      工业和信息化部

      公 安 部

      交 通 运 输 部

      2018年4月3日

      智能网联汽车道路测试管理规范

      (试行)

      第一章 总 则

      第一条 为深入贯彻落实党的十九大精神,加快制造强国、科技强国、网络强国、交通强国建设,推动汽车智能化、网联化技术发展和产业应用,推进交通运输转型升级创新发展,规范智能网联汽车道路测试管理,依据《道路交通安全法》《公路法》等法律法规,制定本规范。

      第二条 本规范适用于在中华人民共和国境内进行的智能网联汽车道路测试。

      第三条 工业和信息化部、公安部、交通运输部定期联合发布智能网联汽车道路测试相关信息。

      第四条 省、市级政府相关主管部门可以根据当地实际情况,依据本规范制定实施细则,具体组织开展智能网联汽车道路测试工作。

      本规范所称省、市级政府相关主管部门,包括各省、自治区、直辖市及计划单列市、新疆生产建设兵团工业和信息化主管部门、公安机关交通管理部门和交通运输主管部门。

      第二章 测试主体、测试驾驶人及测试车辆

      第五条 测试主体是指提出智能网联汽车道路测试申请、组织测试并承担相应责任的单位,应符合下列条件:

      (一) 在中华人民共和国境内登记注册的独立法人单位;

      (二) 具备汽车及零部件制造、技术研发或试验检测等智能网联汽车相关业务能力;

      (三) 对智能网联汽车测试时可能造成的人身和财产损失,具备足够的民事赔偿能力;

      (四) 具有智能网联汽车自动驾驶功能测试评价规程;

      (五) 具备对测试车辆进行实时远程监控的能力;

      (六) 具备对测试车辆事件进行记录、分析和重现的能力;

      (七) 法律、法规规章规定的其他条件。

      第六条 测试驾驶人是指经测试主体授权,负责测试并在出现紧急情况时对测试车辆实施应急措施的驾驶人,应符合下列条件:

      (一) 与测试主体签订有劳动合同或劳务合同;

      (二) 取得相应准驾车型驾驶证并具有3年以上驾驶经历;

      (三) 最近连续3个记分周期内无满分记录;

      (四) 最近1年内无超速50%以上、违反交通信号灯通行等严重交通违法行为记录;

      (五) 无饮酒后驾驶或者醉酒驾驶机动车记录,无服用国家管制的精神药品或者麻醉药品记录;

      (六) 无致人死亡或者重伤的交通事故责任记录;

      (七) 经测试主体自动驾驶培训,熟悉自动驾驶测试规程,掌握自动驾驶测试操作方法,具备紧急状态下应急处置能力;

      (八) 法律、法规规章规定的其他条件。

      第七条 测试车辆是指申请用于道路测试的智能网联汽车,包括乘用车、商用车辆,不包括低速汽车、摩托车,应符合以下条件:

      (一) 未办理过机动车注册登记。

      (二) 满足对应车辆类型除耐久性以外的强制性检验项目要求;对因实现自动驾驶功能而无法满足强制性检验要求的个别项目,测试主体需证明其未降低车辆安全性能。

      (三) 具备人工操作和自动驾驶两种模式,且能够以安全、快速、简单的方式实现模式转换并有相应的提示,保证在任何情况下都能将车辆即时转换为人工操作模式。

      (四) 具备车辆状态记录、存储及在线监控功能,能实时回传下列第1、2、3项信息,并自动记录和存储下列各项信息在车辆事故或失效状况发生前至少90秒的数据,数据存储时间不少于3年:

      1. 车辆控制模式;

      2. 车辆位置;

      3. 车辆速度、加速度等运动状态;

      4. 环境感知与响应状态;

      5. 车辆灯光、信号实时状态;

      6. 车辆外部360度视频监控情况;

      7. 反映测试驾驶人和人机交互状态的车内视频及语音监控情况;

      8. 车辆接收的远程控制指令(如有);

      9. 车辆故障情况(如有)。

      (五) 测试车辆应在封闭道路、场地等特定区域进行充分的实车测试,符合国家行业相关标准,省、市级政府发布的测试要求以及测试主体的测试评价规程,具备进行道路测试的条件。

      (六) 测试车辆自动驾驶功能应由国家或省市认可的从事汽车相关业务的第三方检测机构进行检测验证,检测验证项目包括但不限于附件1所列的项目。

      第三章 测试申请及审核

      第八条 省、市级政府相关主管部门在辖区内道路选择若干典型路段用于智能网联汽车道路测试并向社会公布。

      第九条 测试主体向拟开展测试路段所在地的省、市级政府相关主管部门提出道路测试申请。申请材料应至少包括:

      (一) 测试主体、测试驾驶人和测试车辆的基本情况;

      (二) 属国产机动车的,应当提供机动车整车出厂合格证,但未进入公告车型的应当提供出厂合格证明和国家认可的第三方检测实验室出具的相应车型强制性检验报告;属进口机动车的,应当提供进口机动车辆强制性产品认证证书、随车检验单和货物进口证明书;

      (三) 自动驾驶功能说明及其未降低车辆安全性能的证明;

      (四) 机动车安全技术检验合格证明;

      (五) 测试主体在封闭道路、场地等特定区域进行实车测试的证明材料;

      (六) 获得国家或省市认可的从事汽车相关业务的第三方检测机构出具的自动驾驶功能委托检验报告;

      (七) 测试方案,包括测试路段、测试时间、测试项目、测试规程、风险分析及应对措施;

      (八) 交通事故责任强制险凭证,以及每车不低于五百万元人民币的交通事故责任保险凭证或不少于五百万元人民币的自动驾驶道路测试事故赔偿保函。

      第十条 省、市级政府相关主管部门负责组织受理、审核测试申请,为审核通过的测试车辆逐一出具智能网联汽车道路测试通知书(见附件2),定期报工业和信息化部、公安部和交通运输部备案并向社会公布。

      第十一条 测试通知书应当注明测试主体、车辆识别代号、测试驾驶人姓名及身份证号、测试时间、测试路段等信息。其中,测试时间原则上不超过18个月。

      第十二条 如需变更测试通知书基本信息的,由测试主体提交变更说明及相应证明材料,省、市级政府相关主管部门审核通过后出具变更后的测试通知书。

      第十三条 测试主体凭测试通知书及《机动车登记规定》所要求的证明、凭证,向测试通知书载明的公安机关交通管理部门申领试验用机动车的临时行驶车号牌。

      第十四条 临时行驶车号牌规定的行驶区域应当根据测试通知书载明的测试路段合理限定,临时行驶车号牌有效期不应当超过测试通知书载明的测试时间。

      第十五条 已申领临时行驶车号牌的测试车辆,如需在其他省、市进行测试,测试主体还应申请相应省、市的测试通知书,并重新申领临时行驶车号牌。但是,相应省、市级政府准许持其他省、市核发的测试通知书、临时行驶车号牌在本行政区域指定道路测试的除外。

      第四章 测试管理

      第十六条 测试车辆应当遵守临时行驶车号牌管理相关规定。未取得临时行驶车号牌,不得上路行驶。

      测试主体、测试驾驶人均应遵守我国道路交通安全法律法规,严格依据测试通知书载明的测试时间、测试路段和测试项目开展测试工作,并随车携带测试通知书、测试方案备查。
      

      第十七条 测试车辆车身应以醒目的颜色标示“自动驾驶测试”字样,提醒周边车辆注意。

      第十八条 测试驾驶人应始终处于测试车辆的驾驶座位上、始终监控车辆运行状态及周围环境,随时准备接管车辆。

      当测试驾驶人发现车辆处于不适合自动驾驶的状态或系统提示需要人工操作时,应及时接管车辆。

      第十九条 测试过程中,测试车辆不得搭载与测试无关的人员或货物。

      第二十条 测试过程中,除测试通知书载明的测试路段外,不得使用自动驾驶模式行驶;测试车辆从停放点到测试路段的转场,应使用人工操作模式行驶。

      第二十一条 测试主体应每6个月向出具测试通知书的省、市级政府相关主管部门提交阶段性测试报告,并在测试结束后1个月内提交测试总结报告。

      第二十二条 省、市级政府相关主管部门于每年6月、12月向工业和信息化部、公安部和交通运输部报告辖区内智能网联汽车道路测试情况。

      第二十三条 测试车辆在测试期间发生下列情形之一的,省、市级政府相关主管部门应当撤销测试通知书:

      (一) 省、市级政府相关主管部门认为测试活动具有重大安全风险的;

      (二) 测试车辆有违反交通信号灯通行、逆行或者依照道路交通安全法律法规可以处暂扣、吊销机动车驾驶证或拘留处罚等的严重交通违法行为的;

      (三) 发生交通事故造成人员重伤、死亡或车辆毁损等严重情形,测试车辆方负主要以上责任的。

      省、市级政府相关主管部门撤销测试通知书时应当一并收回临时行驶车号牌,并转交给临时行驶车号牌核发地公安交管部门;未收回的,书面告知核发地公安交管部门公告牌证作废。

      第五章 交通违法和事故处理

      第二十四条 在测试期间发生交通违法行为的,由公安机关交通管理部门按照现行道路交通安全法律法规对测试驾驶人进行处理。

      第二十五条 在测试期间发生交通事故,应当按照道路交通安全法律法规认定当事人的责任,并依照有关法律法规及司法解释确定损害赔偿责任。构成犯罪的,依法追究刑事责任。

      第二十六条 测试车辆在道路测试期间发生事故时,当事人应保护现场并立即报警。

      造成人员重伤或死亡、车辆损毁的,测试主体应在24小时内将事故情况上报省、市级政府相关主管部门;省、市级政府相关主管部门应在3个工作日内上报工业和信息化部、公安部和交通运输部。

      第二十七条 测试主体应在事故责任认定后5个工作日内,以书面方式将事故原因、责任认定结果及完整的事故分析报告等相关材料上报省、市级政府相关主管部门;省、市级政府相关主管部门应在5个工作日内上报工业和信息化部、公安部和交通运输部。

      第六章 附 则

      第二十八条 本规范所称智能网联汽车是指搭载先进的车载传感器、控制器、执行器等装置,并融合现代通信与网络技术,实现车与X(人、车、路、云端等)智能信息交换、共享,具备复杂环境感知、智能决策、协同控制等功能,可实现安全、高效、舒适、节能行驶,并最终可实现替代人来操作的新一代汽车。智能网联汽车通常也被称为智能汽车、自动驾驶汽车等。

      智能网联汽车自动驾驶包括有条件自动驾驶、高度自动驾驶和完全自动驾驶。有条件自动驾驶是指系统完成所有驾驶操作,根据系统请求,驾驶人需要提供适当的干预;高度自动驾驶是指系统完成所有驾驶操作,特定环境下系统会向驾驶人提出响应请求,驾驶人可以对系统请求不进行响应;完全自动驾驶是指系统可以完成驾驶人能够完成的所有道路环境下的操作,不需要驾驶人介入。

      第二十九条 本规范自2018年5月1日起施行。

      发布在 行业动态
      xiaoqiang
      xiaoqiang
    • 1
    • 2
    • 12
    • 13
    • 14
    • 15
    • 16
    • 14 / 16