热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ros发布信息频率_运动控制卡应用开发教程之ROS(下)

今天,正运动技术为大家分享一下《运动控制卡应用开发教程之ROS(下)》。本章节在《运动控制卡应用开发教程之ROS(上)》程序的基础上稍作修改,实现在RO

今天,正运动技术为大家分享一下《运动控制卡应用开发教程之ROS(下)》。本章节在《运动控制卡应用开发教程之ROS(上)》程序的基础上稍作修改,实现在ROS下正运动技术运动控制卡的开发。

  在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618。这两款产品分别是4轴,6轴运动控制卡。

57115ac46144699dd988771c9ec34bcd.png

  ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出口支持高速PWM控制。

6a02b979477cb3bae71053657c002bbc.png

  ECI2618支持6轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出口支持高速PWM控制。

def18dfc2eb7b4477280ea11e6780301.png

  ECI2418,ECI2618均使用同一套API函数,均支持C、C++、C#、LabVIEW、Python、Delphi等开发语言,支持VC6.0、VB6.0、Qt、.Net等平台,支持Windows、Linux、WinCE、iMac等操作系统。

  在《运动控制卡应用开发教程之ROS(上)》里,我们讲了ROS应用背景,以及Ubuntu18.04安装ROS Melodic详细过程,并且通过ROS编程案例——消息发布和订阅,来详细说明正运动技术运动控制卡ROS的应用开发。

  从上篇中,我们得知,ROS作为一个灵活的操作系统,系统上的节点具有很大的随意性,它们可以位于不同的计算机上,甚至可以位于不同的网络上。我们可以使用一个Arduino作为一个节点发布信息,使用一台笔记本电脑作为一个节点订阅上述信息以及使用一台手机作为一个节点驱动电机等。上述灵活性使得ROS可以适应很多不同场合的应用。

  ROS具有分布式点对点设计、多语言支持、精简与集成、工具包丰富以及免费并且开源等特点。ROS系统正在机器人行业一步一步的主导中国市场。

  本篇文章我们主要讲配置正运动技术动态链接库环境以及运动控制卡在ROS下的单轴运动。

一 配置正运动技术动态链接库环境

1.添加动态链接库

  在程序包目录zmotion(catkin_ws/src/zmotion/)下新建文件夹lib,存放动态链接库libzmotion.so。

277dff98a983635482500d038f109b35.png
a713ea32a8bb7d5f362f8e86f1e09472.png

  在CMakeLists.txt中添加第三方库路径(build下):

  link_directories(

  lib

${catkin_LIB_DIRS}

  )

  并在CMakeLists.txt文件中链接动态链接库(调用链接库时文件名去掉lib和.so):

target_link_libraries(talker ${catkin_LIBRARIES} zmotion)

2.添加库函数zmcaux.cpp、zmotion.h、zmcaux.h

  添加zmcaux.cpp文件到catkin_ws/src/zmotion/src目录下:

eeafecf775f0742cf8d184412785a491.png

  添加头文件zmotion.h、zmcaux.h到catkin_ws/src/zmotion/include/ zmotion目录下:

4ab3be2965c5c1bf2e2a8b2aab8e0196.png

  并在CMakeLists.txt中添加这三个库文件:

  add_executable(talker

  src/talker.cpp

  src/zmcaux.cpp

include/zmotion/zmotion.h

include/zmotion/zmcaux.h

  )

  修改头文件引用,如下图所示(要填include文件的相对地址,zmotion为程序包名)

  #include "zmotion/zmotion.h"

  #include "zmotion/zmcaux.h"

623df1c3a77ad77ffc1272806f7e1769.png

二 ROS下的单轴运动

  这部分主要讲运动控制卡在ROS下的单轴运动。

  talker节点实现轴0的运动,并将其位置实时发送给listener节点,修改talker.cpp如下:

1.添加句柄和头文件

 #include "zmotion/zmotion.h"

  #include "zmotion/zmcaux.h"

  ZMC_HANDLE g_handle=NULL;

2.通过EtherNET链接运动控制卡

  ZMC_LinuxLibInit();

//以太网(Ethernet)链接

  char ipaddr[16] = {"192.168.0.11"};

  int x =ZAux_OpenEth(ipaddr,&g_handle); //***ZMC

  ROS_INFO("以太网链接控制器:%d",x);//返回0则连接成功

3.实现单轴运动

  ZAux_Direct_SetSpeed(g_handle, 0, 200); //设置轴0运动速度为200units/s

  ZAux_Direct_SetAccel(g_handle, 0, 2000); //设置轴0加速度为2000units/s/s

  ZAux_Direct_SetDecel(g_handle, 0, 2000); //设置轴0减速度为2000units/s/s

  ZAux_Direct_SetSramp(g_handle, 0, 100); //设置轴0 S曲线时间100ms

  ZAux_Direct_Single_Move(g_handle, 0, 300); //轴0 相对与当前位置运动100 units

 4.将实时位置发送给listener节点

  float piValue;

  while (ros::ok())

  {

  std_msgs::Float64 msg;

  ZAux_Direct_GetMpos(g_handle, 0, & piValue);//获取时候

  msg.data = piValue;

//输出,用来替代prinf/cout

  ROS_INFO("Position is: %f", msg.data);

  chatter_pub.publish(msg);

  ros::spinOnce();

//休眠,来使发布频率为10Hz

  loop_rate.sleep();

  }

5.编译

  cd ~/catkin_ws/

  catkin_make

6.运行程序

  //打开一个新终端

  roscore

  //打开另一个新终端

  cd ~/catkin_ws/

  rosrun zmotion talker

  //打开另一个新终端

  cd ~/catkin_ws/

  rosrun zmotion listener

运行效果如下,实时输出位置:

42f654d62057aff304f1fc4a15956576.png

  此外,我们在上位机上的示波器上可以看见,轴0做S曲线运动:

3a13515f5886607bdbd70d276237fab0.png

【参考文献】

  1.ROS Wiki:http://wiki.ros.org/

  2.正运动技术:ZMotion PC函数库编程手册

  3.https://blog.csdn.net/weixin_42544625/article/details/86802753

  本次,正运动技术的《运动控制卡应用开发教程之ROS(下)》就分享到这里,更多精彩内容请关注“正运动小助手”公众号。

  本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有