能够遵循预定义的航路点航行,但是借助AIS,Camera(防撞)和路径规划算法,可根据感知到的障碍重新定义其路线。对于硬件部分,它运行具有高级导航系统的Raspberry Pi和用于控制螺旋桨和执行器的Arduino,并在Raspberry出现故障的情况下提供基本的导航功能。
现在,在深入研究编码之前我检查了现有的解决方案,发现了ROS(机器人操作系统)中间件,该中间件带有有趣的抽象,用于本地和不同硬件架构(在这种情况下为Raspberry和Arduino)之间的多线程和多处理,消息交换。但是,我担心ROS会在Raspberry处理器上增加可观的负载并增加功耗,并且会阻止对硬件的细粒度控制,从长远来看也可能会导致系统不稳定。该控制软件必须能够在传感器和Pi本身上访问睡眠功能,以防电力短缺,从而动态挂起和重新启动进程,并且它需要24/7连续运行几个月,而无需人工干预。
ROS是否适合这些任务,还是我应该考虑从头开始创建自定义软件?谢谢
#1 楼
ROS可以很好地完成此任务。这会为Raspberry Pi增加一些额外的开销,但是如果您仅安装Robotic或Base配置而不是Full配置并且正在使用无头(无GUI)的Raspberry Pi安装,则它会很小。我的公司在自动驾驶汽车上使用了ROS,到目前为止,ROS从未引起故障-始终与硬件或编码相关。这是您的权衡:ROS优点:
完全完整,稳定的消息传递框架。
允许进程间消息传递而没有网络开销(请参阅nodelets)。
预定义消息类型和实用程序的大型库(例如
tf
确实协调了转换工作)。对框架部分的社区支持。
ROS缺点:
与运行
roscore
和消息序列化/反序列化过程相关的一些开销。如果没有自己实现功能,关于消息传输的服务质量方式很少(这是ROS 2.0中提供的)。
仅支持Python和C ++。对于某些人来说这不是问题,但对其他人则可能是一个缺点。
评论
$ \ begingroup $
我还要补充一点,对于像这样的特定项目,即插即用的可视化,控制,记录和绘图工具将使测试过程变得非常容易。同样,如果这是大量实习生来来去去的项目类型,则可以使用ROS来维护一个相当模块化的软件结构,从而避免由于这些情况而引起的一些麻烦。
$ \ endgroup $
– Peter w
17年9月9日17:21
#2 楼
对于自动驾驶船,您可能需要研究MOOS-IVP:http://oceanai.mit.edu/moos-ivp/pmwiki/pmwiki.php?n=Main.HomePageFull。它在很多方面与ROS相似,但主要针对自主船只而不是陆地车辆。但是,这两种中间件都足够抽象,以至于它们可以很好地处理陆地或海上车辆。但是我不能说它易于集成。 ROS,或其在像RasPi这样的小型处理器上运行的能力。但请参阅下面的评论。
评论
$ \ begingroup $
我建议不要使用MOOS,特别是对于那些是实习生,似乎不熟悉中间件并且名声很少的人。
$ \ endgroup $
– Holmeski
17年8月30日在17:48
$ \ begingroup $
从一般的角度来看,我对中间件非常熟悉,并且MOOS比ROS更轻巧,可以在Raspberry Pi等单板计算机上运行
$ \ endgroup $
–阿内里托
17年8月31日在5:59
$ \ begingroup $
您熟悉Moos吗?
$ \ endgroup $
– Holmeski
17年9月1日于0:44
$ \ begingroup $
我强烈认为运行ros所需的开销非常值得。
$ \ endgroup $
– Holmeski
17年9月1日,0:45在
$ \ begingroup $
我不熟悉上述任何中间件(ROS和MOOS),但是通过快速查看实现示例,MOOS似乎更加简单和灵活,而在使用ROS时,似乎必须围绕整个系统构建它。
$ \ endgroup $
–阿内里托
17年9月6日在21:55
#3 楼
您希望使用ROS中间件实现的目标是可以实现的。正如Joshua已经指出的那样,将会有一些额外的开销,但这应该相对较小。值得进行文献搜索来研究其他自主地面车辆(ASV)如何结合了ROS。进入他们的软件架构。关于诸如Squirtle之类的ASV的已发表论文应该为您提供有用的概述,以将ROS集成到您的设计中。
关于波罗的海的“严酷”环境,我知道那里已经部署了许多ASV,例如Roboat,(尽管我不确定Roboat是否确实包含ROS)。同样,对文献的搜索应有助于您量化潜在问题并帮助您确定ROS是否合适。
评论
除非您对RobotOS熟悉,否则如果通过附加的(低功耗/简单程序/监控/看门狗)处理器来管理诸如睡眠和其他低功耗模式之类的关键功能会更好,那么我会很伤心。听起来您希望拥有复杂的RobotOS,但不愿意自己信任它。当然,ROS被一个庞大的全球社区所遵循,对于我来说已经适当地开发并且足够多了,但是我不知道它是否适合这种USV将会面临的苛刻的工作条件。