navgationkit-docs-sphinx/source/version_two/rtk/develop.md

3.6 KiB
Raw Blame History

RTK循迹模块使用说明

开发引导

实现RTK定位功能的软件包含两部分 RTK RAW 驱动和 RTK ROS包

位于src/driver/location/al_rtk_ros_driver

rtk

RTK RAW驱动

raw 驱动部分包含从串口获取RTK的数据进行解析 并包含支持千寻服务的nrtip client。 可通过配置账号和密码直接获得Fixed解的位置 其输出格式为WGS84坐标。

RTK ROS包

ROS驱动包除实现与ROS的接口外实现了WGS84坐标系到ENU坐标的转换。ENU的直角坐标可直接被路径规划等算法使用。由于ENU坐标需要参考原点此软件包会根据设置在第一次获得Fixed解时将当前坐标作为ENU坐标系x=0,y=0点。

rtk

RTK 驱动的所有功能都通过launch文件中的 rtk node 节点进行配置 具体功能如下

  • map_frame 定义发布位置的坐标系默认为map 无需修改

  • serival_device 计算机连接RTK接收机的串口地址对于AP1套件已固定为/dev/box_3 对应USB hub#3接口。 如需在其他环境使用修改为对应串口地址即可

  • badurate 串口通讯速率 固定为115200 不能修改

  • domain 千寻ntrip 服务域名 无需修改

  • account 千寻ntrip 账号

  • password 千寻ntrip密码

  • publish_pos_fix_only 是否只在固定解情况下发布位置。 当设置为true时尽在RTK接收机可以解算出固定解即误差1-2cm的高精度位置时发布位置话题的数据如果无法获得固定解将不发布位置信息。设置为false将不考虑当前解的状态可能输出误差10米左右的普通定位信息。

  • auto_use_first_fix_as_enu_origin 是否使用第一次收到的固定解位置作为ENU坐标系的原点。当设置为false时将不自动设置ENU坐标系原点需要手动调用相应方法设置。默认为true非必要无需修改

  • origin_config_file 保存enu原点WGS84坐标的文件如果想清除已经设定的ENU坐标原点可手动编辑此文件或将其删除

  • log_dir LOG文件输出目录

  • stderrthreshold 日志输出级别在调试过程中可将此级别设置为0 INFO将输出驱动内部的详细工作信息。

AutolaborOS平台编译

由于Autolabor OS 已经包含了RTK所有需要使用的库使编译工作变得极为简单仅需要进入驱动目录使用catkin 编译即可

可输入如下命令

cd ~/catkin_ws/src/driver/location/al_rtk_ros_driver/
catkin build --this

在编译前强烈建议您清空已编译版本并修改swap大小进行一次完整的工作空间编译以防止编译缓存造成的编译错误。

清空已编译的内容可通过如下命令实现

cd ~/catkin_ws
catkin clean -y

由于编译过程中需要使用大量的内存通常物理内存不能满足要求可能出现因为内存空间不足导致的编译失败。通常编译过程会通过使用swap空间的方式确保有足够的内存我们已经提供了自动化修改swap空间的工具 您可通过 如下命令启动并将swap空间设置15G以上通常可以满足编译的要求。

sudo ~/Tools/modifyswap.sh

进行整个工作空间的编译

cd ~/catkin_ws
catkin build

自行安装ROS编译

al_rtk_raw_driver 依赖于libevent ,编译前请确保已经安装。

在Ubuntu 18.04 可利用apt工具进行安装

sudo apt update
sudo apt install libevent-dev

al_rtk_ros_driver 所依赖的库都已在源代码目录包含,可直接在项目目录编译。

catkin build --this