打印

ROS串口例程

[复制链接]
12520|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这个文档介绍如何在ROS下来读取某款传感器的数据,并提供了c++语言例程代码,通过执行ROS命令,运行相应的节点,就可以看到打印到终端上的信息。
  • 测试环境:Ubuntu16.04   
  • ROS版本:ROS Kinetic Kame
  • 测试设备:HI226(六轴传感器)

1. 安装USB-UART驱动
Ubuntu 系统自带CP210x的驱动,默认不需要安装串口驱动。将调试版连接到电脑上时,会自动识别设备。识别成功后,会在dev目录下出现一个对应的设备:ttyUSBx
检查USB-UART设备是否被Ubantu识别:
  • 打开终端,输入ls /dev,先查看已经存在的串口设备。
  • 查看是否已经存在  ttyUSBx 这个设备文件,便于确认对应的端口号。x表示USB设备号,由于Ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号是不固定的,需要确定设备的设备号。
  • 接下来插入USB线,连接调试板,然后再次执行ls /dev。 dev目录下多了一个设备, 如图:

ttyUSB0 文件就是调试版在ubuntu系统中生成的设备(后面的数字是不固定的,有可能为 ttyUSB1  或 ttyUSB2)
  • 打开USB设备的可执行权限:

   $ sudo chmod 777 /dev/ttyUSB02. 安装ROS serial软件包
本例程依赖ROS提供的serial包实现串口通信.
  • 首先执行如下命令,下载安装serial软件包:

$ sudo apt-get install ros-kinetic-serial
  • 然后输入roscd serial命令,进入serial下载位置,如果安装成功,就会出现如下信息:

$:/opt/ros/kinetic/share/serial
        3.如果出现装不上,可以到本文档的最后查看本人遇到的问题和解决方式。
3. 编译serial_imu_ws工作空间
  • 打开终端进入/examples/ROS/serial_imu_ws 目录
  • 执行catkin_make命令,编译成功后出现完成度100%的信息。

4. 修改串口波特率和设备号
  • 在Ubuntu环境中,支持的波特率为115200, 460800, 921600。本例程使用的默认波特率是115200,默认打开的串口名称是/dev/ttyUSB0。       
  • 如果您需要更高的输出频率,请编辑serial_imu.cpp文件,修改serial_imu.cpp文件中的宏定义,改为其他波特率。       

#define IMU_SERIAL ("/dev/ttyUSB0")
#define BAUD       (115200)
注意修改后需要回到serial_imu_ws目录下,重新执行catkin_make命令
5. 显示数据
本例程提供了三种查看数据方式:
  • 显示所有的数据信息,便于查看数据。
  • 打印ROS标准imu_msg 数据
  • rviz工具实现可视化
  • 3D显示

5.1:输出IMU原始数据
1.打开另一个终端,执行:
$ roslaunch imu_launch imu_msg.launch imu_package:=0x91
  • 如果执行失败,提示找不到相应的launch文件,则需要配置环境,在当前终端执行:

$source <serial_imu_ws_dir>/devel/setup.bash
  • 执行成功后,就可以看到所有的信息:


     Devie ID:     0
    Run times: 0 days  3:26:10:468
  Frame Rate:   100Hz
       Acc(G):   0.933    0.317    0.248
   Gyr(deg/s):   -0.02     0.30    -0.00
      Mag(uT):    0.00     0.00     0.00
   Eul(R P Y):   52.01   -66.63   -60.77
Quat(W X Y Z):   0.770    0.066   -0.611   -0.172

5.2:输出ROS标准 Imu.msg
  • 在windows系统下进行配置模块,使能四元数输出。
  • 使用Window下 CHCenter上位机进行配置:先把模块连接到PC机上。然后使用CHCenter工具进行 连接对应的com口,点击 工具  --->  配置模块,在弹出的新窗口中,点击ATCMD,然后在输入框中输入AT指令:AT+SETPTL=0x91,点击发送,接收区最后显示 ok ,说明配置成功,断电重启模块。执行roslaunch imu_launch imu_msg.launch命令。执行成功后,就可以看到ROS定义的IMU话题消息:

header:
  seq: 595
  stamp:
    secs: 1595829903
    nsecs: 680423746
  frame_id: "base_link"
orientation:
  x: 0.0663746222854
  y: -0.611194491386
  z: -0.17232863605
  w: 0.769635260105
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
  x: 0.0851199477911
  y: 0.0470183677971
  z: 0.00235567195341
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
  x: 0.93323135376
  y: 0.317857563496
  z: 0.247811317444
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
5.3:rviz可视化
        1、同上节,使能模块四元数输出
        2、打开终端,执行roslaunch imu_launch imu_rviz.launch命令,执行成功后,rviz工具被打开。
        3、先点击左下角的Add标签,然后在弹出窗口中,选择 By display type标签,查找rviz_imu_plugin;找到之后,选择它下面的imu标签,点击OK, 这时,我们可以看到rviz的左侧的展示窗口中已经成功添加上了Imu的标签。在FixedFrame中填入base_link 。topic中添加 /IMU_data。这时,可以看到坐标系随传感器改变而改变。

5.4:3D显示
        1、使能模块的四元数输出
        2、打开终端,执行roslaunch imu_launch imu_display_3D.launch命令,执行成功后,会出现3D图形显示
       
6. FAQ
        1.如果是第一次装ROS serial包,有很大的可能会失败,因为本人在装的时候,遇到了这个问题,这里把解决方法提供出来,节约大家的时间。
当在终端执行sudo apt-get install ros-kinetic-serial这条命令的时候,有可能会提示你
为了提供素材,serial故意输错的。
本人的解决办法是:
$cd /etc/apt/sources.list.d
$sudo vi ros-latest.list
打开这个文件之后,一般这个文件中只有一个可用的源,就是指没有被注释的,现在把它注释掉,在它的开头输入#即可注释。
然后另起一行输入: deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ xenial main
然后保存,关闭文件。打开终端,执行sudo apt-get update,然后执行sduo apt-get install ros-kinetic-serial.
7.例程不要着急,我把说明文档写好了就上传,哈哈

使用特权

评论回复

相关帖子

沙发
blooy41760| | 2021-9-3 12:08 | 只看该作者
靓仔牛皮

使用特权

评论回复
板凳
ly87802541| | 2021-9-3 12:14 | 只看该作者
不愧为最靓的仔子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

11

帖子

1

粉丝