在本教程中,我们将解释如何使用 ArduSimple RTK接收器用于在ROS中获取精确的定位数据。 我们将指导您完成集成步骤 ArduSimple RTK接收机 到您的 ROS 项目中,让您能够利用准确的力量 全球定位系统 数据。
无论您是机器人爱好者、研究人员还是开发人员,本教程都将为您提供在 ROS 应用程序中访问定位数据的步骤。
如果您是 ROS 新手,我们准备了一个简短的 t帮助开始使用 ROS 的教程 了解ROS的关键术语,选择什么平台和开发环境等更好。
所需的硬件:
- simpleRTK2B 系列接收器 (在本教程中我们使用 simpleRTK2B Budget)
- RTK多频段天线 (在本教程中我们使用 了u-blox GNSS 多频段天线 ANN-MB-00 (IP67))
- USB电缆 与接收器的 USB 端口兼容,用于连接到 PC 或嵌入式平台
- 可访问互联网的计算机或嵌入式平台(我们在本教程中使用 PC)
所需软件:
- Ubuntu 18 或 20(在本教程中我们使用 Ubuntu的20) 本地安装在 PC 上
- ROS(我们使用 ROS Noetic)。
- 您可以按照以下教程安装 ROS:
- 在 Ubuntu 18 中使用 ROS Melodic(检查 ROS Melodic 安装指南)
- 对 Ubuntu 20 使用 ROS Noetic(检查 ROS Noetic 安装指南)
使用方法 ArduSimple RTK接收器并在ROS中获取GPS数据?
首先,在Ubuntu中连接并配置RTK接收器。
ls /dev/tty*
- 你会看到的 “/dev/ttyACM0” 已自动创建。
- 要验证来自您的流 RTK接收机,使用命令:
sudo cat /dev/ttyACM0
- GPS 输入流显示类似于以下内容:
- 媒体 按Ctrl + C 取消查看流。
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- 在规则中输入以下文本:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- 现在你可以看到 “tty_ArduSimple= 已经被创造了。
- 为了使用 U-center Ubuntu 中的程序,安装 Wine。它是 Linux 库的集合,使许多 Windows 应用程序能够在 Linux 发行版(Ubuntu 等)上运行。
它不会使 U-center 软件完全兼容,但如果您想检查设备的状态或配置,可以使用它 RTK接收机.
要安装 Wine(安装可能持续 2-3 分钟),请使用以下命令:
sudo apt install wine64 //if Ubuntu is installed natively
sudo apt install wine32 //if you run Ubuntu on a virtual machine
- Wine安装完成后,就可以安装了 U-Center 在 Ubuntu 中,就像在 Windows 中一样。打开 Firefox Web 浏览器并下载 U-Center 程序来自官网: https://www.u-blox.com/en/product/u-center.
- 一旦 u-center 下载后,转到下载文件夹并解压 u-center 在桌面上。
- 开始安装 u-center 软件,输入命令:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- Install 安装 u-center 就像在 Windows 中一样,按照安装步骤进行操作。
- 要创建 COM1 端口,开放 终端 并输入以下命令以建立链接 RTK接收机 在文件夹中 “~/.wine/dosdevice”.
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- 关闭 u-center 如果你把它打开了。打开 u-center.
- 连接到你的 RTK接收机 in u-center 按下 Ctrl + 1键 .
- 您将在左上角看到绿灯,并且来自 RTK 接收器的数据类似于下图。
其次,在ROS中运行RTK接收器。
- 使用工作区创建一个文件夹。 如果没有,可以使用以下命令来制作:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- 在 src 中下载并安装 ROS 软件包。 在本教程中,我们将从以下位置下载软件包 https://github.com/KumarRobotics/ublox 这将发布ROS信息。 这适用于 1.1.4 版本。 您可以使用最新版本,但某些步骤可能需要修改。 输入命令:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- 您将在终端中看到:
#所有必需的 rosdeps 安装成功
- 编译程序使其能够执行。
catkin_make
source ~/catkin_ws/devel/setup.bash
- 当 setup.bash 执行时,我们选择工作工作区并更新 ROS 中的可用程序。
- 为了控制要发布的消息 ArduSimple 您可以修改节点将用于执行与ros通信的yaml(配置文件)。
该节点有多个测试配置文件,您可以通过修改以下目录中的文件来修改该配置文件的值:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- 由于 u-blox 模型内部 Ardusimple 是 zed_f9p,我们修改同名文件。 要打开编辑器,我们可以使用以下命令:
nano zed_f9p.yaml
将设备地址更改为 “/dev/tty_Ardusimple= 以确保它始终到达 RTK 接收机:
device: /dev/tty_Ardusimple
frame_id: gps
uart1:
baudrate: 9600 //Change the baudrate value to the value set in U-Center.
config_on_startup: false
关闭 u-center 因为活性氧和 u-center 不要一起跑。
- 要执行 ROS 节点,请使用位于以下文件夹中的启动器:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- 要检查它是否已列出,请键入命令:
ls
- ROS 启动文件 简化启动多个节点和配置其参数的过程。 启动文件是一个 XML 文件,描述要执行的节点、它们的参数以及它们之间的连接。 通过使用启动文件,您可以使用单个命令启动多个节点,从而更轻松地管理复杂的机器人系统。 这些文件具有“.launch”扩展名,还有其他文件是具有“.yaml”扩展名的配置文件。
要启动该文件:
roslaunch
- 将启动我们的程序的文件称为 “ublox_device.launch”.
该文件可以根据需要进行更改。
要启动该程序,请使用以下命令:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- 打开新终端并输入命令:
source ~/catkin_ws/devel/setup.bash
- ROS节点 运行时有唯一的名称。 要查看 ROS 节点名称列表,请在终端中使用以下命令:
rosnode list
- 要获取有关 ROS 节点的信息,例如它们订阅或发布的主题,可以使用以下命令:
rosnode info
例如,要获取有关“信息/ublox”,使用命令:
rosnode info /ublox
- 显示活动列表 ROS 主题 当前可用并且正在发布或订阅到您的 ROS 系统,请使用该命令。
rostopic list
ROS 主题列表的输出通常会显示主题名称及其消息类型。 此命令对于检查可用主题并验证所需主题是否正在您的 ROS 环境中发布或订阅非常有用。
- 要查看有关谁发布和订阅此消息、消息类型的信息,请使用以下格式的命令:
rostopic info
- 例如,接收有关主题的消息类型、发布者和订阅者的信息 “/罗苏特”,执行命令:
rostopic info /rosout
- 接收有关主题的消息类型、发布者和订阅者的信息 /ublox/修复,ex执行命令:
rostopic info /ublox/fix
- 要查看正在发布的信息,请使用以下格式的命令:
rostopic echo
为了测试它是否有效,我们可以订阅节点创建的不同主题。
最重要的是 “/GPS/修复” (是WGS64中的数据)和 “/诊断” (向我们提供 GPS 状态信息)。 其他数据可以根据已设置的配置发布 RTK接收机.
例如,观察和监控发布的 GPS 定位数据 “/ublox/修复” 主题(即WGS64中的数据),如纬度、经度、海拔等相关信息,使用以下命令查看数据:
rostopic echo /ublox/fix
要停止查看主题,请按 Ctrl +C。
- 查看正在发布的数据 “/诊断” 提供 GPS 状态信息(例如其他精度),请使用以下命令:
rostopic echo /diagnostics
要停止查看数据,请按 Ctrl +C。
- 如果想将Topic上发布的信息记录在文件中,使用命令:
- 记录正在发布的 GPS 定位数据 “/ublox/修复” 主题,例如纬度、经度、海拔等:
rostopic echo /ublox/fix > gps_fix_data.txt
- 记录有关 GPS 状态的数据 “/诊断”:
rostopic echo /diagnostics > gps_diagnostics.txt
这些命令创建 文件 gps_fix_data.txt 和 GPS_诊断.txt,主题将保存在其中。 要停止录音,请按 按Ctrl + C.
- 要查看文件中记录的信息,请执行:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- ROS 消息 是用于 ROS 节点之间通信的数据结构。 它们定义关于某个主题交换的信息。 消息使用 .msg 文件格式定义。
要查看 ROS 消息类型的列表,请使用以下命令:
rosmsg list
要查看消息的结构,请使用以下格式的命令:
rosmsg show
- 例如 “sensor_msgs/NavSatFix” 是 ROS 中的一种消息类型,用于表示 GPS(全球定位系统)固定数据,如纬度、经度、高度以及与 GPS 位置相关的其他参数。
查看“的结构Sensor_msgs/NavSatFix” 消息,使用命令:
rosmsg show sensor_msgs/NavSatFix
- 查看活动列表 ROS 服务 它为节点提供了一种发送请求和接收响应的方式,使用以下命令:
rosservice list
- 要调用该服务,请使用以下格式的命令:
rosservice call
该服务将响应结果。
例如,要获取 u-blox 节点的当前记录器配置(这有助于调试和监控),请使用以下命令:
rosservice info /ublox/get_loggers
如果您想学习本教程,我们有所有产品库存并准备发货:
- simpleRTK2B 系列接收器 (在本教程中我们使用 simpleRTK2B Budget)
- RTK多频段天线 (在本教程中我们使用 u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- USB电缆