Arduino在ROS中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/EAIBOT/article/details/51057107

用途

Arduino主要应用于控制电机驱动和各类传感器(比如超声波、IMU等),然后和ROS的上机位通讯,交换数据。

安装与使用

  • 安装rosserial软件包
sudo apt-get install ros-indigo-rosserial-arduino
sudo apt-get install ros-indigo-rosserial
  • 安装ros_lib库,其中<sketchbook>是arduino的开发环境
  cd <sketchbook>/libraries
  rm -rf ros_lib
  rosrun rosserial_arduino make_libraries.py .

重启arduino IDE,可以看到ros_lib的例子。官网上有rosserial_arduino教材,可以结合例子学习。

  • 在ROS上位机
    在ROS上位机运行下面命令,就可以与Arduino通讯。
roscore
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

自定义msg和srv

ros_lib库默认自带的消息类型有限,根据应用的需要,有时我们需要自定义消息。步骤如下:

第一步 创建

在~/catkin_ws/src目录下创建一个新包testMsgSrv,当然,在任意一个原有包基础上做也是可以的。

创建msg和srv

msg/TestMsg.msg 内容如下:

int32 left
int32 right

srv/testSrv.srv内容如下:

string name
---
int32[]   ints

在package.xml中添加如下内容

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

在CMakeLists.txt中内容如下:

cmake_minimum_required(VERSION 2.8.3)
project(rosserial_msgs)

find_package(catkin REQUIRED COMPONENTS message_generation)

add_message_files(FILES
                  TestMsg.msg
                 )

add_service_files(FILES
                  testSrv.srv
                 )

generate_messages()
catkin_package(CATKIN_DEPENDS message_runtime)

注意find_package中要有message_generation,catkin_package中要有message_runtime。

第二步 编译

然后需要编译该包。

cd ~/catkin_ws
catkin_make --pkg testMsgSrv

编译完成后,我们就可以在arduino的libraries下安装ros_lib。

cd <sketchbook>/libraries
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .

然后在/libraries/ros_lib/testMsgSrv目录下,可以找到TestMsg.h和TestSrv.h,说明编译成功。

第三步 应用

接下来我们就可以新建arduino文件,在文件中通过引入头文件,就可以使用该消息了。

#include "testMsgSrv/TestMsg.h"
展开阅读全文

没有更多推荐了,返回首页