更新(11 / 09 / 2024): 我们所有产品都有大量库存,也可以在    立即购买

使用方法 ArduSimple RTK接收器并在ROS中获取GPS数据

在本教程中,我们将解释如何使用 ArduSimple RTK接收器用于在ROS中获取精确的定位数据。 我们将指导您完成集成步骤 ArduSimple RTK接收机 到您的 ROS 项目中,让您能够利用准确的力量 全球定位系统 数据。

无论您是机器人爱好者、研究人员还是开发人员,本教程都将为您提供在 ROS 应用程序中访问定位数据的步骤。

如果您是 ROS 新手,我们准备了一个简短的 t帮助开始使用 ROS 的教程 了解ROS的关键术语,选择什么平台和开发环境等更好。

所需的硬件:

所需软件:

  • Ubuntu 18 或 20(在本教程中我们使用 Ubuntu的20) 本地安装在 PC 上 
  • ROS(我们使用 ROS Noetic)。

使用方法 ArduSimple RTK接收器并在ROS中获取GPS数据?

首先,在Ubuntu中连接并配置RTK接收器。

  1. 插上 RTK天线 您的 接收器。 地方 天线 在天空视野良好的位置,或靠近窗户以测试功能。
  2. 连接您的 接收器 通过标有“的 USB 端口连接到 PCPOWER+GPS设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“
  3. 您的接收器应该会自动配置。 要验证这一点,请打开 终端 并输入命令:
				
					ls /dev/tty*
				
			
  • 你会看到的 “/dev/ttyACM0” 已自动创建。
  1. 要验证来自您的流 RTK接收机,使用命令:
				
					sudo cat /dev/ttyACM0
				
			
  • GPS 输入流显示类似于以下内容:
  • 媒体 按Ctrl + C 取消查看流。
  1. 为了防止 RTK接收机 从不同的“ttyACM*” 每次上电时,创建一个 udev 规则(动态链接),通过在连接之前添加以下文件来创建具有特定名称的条目 RTK接收机.
				
					sudo nano /etc/udev/rules.d/50-ardusimple.rules
				
			
  1. 在规则中输入以下文本:
				
					KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
				
			
  1. 媒体 按Ctrl + X 退出文件并按 Y 保存修改后的缓冲区。
  2. 现在每当 RTK接收机 已连接,可以从 “/dev/tty_Ardusimple= 关联。 要检查这一点,请断开连接 RTK接收机 (断电并再次通电)并输入命令:
				
					sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
				
			
  1. 现在你可以看到 “tty_ArduSimple= 已经被创造了。
  1. 为了使用 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

				
			
  1. Wine安装完成后,就可以安装了 U-Center 在 Ubuntu 中,就像在 Windows 中一样。打开 Firefox Web 浏览器并下载 U-Center 程序来自官网: https://www.u-blox.com/en/product/u-center.
  1. 一旦 u-center 下载后,转到下载文件夹并解压 u-center 在桌面上。
  1. 开始安装 u-center 软件,输入命令:
				
					cd ~/Desktop/
wine ./u-center_v22.07.exe

				
			
  1. Install 安装 u-center 就像在 Windows 中一样,按照安装步骤进行操作。
  2.  要创建 COM1 端口,开放 终端 并输入以下命令以建立链接 RTK接收机 在文件夹中 “~/.wine/dosdevice”.
				
					ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
				
			
  1. 关闭 u-center 如果你把它打开了。打开 u-center.
  2. 连接到你的 RTK接收机 in u-center 按下 Ctrl + 1键 .
  1. 您将在左上角看到绿灯,并且来自 RTK 接收器的数据类似于下图。

其次,在ROS中运行RTK接收器。

  1. 使用工作区创建一个文件夹。 如果没有,可以使用以下命令来制作:
				
					mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
				
			
  1. 在 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 安装成功
  1. 编译程序使其能够执行。  
				
					catkin_make
source ~/catkin_ws/devel/setup.bash
				
			
  • 当 setup.bash 执行时,我们选择工作工作区并更新 ROS 中的可用程序。
  1. 为了控制要发布的消息 ArduSimple 您可以修改节点将用于执行与ros通信的yaml(配置文件)。
    该节点有多个测试配置文件,您可以通过修改以下目录中的文件来修改该配置文件的值:
				
					cd ~/catkin_ws/src/ublox/ublox_gps/config
				
			
  1. 由于 u-blox 模型内部 Ardusimple 是 zed_f9p,我们修改同名文件。 要打开编辑器,我们可以使用以下命令:
				
					nano zed_f9p.yaml
				
			
  1. 将设备地址更改为 “/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

				
			
  1. 关闭 u-center 因为活性氧和 u-center 不要一起跑。

  1. 要执行 ROS 节点,请使用位于以下文件夹中的启动器:
				
					cd ~/catkin_ws/src/ublox/ublox_gps/launch
				
			
  • 要检查它是否已列出,请键入命令:
				
					ls
				
			
  1. ROS 启动文件 简化启动多个节点和配置其参数的过程。 启动文件是一个 XML 文件,描述要执行的节点、它们的参数以及它们之间的连接。 通过使用启动文件,您可以使用单个命令启动多个节点,从而更轻松地管理复杂的机器人系统。 这些文件具有“.launch”扩展名,还有其他文件是具有“.yaml”扩展名的配置文件。
    要启动该文件:
				
					roslaunch <name_of_package> <launch_file>
				
			
  • 将启动我们的程序的文件称为 “ublox_device.launch”.
    该文件可以根据需要进行更改。
    要启动该程序,请使用以下命令:
				
					roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
				
			
  1. 打开新终端并输入命令:
				
					source ~/catkin_ws/devel/setup.bash
				
			
  1. ROS节点 运行时有唯一的名称。 要查看 ROS 节点名称列表,请在终端中使用以下命令:
				
					rosnode list
				
			
  1. 要获取有关 ROS 节点的信息,例如它们订阅或发布的主题,可以使用以下命令:
				
					rosnode info <name_of_node>
				
			
  • 例如,要获取有关“信息/ublox”,使用命令:

				
					rosnode info /ublox
				
			
  1. 显示活动列表 ROS 主题 当前可用并且正在发布或订阅到您的 ROS 系统,请使用该命令。
				
					rostopic list
				
			
  • ROS 主题列表的输出通常会显示主题名称及其消息类型。 此命令对于检查可用主题并验证所需主题是否正在您的 ROS 环境中发布或订阅非常有用。

  1. 要查看有关谁发布和订阅此消息、消息类型的信息,请使用以下格式的命令:
				
					rostopic info <name_of_topic>
				
			
  • 例如,接收有关主题的消息类型、发布者和订阅者的信息 “/罗苏特”,执行命令:
				
					rostopic info /rosout
				
			
  1. 接收有关主题的消息类型、发布者和订阅者的信息 /ublox/修复,ex执行命令:
				
					rostopic info /ublox/fix
				
			
  1. 要查看正在发布的信息,请使用以下格式的命令:
				
					rostopic echo <name_of_topic>
				
			
  • 为了测试它是否有效,我们可以订阅节点创建的不同主题。

    最重要的是 “/GPS/修复” (是WGS64中的数据)和 “/诊断” (向我们提供 GPS 状态信息)。 其他数据可以根据已设置的配置发布 RTK接收机.

    例如,观察和监控发布的 GPS 定位数据 “/ublox/修复” 主题(即WGS64中的数据),如纬度、经度、海拔等相关信息,使用以下命令查看数据:

				
					rostopic echo /ublox/fix
				
			
  • 要停止查看主题,请按 Ctrl +C。

  1. 查看正在发布的数据 “/诊断” 提供 GPS 状态信息(例如其他精度),请使用以下命令:
				
					rostopic echo /diagnostics
				
			
  • 要停止查看数据,请按 Ctrl +C。

  1. 如果想将Topic上发布的信息记录在文件中,使用命令:
  • 记录正在发布的 GPS 定位数据 “/ublox/修复” 主题,例如纬度、经度、海拔等:
				
					rostopic echo /ublox/fix > gps_fix_data.txt
				
			
  • 记录有关 GPS 状态的数据 “/诊断”:
				
					rostopic echo /diagnostics > gps_diagnostics.txt
				
			
  • 这些命令创建 文件 gps_fix_data.txtGPS_诊断.txt,主题将保存在其中。 要停止录音,请按 按Ctrl + C.

  1. 要查看文件中记录的信息,请执行:
				
					nano gps_fix_data.txt
				
			
				
					nano gps_diagnostics.txt
				
			
  1. ROS 消息 是用于 ROS 节点之间通信的数据结构。 它们定义关于某个主题交换的信息。 消息使用 .msg 文件格式定义。
    要查看 ROS 消息类型的列表,请使用以下命令:
				
					rosmsg list
				
			
  1. 要查看消息的结构,请使用以下格式的命令:

				
					rosmsg show <name_of_message>
				
			
  • 例如 “sensor_msgs/NavSatFix” 是 ROS 中的一种消息类型,用于表示 GPS(全球定位系统)固定数据,如纬度、经度、高度以及与 GPS 位置相关的其他参数。
    查看“的结构Sensor_msgs/NavSatFix” 消息,使用命令:
				
					rosmsg show sensor_msgs/NavSatFix
				
			
  1. 查看活动列表 ROS 服务 它为节点提供了一种发送请求和接收响应的方式,使用以下命令:
				
					rosservice list
				
			
  1. 要调用该服务,请使用以下格式的命令:
				
					rosservice call <name_of_service> <type_srv> <request>
				
			
  • 该服务将响应结果。

    例如,要获取 u-blox 节点的当前记录器配置(这有助于调试和监控),请使用以下命令:

				
					rosservice info /ublox/get_loggers
				
			

如果您想学习本教程,我们有所有产品库存并准备发货:

如果你喜欢这个内容,你可以关注我们 Twitter, YouTube, Facebook or LinkedIn 保持更新这样的内容。

有任何问题或要求吗?
联系我们!我们将在 24 小时内回复!

图标
联系我们 ArduSimple
关闭

想了解更多关于 GPS/RTK 的信息吗?

1. 我们的工程团队会联系您解决任何问题
2.我们会及时通知您促销和新产品发布
3.只有当我们有重要新闻时您才会收到我们的消息,我们不会向您发送垃圾邮件