亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > EtherCAT運動控制器在ROS上的應用(上)

EtherCAT運動控制器在ROS上的應用(上)

時間:2024-03-05 16:53:17來源:深圳市正運動技術有限公司

導語:?本文以正運動技術EtherCAT運動控制器ZMC432和ZMC408CE為例,介紹正運動技術運動控制器在ROS上的應用開發。

  本文以正運動技術EtherCAT運動控制器ZMC432和ZMC408CE為例,介紹正運動技術運動控制器在ROS上的應用開發。

  在正式學習之前,我們先了解一下正運動技術的EtherCAT運動控制器ZMC432和ZMC408CE。這兩款產品分別是32軸,8軸EtherCAT運動控制器。

  ZMC432功能簡介

  ZMC432是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運行的場合。

運動控制

  ZMC432最多可支持32軸運動控制,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。

  ZMC432支持32軸脈沖輸入與編碼器反饋,通用IO包含24路輸入口和12個輸出口;2路AD,2路DA;其中特定輸出口支持高速PWM控制。

  ZMC432通過EtherCAT和CAN總線進行硬件資源擴展,可擴展至4096路輸入和4096路輸出。

運動控制

  ZMC408CE功能簡介

  ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運行的場合。

運動控制

  ZMC408CE支持8軸運動控制,最多可擴展至32軸,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。

  ZMC408CE支持8軸運動控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速IO,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。

  ZMC408CE支持8個通道的硬件比較輸出、硬件定時器、運動中精準輸出,還支持8通道PWM輸出,對應的輸出口為OUT0-7,支持8個通道同時觸發硬件比較輸出。

運動控制

  ZMC408CE可靈活進行硬件資源擴展,通過CAN或EtherCAT總線可擴展至4096個輸入和4096個輸出。

  →ZMC432,ZMC408CE均使用同一套API函數,均支持C、C++、C#、LabVIEW、Python、Delphi等開發語言,支持VC6.0、VB6.0、Qt、.Net等平臺,支持Windows、Linux、WinCE、iMac等操作系統。

運動控制

  01、ROS應用背景

  ROS(robot operating system)是用于機器人的一種開源后操作系統(次級操作系統)。首要設計目標是在機器人研發領域提高代碼復用率。

  ROS是一種分布式處理框架(又名Nodes)。這使可執行文件能被單獨設計,并且在運行時松散耦合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便于共享和分發。

  ROS還支持代碼庫的聯合系統。使得協作亦能被分發。這種從文件系統級別到社區一級的設計讓獨立地決定發展和實施工作成為可能。上述所有功能都能由ROS的基礎工具實現。

  簡單來說,ROS作為一個靈活的操作系統,系統上的節點具有很大的隨意性,它們可以位于不同的計算機上,甚至可以位于不同的網絡上。我們可以使用一個Arduino作為一個節點發布信息,使用一臺筆記本電腦作為一個節點訂閱上述信息以及使用一臺手機作為一個節點驅動電機等。

  上述靈活性使得ROS可以適應很多不同場合的應用。

運動控制

  ROS的主要特點可以歸納為以下幾條

  1.分布式點對點設計ROS的點對點設計以及服務和節點管理器等機制可以分散由計算機視覺和語音識別等功能帶來的實時計算壓力,能夠適應多機器人遇到的挑戰。

運動控制

  2.多語言支持

  ROS支持許多種不同的語言,例如C++、Python、Octave和LISP,也包含其他語言的多種接口實現。

運動控制

  3.精簡與集成

  ROS建立的系統具有模塊化的特點,各模塊中的代碼可以單獨編譯,而且編譯使用的CMake工具使它很容易的就實現精簡的理念。

  ROS基本將復雜的代碼封裝在庫里,只是創建了一些小的應用程序為ROS顯示庫的功能,就允許了對簡單的代碼超越原型進行移植和重新使用。

  4.工具包豐富

  為了管理復雜的ROS軟件框架,我們利用了大量的小工具去編譯和運行多種多樣的ROS組建,從而設計成了內核,而不是構建一個龐大的開發和運行環境。

運動控制

  5.免費并且開源

  ROS所有的源代碼都是公開發布的。

  ROS在行業中的一些應用

  近年來,國內外機器人企業、無人駕駛企業,無人機企業(大疆無人機)都紛紛加入ROS陣營。且在各大招聘中,不管是騰訊、小馬智行、阿里巴巴的菜鳥網絡、百度Apollo等,招聘無人駕駛規劃算法工程師、自主導航工程師、機器人感知算法工程師、系統平臺研發架構師等崗位時,均要求“熟悉ROS”或者“具備ROS開發經驗者優先”。從這些我們可以看出來ROS系統的發展趨勢,正在機器人行業一步一步的主導中國市場。以下是一些ROS典型應用場景:

       1.機器人控制器中的大佬人物 - KEBA,他們的控制器已經支持ROS。

運動控制

  2.美國NASA基于ROS開發的Robonaut 2已經在國際空間站里干活了。

運動控制

  3.百度apollo無人車的底層是基于ROS開發的,差點改成了ROS 2,可以在github上找到(apollo-platform)。

運動控制

  4.ROS-I最近正準備和微軟、寶馬合作,開發一套自動化解決方案(參考:A ROS-Industrial Collaboration with Microsoft and BMW)。

運動控制

  5.許多工業機械臂已經開始使用ROS系統,其中2017年底ROS-I官方發布的五周年視頻不乏四大家族中的機器人。下圖的庫卡youbot機器人就是采用ROS系統開發。

運動控制

  02軟件安裝過程此部分主要講Ubuntu18.04安裝ROS Melodic詳細過程(本文以Ubuntu18.04為例,其他同理,并不影響運動控制器的運用)。

  1.設置sources.list

  $ sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

  2.設置key(公鑰已更新)

  $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

運動控制

  3.更新package(時間有點長,耐心等待)

  $ sudo apt-get update

  此時可能會遇到以下問題:

運動控制

       解決辦法如下,在終端輸入:

  $sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F42ED6FBAB17C654$ sudo apt-get update

運動控制

  當出現Reading package lists… Done說明更新完成。

  4.安裝ROS melodic完整版

  $ sudo apt-get install ros-melodic-desktop-full

  5.初始化rosdep

  $sudo rosdep init$rosdep update$echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc$ source ~/.bashrc

  效果示意圖:

運動控制

運動控制

  輸入指令sudo rosdep init若遇到以下問題:

  (1)sudo : rosdep : command not found問題

  在終端輸入:sudo apt install rospack-tools

  (2)ERROR : cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.

  ①在終端輸入:sudo gedit / etc / hosts,打開hosts文件,內容如下;

運動控制

  ②將:199.232.28.133 raw.githubusercontent.com添加在文件中,添加后的文件如下;

運動控制

  ③然后保存文件后退出;

運動控制

  ④在終端執行:sudo rosdep init,問題解決。

  6.測試ROS是否安裝成功

  $ roscore

  成功打開如下圖所示:

運動控制

  03、ROS編程案例這部分主要講“消息發布”和“訂閱”兩個ROS編程案例。1.創建一個ROS工作空間。

  $mkdir -p ~/catkin_ws/src$cd ~/catkin_ws/$ catkin_make

  2.創建ROS程序包(zmotion為程序包名,也可以定義為其他)。

  ·

  $cd ~/catkin_ws/src$catkin_create_pkg zmotion std_msgs roscpp$cd ~/catkin_ws$ catkin_make

  3.在創建完程序包后,每次運行需要source ~ / catkin_ws / devel / setup.bash,否則無法找到文件。解決每次都要source方法:

  ·

  在終端輸入:$gedit ~/.bashrc在文件末尾添加并保存:$ source ~/catkin_ws/devel/setup.bash

  4.新建節點文件。在zmotion包目錄中創建一個src目錄:

  ·

  $cd ~/catkin_ws/src/zmotion //進入zmotion程序包路徑下$mkdir -p src //新建src文件夾,用來存放c++程序$cd src/ //進入src文件夾路徑下$touch talker.cpp //新建發布消息節點cpp文件$ touch listener.cpp //新建訂閱消息節點cpp文件

  5.撰寫發布節點(talker.cpp)。

  實現功能:

  (1)初始化ROS系統;

  (2)在chatter topic上發布std_msgs/Float64消息;

  (3)以每秒10次頻率發布消息。

  ·

  #include "ros/ros.h"#include "std_msgs/Float64.h"#include int main(int argc, char **argv){ //初始化ROS,名稱重映射(唯一),必須為base name,不含/ ros::init(argc, argv, "talker"); //為進程的節點創建一個句柄,第一個創建的NodeHandle初始化節點 ros::NodeHandle n; //告訴主機要在chatter topic上發布一個std_msgs消息 //主機會訂閱所有chatter topic節點,參數表示發布隊列的大小(先進先出) ros::Publisher chatter_pub = n.advertise("chatter", 1000); ros::Rate loop_rate(10); //自循環頻率 int count = 0; while (ros::ok()) { std_msgs::Float64 msg; msg.data = count*1.0; //輸出,用來替代prinf/cout ROS_INFO("Position is: %f", msg.data); chatter_pub.publish(msg); ros::spinOnce(); //休眠,來使發布頻率為10Hz loop_rate.sleep(); ++count; } return 0;}

  6.撰寫訂閱節點(listener.cpp)。實現功能:(1)初始化ROS系統;(2)訂閱chatter topic消息;(3)進入自循環,等待消息到達;(4)消息到達,調用chatterCallback()函數。

  ·

  #include "ros/ros.h"#include "std_msgs/Float64.h"http://回調函數void chatterCallback(const std_msgs::Float64::ConstPtr& msg){ ROS_INFO("I heard: %f", msg->data);}int main(int argc, char **argv){ ros::init(argc, argv, "listener"); ros::NodeHandle n; //告訴master需要訂閱chatter topic消息 ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); ros::spin(); //自循環 return 0;}

  7.修改CMakeLists.txt。

  (1)打開程序包zmotion(catkin_ws / src / zmotion)路徑,找到CMakeLists.txt文件。

運動控制

  (2) 最低版本修改為2.8.3。

  ·

  cmake_minimum_required(VERSION 2.8.3)

  (3) 找到find_package,添加依賴包message_generation。

  ·

  find_package(catkin REQUIRED COMPONENTS roscpp std_msgs message_generation)

  (4)確保generate_message被調用。

  ·

  generate_messages( DEPENDENCIES std_msgs)

  (5)確保在運行時依賴中也添加了該消息的依賴。

  ·

  catkin_package(# INCLUDE_DIRS include# LIBRARIES beginner_tutorials# CATKIN_DEPENDS roscpp std_msgs# DEPENDS system_lib CATKIN_DEPENDS message_runtime)

  (6)修改build下的設置

運動控制

  ①將include_directories中include解注釋。

運動控制

  include_directories( include ${catkin_INCLUDE_DIRS})

  ②在指定位置添加下列代碼下面的代碼可以任意添加在build中,我為了美觀所以添加在相應位置的,只要在build中添加都生效。

  ·

  add_executable(talker src/talker.cpp)add_executable(listener src/listener.cpp)add_dependencies(talker $zmotion_generate_messages_cpp)//zmotion為程序包名target_link_libraries(talker ${catkin_LIBRARIES})target_link_libraries(listener ${catkin_LIBRARIES})

運動控制

  (7)最后,列出完整的CMakeLists.txt。

  ·

  cmake_minimum_required(VERSION 2.8.3)project(zmotion)find_package(catkin REQUIRED COMPONENTS roscpp std_msgs message_generation)## Generate added messages and services with any dependencies listed heregenerate_messages( DEPENDENCIES std_msgs)##################################### catkin specific configuration #####################################catkin_package(# INCLUDE_DIRS include# LIBRARIES zmotion# CATKIN_DEPENDS roscpp std_msgs# DEPENDS system_libCATKIN_DEPENDS message_runtime)############# Build ############### Specify additional locations of header files## Your package locations should be listed before other locationsinclude_directories( include ${catkin_INCLUDE_DIRS})## Declare a C++ executable## With catkin_make all packages are built within a single CMake context## The recommended prefix ensures that target names across packages don't collideadd_executable(talker src/talker.cpp)add_executable(listener src/listener.cpp)## Rename C++ executable without prefixadd_dependencies(talker $zmotion_generate_messages_cpp)## Specify libraries to link a library or executable target againsttarget_link_libraries(talker ${catkin_LIBRARIES})target_link_libraries(listener ${catkin_LIBRARIES})

  8.修改package.xml文件。

  ·

  message_generationmessage_generationmessage_runtime

運動控制

  9.編譯。

  ·

  $ cd ~/catkin_ws$ catkin_make

  10.運行程序。(1)打開一個新終端,啟動ROS系統;

  ·

  $ roscore

  (2)打開一個新終端,運行發布節點;

  ·

  $ cd ~/catkin_ws //進入工作控件目錄下$ rosrun zmotion talker //運行發布節點程序

  (3)打開一個新終端,運行訂閱節點;

  ·

  $ cd ~/catkin_ws$ rosrun zmotion listener

  (4)結果。運行發布節點程序的結果:

  ·

  [INFO] [WallTime: 1314931831.774057] Position is: 1.000000[INFO] [WallTime: 1314931832.775497] Position is: 2.000000[INFO] [WallTime: 1314931833.778937] Position is: 3.000000[INFO] [WallTime: 1314931834.782059] Position is: 4.000000[INFO] [WallTime: 1314931835.784853] Position is: 5.000000

  運行訂閱節點程序的結果:

  ·

  [INFO] [WallTime: 1314931970.262246] I heard: 1.000000[INFO] [WallTime: 1314931971.266348] I heard: 2.000000[INFO] [WallTime: 1314931972.270429] I heard: 3.000000[INFO] [WallTime: 1314931973.274382] I heard: 4.000000[INFO] [WallTime: 1314931974.277694] I heard: 5.000000

  本次,正運動技術EtherCAT運動控制器在ROS上的應用(上),就分享到這里。

  更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。

  本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。


標簽: 運動控制

點贊

分享到:

上一篇:分揀機器人的工作原理是什么?...

下一篇:永磁電機中的磁材選擇

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 诏安县| 勐海县| 明水县| 宣城市| 崇仁县| 昭通市| 桑日县| 澳门| 邓州市| 柳江县| 额济纳旗| 婺源县| 平利县| 吴旗县| 彭山县| 新田县| 东海县| 鞍山市| 尚义县| 乌什县| 周口市| 彰武县| 筠连县| 千阳县| 新巴尔虎右旗| 泰安市| 凉城县| 扶绥县| 花莲市| 南投县| 博客| 宜兰县| 怀集县| 延津县| 龙山县| 锡林郭勒盟| 大新县| 台州市| 弥勒县| 辽阳县| 花垣县|