@weijiafeng rviz上显示的是什么坐标系下的坐标odom?map? 这个和你的导航定位算法有关系,实际上就是对应算法的误差。
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision

weijiz 发布的帖子
-
RE: 如何处理小车运动过程中的误差积累问题?
-
RE: ROS如何通过USB4G网卡与指定的公网服务器通信
@canfly 比较好的方式是通过物联网mqtt协议。可以参考阿里云的iot文档
这个配置起来会麻烦一点,但是稳定性可靠性要高很多。
如果想要简单实现的话可以自己写一个socket server,然后机器人上传状态和接收指令。 -
GPS在ROS中的测试和使用
通过GPS机器人可以获取定位信息。ROS中也提供了GPS的相关驱动包,可以方便的使用GPS的定位信息。下面以蓝鲸GPS模块为例演示如何在ROS中使用GPS传感器。其他的可以通过串口指令发布nmea语句的GPS模块都是通用的。
蓝鲸GPS模块采用AGPS定位方式,即GPS加手机基站的定位方式。相对于一般的GPS模块具有定位更加迅速和准确的优点。可以在官方淘宝店咨询购买。
首先在机器人上安装对应的软件包
安装gpsd
sudo apt-get install gpsd gpsd-clients
设置模块udev规则
在机器人上运行
dmesg --follow
将GPS模块的串口插入机器人USB接口,可以看到终端输出了串口的信息
[ 434.206803] ftdi_sio 2-7.2:1.0: FTDI USB Serial Device converter detected [ 434.206868] usb 2-7.2: Detected FT232BM [ 434.207105] usb 2-7.2: FTDI USB Serial Device converter now attached to ttyUSB0
记住
2-7.2:1.0
这个端口号
在/etc/udev/rules.d/95-persistent-serial.rules
文件中添加下面的内容。如果没有这个文件就自己创建一个KERNELS=="2-7.2:1.0" ,SYMLINK+="ttyUSB005", SYMLINK+="bwgps", OWNER="xiaoqiang" ,RUN+="/bin/setserial /dev/ttyUSB005 low_latency"
其中
KERNELS
之后未刚才的端口号。OWNER设置未自己的用户。修改完成后保存退出,然后执行sudo udevadm control --reload
执行完成之后重新插入GPS模块串口,然后就可以在/dev文件夹内看到bwgps和ttyUSB005两个文件。这样就说明之前的修改已经生效了。
测试GPS数据
给模块通电,并插好串口模块之后可以开始测试模块是否能够正常输出GPS数据。
# 根据自己串口号和波特率设置 screen /dev/bwgps 115200
正常应该可以看到下面的输出。这样就说明GPS模块已经可以正常工作了。
执行下面的指令停止screen指令
sudo killall screen
设置 gpsd
# 设置串口波特率,蓝鲸GPS模块的波特率是115200,对于不同的模块根据模块参数设置。 sudo stty -F /dev/bwgps 115200 # 启动gpsd gpsd -D 5 -n -N -b /dev/bwgps
然后执行
xgps
在空旷地方应该能够看到模块已经追踪的卫星。
在ROS中使用gps数据
在ROS中可以使用nmea_navsat_driver解析GPS数据。这个包会发出下面几个话题
话题 类型 简介 /fix sensor_msgs/NavSatFix GPS定位信息 /extend_fix gps_common/GPSFix GPSFix消息包含GPS卫星状态和定位信息 /time_reference sensor_msgs/TimeReference GPS时间信息 /vel geometry_msgs/TwistStamped GPS的速度信息 可以根据自己需求订阅相关信息
安装
首先下载安装这个包
cd [到你的工作空间]/src git clone https://github.com/BluewhaleRobot/nmea_navsat_driver cd .. catkin_make -DCATKIN_WHITELIST_PACKAGES="nmea_navsat_driver"
修改launch文件,蓝鲸GPS模块用户可以不用修改直接使用。
<launch> <!-- A simple launch file for the nmea_serial_driver node. --> <arg name="port" default="/dev/bwgps" /> <arg name="baud" default="115200" /> <arg name="frame_id" default="gps" /> <arg name="time_ref_source" default="gps" /> <arg name="useRMC" default="false" /> <node name="nmea_serial_driver_node" pkg="nmea_navsat_driver" type="nmea_serial_driver" output="screen"> <param name="port" value="$(arg port)"/> <param name="baud" value="$(arg baud)" /> <param name="frame_id" value="$(arg frame_id)" /> <param name="time_ref_source" value="$(arg time_ref_source)" /> <param name="useRMC" value="$(arg useRMC)" /> </node> </launch>
各个参数的含义都十分明确,根据自己的设备参数进行修改就可以了。
运行测试
roslaunch nmea_navsat_driver nmea_serial_driver.launch
正常情况下就可以通过各个topic订阅信息了。注意如果之前运行了gpsd要先把gpsd关闭。
左侧是extend_fix话题数据。可以通过
satellite_visible_prn
看到已经看到的卫星编号。注意在开阔环境下才会有比较好的定位效果。 -
RE: 机器人巡航过程中的Off Map问题
@weijiafeng 在 机器人巡航过程中的Off Map问题 中说:
想问下这个是不是行进过程中误差积累的问题?跟AMCL定位或者雷达的配置有关吗?如何解决呢?谢谢!
应该是运动已经超出地图范围了吧
-
RE: 谷歌cartographer使用速腾聚创3d激光雷达数据进行三维建图
@li move base也有3d的插件,但是我没用过。你可以自己研究一下 https://github.com/ros-planning/3d_navigation
-
RE: 如何让机器人行进过程中头朝前
@weijiafeng 在 如何让机器人行进过程中头朝前 中说:
航测试时发现当机器人initial pose在目标点前面时,机
这个和规划器参数有关系。如果是dwa的话,可以把最小速度设置成0,禁用后退
-
RE: AttributeError: 'module' object has no attribute 'packages'
@zhk15951 在 AttributeError: 'module' object has no attribute 'packages' 中说:
requests.packages.urllib3.disable_warnings()
你的requests库好像有问题,试试更新requests库
-
RE: 主控的配置(CPU和内存)会影响机器人的避障性能吗?
@weijiafeng move里面的参数
local costmap
global costmap
对应的修改你自己的move base 参数。 -
RE: 主控的配置(CPU和内存)会影响机器人的避障性能吗?
@weijiafeng 可能是costmap的更新频率的问题。可以通过参数设置。如果是性能问题会有警告提示说地图刷新达不到目标频率。
-
RE: 超声波模块按照教程设置UDEV规则,启动超声波节点失败
@孙超越a
catkin_make
换成catkin_make -DCATKIN_WHITELIST_PACKAGES="bw_sensors"
试试