ArduPilot开源飞控之ROS系统简介

1. 源由

之前在ArduPilot开源飞控之硬件SBC分析中讨论过,个人角度最推荐其中两个系统是:

  1. Rpanion-server【推荐,简单】
  2. BlueOS【推荐,完备】
  3. ROS【专门讨论,开源/复杂】

从功能角度看BlueOS和Rpanion类似,BlueOS具有更加完备系统以及通过Web方式提供分析工具,换句话说,更接近商业的系统模式。

作为DIY的角度,需要能快速入手,轻松掌握,灵活集成,方便部署,因而ROS更加适合后续的学习和研究。

2. ROS系统

ROS(Robot Operating System)是一组软件库和工具,可以帮助构建机器人应用程序。从驱动程序到最先进的算法,再到强大的开发工具,ROS 拥有在一个机器人项目中所需的一切。而且它全部都是开源的。

自2007年ROS系统起步,今年都已经是2024年了,目前与Ardupilot兼容,APM官网给出可以使用的是ROS2 humble系统

  • 发布周期:每12个月
  • 目标对象:Ubuntu LTS
  • 支持级别:3级标准
  • 层级 1 经过单元测试套件和其他测试工具的测试,包括持续集成作业、夜间作业、打包作业和性能测试。在这些平台中发现的错误或缺陷将由开发团队优先处理。在层级 1 平台中发现的重大错误可能会影响发布日期,在发布新版本之前解决所有已知的高优先级错误。
  • 层级 2 平台定期接受持续集成测试,其中包括运行构建和测试,并公开可访问的结果。预期持续集成至少应在 ROS 发行版的当前状态下的相关更改后的一周内运行一次。可能不提供包级二进制包,但鼓励提供构建工作区的可下载存档。层级 2 平台的发布产品版本中可能存在错误。已知的层级 2 平台错误将在资源可用的情况下尽力解决,并且可能在发布新版本之前进行纠正,也可能不进行纠正。一个或多个实体应致力于继续支持该平台。
  • 层级 3 平台是指社区报告表明发布是功能性的平台。开发团队不会在层级 3 平台上运行单元测试套件或执行任何其他测试。为了将平台列入此类别,安装说明应可用并保持最新。社区成员可以为这些平台提供帮助。

最近的几个系统:

  • Jazzy Jalisco (May 2024 - May 2029),Ubuntu Noble (24.04)
  • Humble Hawksbill (May 2022 - May 2027),Ubuntu Jammy (22.04)

APM官网推荐ROS2 humble系统,经过一些资料,目前最新的是iron。

ROS官网HowToGuide

3. Raspbian+Docker安装

基于《ArduPilot开源飞控之lida2003套机+伴机电脑首飞》,将 ROS 2 on Raspberry Pi上安装。

本次使用:

ROS(Robot Operating System)结合Mavros包可以方便地实现对基于PX4或ArduPilot开源飞控系统的无人机进行控制。Mavros是一个用于将MAVLink协议集成到ROS环境下的软件包,它允许你在ROS中直接发送命令、接收状态信息并与飞行控制器交互。下面是关于如何调整和优化ROS与Mavros之间的连接的一些关键点: ### 安装Mavros 首先确保你已经在Ubuntu系统上正确安装了ROS,并且成功安装并配置好了Mavros及其依赖项。 ```bash sudo apt-get update sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras ``` 如果使用的是其他版本的ROS,则替换`noetic`为相应的版本名称如melodic或其他。 ### 配置Mavros启动文件 创建一个新的Launch文件来启动Mavros节点,并根据你的需求修改参数。这里有一个简单的示例launch文件内容供参考: ```xml <launch> <!-- MAVLink system ID --> <param name="fcu_url" value="/dev/ttyUSB0:921600"/> <!-- MAVLink target system ID --> <param name="gcs_url" value="" /> <!-- Set to true if you want mavros to act as GCS and send heartbeat messages --> <param name="target_system_id" value="1" /> <!-- Load parameters from file --> <rosparam command="load" file="$(find my_package)/config/mavros.yaml"/> <!-- Start the node --> <node pkg="mavros" type="mavros_node" name="mavros"> <!-- Add any additional configuration here --> </node> </launch> ``` 在这个例子中,默认假设FCU(Flight Control Unit)通过串口 `/dev/ttyUSB0` 连接,波特率为 `921600`;如果你使用UDP/TCP连接,请相应更改`fcu_url`值例如 `"udp://localhost:14555"` 或者指定IP地址端口号。 ### 调整参数以提高性能 为了获得更佳的表现,在实际操作前应该考虑调整以下几个方面: #### 数据传输速率(Rate) 增加数据流率可以帮助减少延迟但同时增加了带宽占用量。你可以通过下面的方式改变默认的数据流频率: ```python from pymavlink import mavutil the_connection = mavutil.mavlink_connection('tcp:localhost:14550') the_connection.wait_heartbeat() # Change message rates for faster updates. msg_rate_request(the_connection, "ATTITUDE", 1) # Request attitude at 1 Hz def msg_rate_request(connection, stream_name, rate): connection.mav.request_data_stream_send( connection.target_system, connection.target_component, getattr(mavutil.mavlink, f'MAV_DATA_STREAM_{stream_name.upper()}'), rate, 1) ``` 注意:这只是一个Python脚本片段,你需要将其适配进自己的ROS环境中或者利用类似服务调用来达到目的。 #### 增加超时时间 适当延长某些重要话题和服务请求的最大等待期限也可以帮助处理偶尔发生的网络波动问题。可在对应的YAML配置文件内添加如下设置: ```yaml fcu_url: udp://@localhost:14557?timeout=3000 # UDP with a longer timeout period in milliseconds conn_timeout: 10 # Overall connection attempt timeout seconds ``` ### 监视与调试工具 最后不要忘了借助RViz、rqt_plot等可视化工具实时观察无人机的状态变化情况,这对于理解当前连接状况非常有用。另外还可以利用rostopic echo查看特定主题的消息流动情况以便快速定位潜在的问题所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值