1.配置和显示惯性测量单元AHRS模块_GY-951

点击此处查看最新的网赚项目教程

2018眨眼间已经来到我们眼前,真是不敢想象,时间过得如此之快,ROS小课堂我也坚持做了一年多了,正好也借此机会来进行自我总结,目前为止在优酷发布视频教程72集,视频总播放数5.3万,粉丝1011位,另外也想通知大家,现在优酷上的ROS小课堂所有的视频都可以下载了,方便大家下载到本地来看了。

上传源码赚钱_源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-

微信公众号发布消息共46条,订阅用户共2281位,关键为什么还有俩未知性别的呢?

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来_上传源码赚钱

订阅用户城市排行是上北深广的顺序,北京和上海基本上持平的,果然还是一线城市用户居多啊!

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

ROS小课堂微信群里打赏用户已经有129人,感谢所有为ROS小课堂打赏的各位小伙伴,有你们的支持才让我坚持到现在

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

最后就是ROS小课堂的网站在2017年11月底也顺利上线,虽然网站目前教程还不够齐全,我希望随着我不断的维护和更新,教程会越来越多,越来越全的,希望可以通过我的微薄之力为更多的学习ROS的小伙伴提供一个查找资料学习教程的好平台!

上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱_源码上传好后网站显示不出来

在新的一年里,我会尽自己最大努力来维护好优酷上ROS小课堂的视频教程、ROS小课堂微信公众号和ROS小课堂网站,大家的支持就是我坚持下去的动力!最后我想说,2018,放马过来吧!

0x00 AHRS模块简介

在机器人的设计中,惯性测量单元IMU(Inertial measurement unit)是必不可少的一个模块,但是目前高精度的IMU模块是非常贵的,一般Xsens MTi系列IMU都在上万块,在这里我们介绍一款便宜实惠的IMU模块,但是与IMU不同的是该模块是AHRS(Attitude and heading reference system)航姿参考系统,淘宝价格大概80块左右,虽然输出数据有点误差,但是对于我们一般的ROS机器人已经可以用了。下面是该模块图片及相关参数:

GY-951(三轴陀螺仪+三轴加速度计+三轴数字罗盘)

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

外观尺寸

2.3cm*1.7cm

供电电压

3-5V

通信方式

TTL串口,波特率57600

模块芯片

处理器芯片

ATMEGA328P

三轴陀螺仪

ITG3205

三轴加速度计

ADXL345

三轴数字罗盘

HMC5883L

输出数据

偏行角(YAW )

±180°

横滚角(ROLL)

±180°

俯仰角(PITCH)

±180°

0x01 连接GY-951模块

由于刚买回来的GY-951模块如下图左边所示,排针需要我们自己用电烙铁根据需要焊接上,右边的是我焊接好的样子:

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

我们要想将模块输出的数据发送到ROS上进行处理显然我们还需要一个转接模块,我这里使用的是USB转TTL,当然其他的模块也可以,下面这三款是我用过确定可以和GY-951正常通信的,唯一不同的是另外两款需要再接一根miniUSB接口的线,跟安卓手机的那种microUSB线不同,如下图所示:

上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱_源码上传好后网站显示不出来

需要注意的是我们在进行GY-951的固件代码更新时,需要连接上DTR引脚才能将固件代码下载到GY-951中,在正常通信时就不用接DTR引脚,只需要接上VCC,GND,TX,RX即可,下面是总结:

GY-951模块

USB转接模块

连接图

备注

正常通信

VCC

GND

TX

RX

VCC

GND

RX

TX

源码上传好后网站显示不出来_上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-

在连接时需要注意IMU模块与转接模块连接时,

VCC,GND都是接相应的引脚,在接TX和RX

引脚时IMU模块需要与转接模块相反,即IMU模块

的TX接转接模块的RX,IMU模块的RX接转接模块的TX。

更新固件

VCC

GND

TX

RX

DTR

VCC

GND

RX

TX

DTR

上传源码赚钱_源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-

在更新GY-951固件代码时连接引脚时唯一的不一样

就是多接了一根DTR引脚,只有接了DTR引脚才能

将固件代码通过Arduino IDE下载到GY-951中。

(此时需要带有miniUSB接口的转接模块才带有DTR引脚)

0x02 更新GY-951固件

由于从淘宝上买回来的GY-951固件代码比较旧,要想模块可以正常工作,第一件事就是要更新模块的固件代码,在这里我们使用ROS中razor_imu_9dof这个软件包里面的固件代码,之所以要使用该软件包中估计代码是因为该软件包是为SparkFun出品的Razor IMU 9DOF (Degree of freedom) sensor boards,该IMU模块的各传感器模块正好与我们的GY-951相同,所以代码也应该是一样的可以通用。

上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来_上传源码赚钱

然后从gitHub下载相应的代码,下载命令:git clone ,由于该代码目前只有ROSIndigo分支,因此我们需要先在Indigo上做测试,我们需要将该代码下载到ROS的工作空间源码目录下,一般就是我们自己ROS小车的工作目录,在这里我用自己的ROS工作空间做演示下载源码并解析源码各目录内容:

上传源码赚钱_源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-

下面来简单介绍固件代码的各源码文件作用,其中Math.ino没地方来标明了,它的作用就是一些简单的数学计算,例如向量的加法,向量的点乘(数量积、点积),矩阵乘法等:

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

接下来就需要在Arduino IDE中打开该固件代码,直接打开Razor_AHRS.ino文件即可:

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

源码上传好后网站显示不出来_上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-

接下来我们需要根据GY-951模块来配置该代码,直接修改Razor_AHRS.ino代码中HARDWARE OPTIONS部分即可:

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

接下来需要配置开发板和处理器和端口,找到适合GY-951的,这样才能将该代码下载到模块中,注意开发板需要选择:Arduino Pro or Pro Mini,处理器选择:ATmega328P(3.3V,8MHz),端口根据需要选择,我这里选择的是ttyUSB0:

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

源码上传好后网站显示不出来_上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-

源码上传好后网站显示不出来_上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-

当点击上传按钮后,即可自动编译该固件代码,然后将生成的文件上传到GY-951模块中,根据Arduino IDE下面的窗口可得知是否上传成。

源码上传好后网站显示不出来_上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-

接下来通过调试模块的串口输出数据来看模块是否可以工作了,直接打开IDE中的串口监视器即可,当看到串口有数据输出表明我们的模块固件更新已经完成了:

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

0x03 配置ROS代码

现在GY-951模块代码已经有数据输出,但是该数据我们还无法在ROS中使用,需要将该数据进行ROS能识别的IMU格式数据封装才行,接下来我们就开始配置相应的ROS部分代码,首先我们从launch文件入手来分析ROS部分代码,我们先从razor-pub.launch分析,该文件内容如下:

"razor_config_file"default="$(findrazor_imu_9dof)/config/my_razor.yaml"/>

"razor_imu_9dof"type="imu_node.py"name="imu_node"output="screen">

"$(argrazor_config_file)"command="load"/>

从arg部分看出,需要加载razor_config_file参数,该参数是从my_razor.yaml文件中读取,但是该文件默认不存在,需要我们从razor.yaml文件复制一份,直接使用cp razor.yaml my_razor.yaml复制一份使用:

上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱_源码上传好后网站显示不出来

我们查看my_razor.yaml文件,查看该配置文件中内容,然后根据需要做相应的修改,主要需要修改的就是port端口号:

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

##USBport

port:/dev/ttyUSB0

#####Calibration####

###accelerometer

accel_x_min:-250.0

accel_x_max:250.0

accel_y_min:-250.0

accel_y_max:250.0

accel_z_min:-250.0

accel_z_max:250.0

###magnetometer

#standardcalibration

magn_x_min:-600.0

magn_x_max:600.0

magn_y_min:-600.0

magn_y_max:600.0

magn_z_min:-600.0

magn_z_max:600.0

#extendedcalibration

calibration_magn_use_extended:false

magn_ellipsoid_center:[0,0,0]

magn_ellipsoid_transform:[[0,0,0],[0,0,0],[0,0,0]]

#AHRStorobotcalibration

imu_yaw_calibration:0.0

###gyroscope

gyro_average_offset_x:0.0

gyro_average_offset_y:0.0

gyro_average_offset_z:0.0

我们需要修改的部分主要就是USB port端口号,但是在使用该端口号时需要注意权限问题,注意当前用户有没有在dialout组中,如果没有的话需要使用"sudo usermod -aG dialout 用户名"将当前用户添加到dialout组中,因为默认情况下,只有root用户和属于dialout组的用户会有读写权限,因此直接把自己的用户加入到dialout组就可以了,操作完命令后要logout一下或者重启电脑后,以后就永久生效了。

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

通过groups命令可以查看当前用户有没有在dialout组中,由于我以前已经把用户添加到dialout组中,因此我就不用执行了,如果你没有发现dialout组,可以通过上述命令来添加。当增加好权限后,我们就可通过3D可视化来查看GY-951模块的输出数据的实际效果了,但是在使用可视化模块前需要安装一个软件,通过以下命令安装:

sudo apt-get install python-visual

然后就可以在ROS工作空间代码下执行catkin_make进行编译,编译完成后source devel/setup.bash,就可以来执行razor-imu-9dof的ROS部分代码来3D显示数据:

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

corvin@workspace:~/project/omniWheelCareRobot/rosCode$roslaunchrazor_imu_9dofrazor-pub-and-display.launch

...loggingto/home/corvin/.ros/log/fc30add4-ec66-11e7-8528-1866da14be59/roslaunch-workspace-16324.log

Checkinglogdirectoryfordiskusage.Thismaytakeawhile.

PressCtrl-Ctointerrupt

Donecheckinglogfilediskusage.Usageis

startedroslaunchserverhttp://192.168.31.186:19943/

SUMMARY

========

PARAMETERS

*/imu_node/accel_x_max:250.0

*/imu_node/accel_x_min:-250.0

*/imu_node/accel_y_max:250.0

*/imu_node/accel_y_min:-250.0

*/imu_node/accel_z_max:250.0

*/imu_node/accel_z_min:-250.0

*/imu_node/calibration_magn_use_extended:False

*/imu_node/gyro_average_offset_x:0.0

*/imu_node/gyro_average_offset_y:0.0

*/imu_node/gyro_average_offset_z:0.0

*/imu_node/imu_yaw_calibration:0.0

*/imu_node/magn_ellipsoid_center:[0,0,0]

*/imu_node/magn_ellipsoid_transform:[[0,0,0],[0,0...

*/imu_node/magn_x_max:600.0

*/imu_node/magn_x_min:-600.0

*/imu_node/magn_y_max:600.0

*/imu_node/magn_y_min:-600.0

*/imu_node/magn_z_max:600.0

*/imu_node/magn_z_min:-600.0

*/imu_node/port:/dev/ttyUSB0

*/rosdistro:indigo

*/rosversion:1.11.21

NODES

display_3D_visualization_node(razor_imu_9dof/display_3D_visualization.py)

imu_node(razor_imu_9dof/imu_node.py)

auto-startingnewmaster

process[master]:startedwithpid[16336]

ROS_MASTER_URI=http://localhost:11311

setting/run_idtofc30add4-ec66-11e7-8528-1866da14be59

process[rosout-1]:startedwithpid[16349]

startedcoreservice[/rosout]

process[imu_node-2]:startedwithpid[16360]

process[display_3D_visualization_node-3]:startedwithpid[16367]

[INFO][WallTime:1514531273.567938]Reconfigurerequestforyaw_calibration:0

[INFO][WallTime:1514531273.568119]Setimu_yaw_calibrationto0

[INFO][WallTime:1514531273.583307]Opening/dev/ttyUSB0...

[INFO][WallTime:1514531273.587696]GivingtherazorIMUboard5secondstoboot...

[INFO][WallTime:1514531279.590087]WritingcalibrationvaluestorazorIMUboard...

[INFO][WallTime:1514531280.710073]Printingsetcalibrationvalues:

ACCEL_X_MIN:-250.00

ACCEL_X_MAX:250.00

ACCEL_Y_MIN:-250.00

ACCEL_Y_MAX:250.00

ACCEL_Z_MIN:-250.00

ACCEL_Z_MAX:250.00

MAGN_X_MIN:-600.00

MAGN_X_MAX:600.00

MAGN_Y_MIN:-600.00

MAGN_Y_MAX:600.00

MAGN_Z_MIN:-600.00

MAGN_Z_MAX:600.00

MAGN_USE_EXTENDED:false

magn_ellipsoid_center:[0.0000,0.0000,0.0000]

magn_ellipsoid_transform:[[0.0000000,0.0000000,0.0000000],[0.0000000,0.0000000,0.0000000],[0.0000000,0.0000000,0.0000000]]

GYRO_AVERAGE_OFFSET_X:0.00

GYRO_AVERAGE_OFFSET_Y:0.00

GYRO_AVERAGE_OFFSET_Z:0.00

[INFO][WallTime:1514531280.710284]Flushingfirst200IMUentries...

[INFO][WallTime:1514531284.814904]PublishingIMUdata...

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

此时可以查看话题列表,通过rostopic list查看,可以发现已经组装好的imu话题,可以echo出来查看数据格式和内容:

上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来_上传源码赚钱

0x04 在Rviz中显示IMU数据

在Rviz中如果要想显示IMU数据的话,需要提前安装一个Rviz显示插件,安装方式有两种,第一种直接通过apt-get install来安装,第二种通过源码自己编译,下面我分别来介绍两种安装方式:

(1)apt直接安装

这种方式是最简单快捷的,我们直接在终端中输入:sudo apt-get install ros-indigo-imu-tools就可以了,当然我这里是在indigo系统下安装的,大家需要根据自己安装的ROS版本来选择可以在kinetic系统中输入sudo apt-get install ros-kinetic-imu-tools就可以安装了。

(2)通过源码安装

由于源码需要通过git来下载,那么就需要先保证已经安装了git-core软件包,直接通过sudo apt-get install git-core来安装,接下来下载源码,我们首先需要切换到ROS中自己创建的工作空间源码目录下,然后开始从github下载源码:

git clone -b indigo https://github.com/ccny-ros-pkg/imu_tools.git

我这里下载的是indigo分支代码,大家根据自己ROS的版本来选择,该源码网址是:,大家可以从该网址找到更多的信息。接下来在编译该源码之前,需要检查该源码的依赖包,将依赖包先安装好才能源码编译,安装依赖包的命令是:rosdep install imu_tools,安装好依赖包后,接下来就开始在工作空间的根目录下执行catkin_make就可以了。

上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱_源码上传好后网站显示不出来

当安装好Rviz中显示IMU的插件后,我们就可以打开Rviz了,直接在终端中输入rviz即可打开,当打开后第一步就是要添加我们刚才安装好的插件:

上传源码赚钱_上传下载网站源码,0,0,0,0.0,0,0,0,,-_源码上传好后网站显示不出来

当添加好插件后,就可以在Rviz的中心显示区域显示出一个xyz的坐标,我们接下来需要配置一下就可以将GY-951模块的信息在Rviz中显示出来了,根据下图提示来配置Rviz即可,这样当我们晃动GY-951模块时会发现在Rviz中的IMU插件也同步在晃动:

源码上传好后网站显示不出来_上传下载网站源码,0,0,0,0.0,0,0,0,,-_上传源码赚钱

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: qs62318888

主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注