连接ROS和arduino

时间:2015-12-16 00:48:18

标签: arduino ros

的背景故事

有一天,我发现有人扔掉的电动轮椅。作为一个花费大量时间观察其他人在网上做什么的制造商,我决定抓住它并尝试用它制作一个机器人。我还买了一个Arduino mega,一个Kinect传感器和一个电机控制器,试图控制电机并为它提供某种形式的视觉。

我的愿景

老实说,我并不打算让这个机器人成为一个有趣且具有挑战性的项目。我目前的目标是让它运行SLAM算法,以确定它在地图上的位置,并导航到地图上的预定点。但是在这一点上,我很高兴能够用键盘进行简单的遥控操作。

我的问题

过去一周我一直在研究ros以及如何让它与我的Arduino交谈。我安装了diff_drive_controllerTurtlebotros_controlros_serialros_arduino_bridge以及其他几个试图找到可以告诉电机做什么的事情。到现在为止,我觉得我对于ros的工作原理几乎没有表面理解。基本上有一系列节点,每个节点发布其他节点的信息,以查看和订阅他们想要阅读的信息。我现在想要的只是一个节点,它根据它试图导航或远程操作或类似的东西发布有关电机速度的数据。我认为turtlebot是我最好的选择,因为它是一个一体化的堆栈,可以完成我想要的任何事情。唯一的问题是我没有iRobot创建。但似乎它应该足够简单,可以拦截这些命令并让它们驱动我自己的机器人基础。但是我不确定要听哪个主题以及如何以不尝试连接到iRobot创建的方式运行turtle bot。我可以只听取/ cmd_vel_mux / input / teleop主题,但我认为这会限制我只是远程操作,这可能会让你很难在将来继续自主。

我应该听什么话题?我是以正确的方式来做这件事的吗?有没有更适合我需要的套餐?请记住,我是ros的新手,所以教程将不胜感激。

我期待您的回复

谢谢,洛根

2 个答案:

答案 0 :(得分:2)

好听的项目!我接下来的建议是看看这些教程,但我认为你在进入Arduino + ROS世界之前花了更多时间学习基本的ROS tutorials

例如,我注意到我认为你可能有一种误解。您的节点侦听哪个主题并不重要,因为它只是一个名称,可以通过启动节点时给定的参数轻松重新映射。重要的是确保您正在收听正确的类型消息 - 它们指定所有不同节点通信的接口。有一个bunch of options,如果它们都不适合您的用例,您可以定义自己的用例。

我怀疑对于低级别的东西,比如电机的驱动程序,你需要编写自己的ROS节点。对于高级功能,例如SLAM;有各种各样的选择。您可以找到适合您的传感器输入数据的那个。

最后一个建议是利用ROS的功能,使您能够将大问题分解为可管理的子任务。一次做一件事 - 实施电机控制器,编写远程操作方法;注意在每个点指定合适的接口。这种方法的优点在于,如果您在定义具有良好界面的单个组件时做出了明智的选择,那么如果您愿意,可以很容易地用另一个组件替换它们。

答案 1 :(得分:1)

您可以找到如何连接Arduino和ROS here.

的教程列表