色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將python文件導(dǎo)入到ROS系統(tǒng)中

大象機(jī)器人 ? 來(lái)源:大象機(jī)器人 ? 2025-02-11 11:08 ? 次閱讀

本文通過(guò)使用myCobot機(jī)械臂進(jìn)行QR碼視覺(jué)追蹤的實(shí)踐案例分析,介紹如何將 python 文件導(dǎo)入到 ROS 系統(tǒng)中。

一、引言

在過(guò)去的項(xiàng)目中,我主要使用 Python 獨(dú)立實(shí)現(xiàn)各種功能。然而,隨著機(jī)器人操作系統(tǒng) (ROS) 的日益普及,我逐漸意識(shí)到將這些項(xiàng)目集成到 ROS 中的眾多優(yōu)勢(shì)。ROS 提供的仿真環(huán)境不僅可以提高效率,還可以為項(xiàng)目測(cè)試提供安全且可擴(kuò)展的平臺(tái)。因此,在本文中,我將分享將基于 Python 的機(jī)械臂二維碼跟蹤系統(tǒng)引入 ROS 并在仿真環(huán)境中運(yùn)行該項(xiàng)目的過(guò)程。

二、項(xiàng)目準(zhǔn)備
1、硬件組件
M5Stack ESP32 基礎(chǔ)核心物聯(lián)網(wǎng)開(kāi)發(fā)套件
Elephant Robotics myCobot-6 DOF 協(xié)作機(jī)器人

Raspberry Pi 4 B 型
2、軟件應(yīng)用程序和在線服務(wù)
ROS 機(jī)器人操作系統(tǒng)

3、手動(dòng)工具和制造機(jī)


大象機(jī)器人 myCobot 280 M5Stack 2023

4、環(huán)境設(shè)置
對(duì)于本項(xiàng)目,建議使用以下開(kāi)發(fā)環(huán)境和依賴版本:

● 操作系統(tǒng):Ubuntu 20.04 LTS

● ROS 版本:Noetic
● Python 版本:Python 3.8 或更高版本
● 庫(kù)版本要求:pymycobot 3.6 或更高版本
安裝關(guān)鍵依賴項(xiàng)
在終端中運(yùn)行以下命令以安裝必要的 Python 庫(kù)。

pip install stag-python
pip install opencv-python
pip install scipy
pip install numpy
pip install pymycobo

三、項(xiàng)目運(yùn)行
在 ROS 中創(chuàng)建 Workspace 和 Package
1.打開(kāi)終端并創(chuàng)建一個(gè)名為 catkin_ws 的新 ROS 工作區(qū):
mkdir -p ~/catkin_ws/src

2. 進(jìn)入 workspace 目錄并初始化:

cd ~/catkin_ws
catkin_make

3. 設(shè)置環(huán)境變量以確保 ROS 可以找到工作區(qū)

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source~/.bashrc


提示:此配置將在每次打開(kāi)新終端時(shí)自動(dòng)加載工作區(qū)設(shè)置。


創(chuàng)建 ROS 包


1. 在 src 目錄中,創(chuàng)建一個(gè)名為 qr_tracking 的新 ROS 包,其中包含所需的依賴項(xiàng)(例如 rospy 和 std_msgs):

cd ~/catkin_ws/src
catkin_create_pkg qr_tracking rospy std_msgs


2.驗(yàn)證包創(chuàng)建。qr_tracking 目錄應(yīng)包含標(biāo)準(zhǔn)的 ROS 包結(jié)構(gòu),包括 CMakeLists.txt 和 package.xml 文件。


3. 更新依賴項(xiàng):打開(kāi) package.xml 文件并確保包含以下依賴項(xiàng):



  mycobot_280
  0.3.0
  The mycobot 280 package
 
  ZhangLijun
  ZhangLijun
 
  BSD
 
  https://github.com/elephantrobotics/mycobot_ros
 
  catkin
 
  roscpp
  rospy
  std_msgs
  actionlib
  mycobot_description
  mycobot_communication
 
  mycobot_communication
  mycobot_description
 
  roscpp
  rospy
  std_msgs
  actionlib
  joint_state_publisher
  joint_state_publisher_gui
  robot_state_publisher
  xacro
  joy
  rviz
  controller_manager
  python-tk
  mycobot_description
  mycobot_communication
 
  
     
  


4. 重新構(gòu)建工作區(qū)以應(yīng)用 ROS 包配置更新:

cd ~/catkin_ws
catkin_make

確保在 ROS 包中正確配置了機(jī)械臂的 URDF 文件,以準(zhǔn)確顯示模型。
將 Python 文件導(dǎo)入 ROS 包
設(shè)置 scripts 目錄
在您的 ROS 包“qr_tracking”中,創(chuàng)建一個(gè)名為“scripts”的文件夾來(lái)存儲(chǔ) Python 腳本。使用以下命令:
cd ~/catkin_ws/src/qr_tracking
mkdir scripts

將你的 Python 文件(比如 'camera_detect.py'、'uvc_camera.py'、'marker_utils.py' 等)移動(dòng)到這個(gè) 'scripts' 目錄:

mv /path/to/camera_detect.py ~/catkin_ws/src/qr_tracking/scripts/
mv /path/to/uvc_camera.py ~/catkin_ws/src/qr_tracking/scripts/
mv /path/to/marker_utils.py ~/catkin_ws/src/qr_tracking/scripts/

修改 Python 文件以實(shí)現(xiàn) ROS 兼容性
為確保 Python 腳本與 ROS 兼容,您需要進(jìn)行一些調(diào)整,例如導(dǎo)入 ROS 庫(kù)、初始化 ROS 節(jié)點(diǎn)以及定義消息發(fā)布者/訂閱者。以 'camera_detect.py' 為例,以下是所需的主要修改:

1. 導(dǎo)入 ROS 庫(kù)

在 Python 文件的頂部,添加 'rospy' 的導(dǎo)入和任何必要的 ROS 消息類型:
import rospy
   from std_msgs.msg import String

2. 初始化 ROS 節(jié)點(diǎn)

在代碼開(kāi)始時(shí)初始化一個(gè) ROS 節(jié)點(diǎn):
rospy.init_node('camera_detection_node', anonymous=True)
3. 定義 Topic 發(fā)布者/訂閱者 根據(jù)要求,定義發(fā)布者或訂閱者。例如,要發(fā)布 QR 碼檢測(cè)結(jié)果:
pub = rospy.Publisher('qr_detection', String, queue_size=10)
   rate = rospy.Rate(10)  # 10 Hz

然后,您可以設(shè)置一個(gè)函數(shù)來(lái)檢測(cè) QR 碼并發(fā)布結(jié)果。例如:

# Assuming there is a function to detect QR codes
   def detect_qr_code():
       while not rospy.is_shutdown():
           # Detection logic here
           detection_result = "QR code detected"  # This is the detection result
           rospy.loginfo(detection_result)
           pub.publish(detection_result)
           rate.sleep()
代碼示例

下面是一個(gè)簡(jiǎn)化的代碼片段,顯示了如何在 'camera_detect.py' 中發(fā)布 QR 碼檢測(cè)結(jié)果:
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
 
def detect_qr_code():
    pub = rospy.Publisher('qr_detection', String, queue_size=10)
    rospy.init_node('camera_detection_node', anonymous=True)
    rate = rospy.Rate(10)  # 10 Hz
 
    while not rospy.is_shutdown():
        # Replace with actual detection logic
        detection_result = "QR code detected"  # Simulated detection result
        rospy.loginfo(detection_result)
        pub.publish(detection_result)
        rate.sleep()
 
if __name__ == '__main__':
    try:
        detect_qr_code()
    except rospy.ROSInterruptException:
        pass
> 注意:通過(guò)運(yùn)行 'chmod +x ~/catkin_ws/src/qr_tracking/scripts/*.py' 確保 Python 文件是可執(zhí)行的。 配置 'CMakeLists.txt' 文件
CMake 配置概述
在 ROS 中,“CMakeLists.txt”文件是每個(gè)包的核心配置文件,指定如何編譯和安裝包中的文件。它包括編譯器選項(xiàng)、庫(kù)依賴項(xiàng)和安裝路徑等配置詳細(xì)信息。為了讓 Python 腳本充當(dāng) ROS 節(jié)點(diǎn),我們需要對(duì)此文件進(jìn)行一些必要的調(diào)整。
修改 'CMakeLists.txt'
要使 Python 腳本在 ROS 中可執(zhí)行,請(qǐng)執(zhí)行以下步驟:

1. 添加 Catkin 構(gòu)建依賴
確保 'CMakeLists.txt' 包含一個(gè) 'find_package' 語(yǔ)句來(lái)定位 'catkin' 和必要的 ROS 依賴項(xiàng),例如 'rospy' 和 'std_msgs'。下面是一個(gè)示例:
cmake_minimum_required(VERSION 2.8.3)
   project(mycobot_280)
   add_compile_options(-std=c++11)
 
   ## Find catkin and any catkin packages
   find_package(catkin REQUIRED COMPONENTS
     roscpp
     rospy
     std_msgs
     actionlib
     image_transport
     cv_bridge
   )
2. 安裝 Python 腳本 使用 'catkin_install_python' 指定 Python 腳本的安裝路徑,并確保它們具有可執(zhí)行權(quán)限。假設(shè)您的 Python 腳本位于 'scrip
catkin_install_python(PROGRAMS
     scripts/follow_display.py
     scripts/slider_control.py
     scripts/teleop_keyboard.py
     scripts/listen_real.py
     scripts/listen_real_of_topic.py
     scripts/simple_gui.py
     scripts/follow_display_gripper.py
     scripts/slider_control_gripper.py
     scripts/listen_real_gripper.py
     scripts/detect_stag.py
     DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
   )
ts' 目錄中,請(qǐng)將以下部分添加到 'CMakeLists.txt': 此命令將 Python 腳本安裝到 ROS 包的 binary 目錄下,并確保它們?cè)诰幾g后具有可執(zhí)行權(quán)限。 3. 添加依賴項(xiàng) 在調(diào)用 'catkin_package()' 之前,請(qǐng)聲明依賴項(xiàng)以確保 ROS 正確解析它們。例如:
catkin_package(
     CATKIN_DEPENDS std_msgs actionlib
   )
4. 完整示例 以下是 'CMakeLists.txt' 文件的示例配置:
cmake_minimum_required(VERSION 2.8.3)
   project(mycobot_280)
   add_compile_options(-std=c++11)
 
   ## Find catkin and any catkin packages
   find_package(catkin REQUIRED COMPONENTS
     roscpp
     rospy
     std_msgs
     actionlib
     image_transport
     cv_bridge
   )
 
   ## Declare a catkin package
   catkin_package(
     CATKIN_DEPENDS std_msgs actionlib
   )
 
   ## Include directories
   include_directories(include ${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
 
   ## Install Python scripts
   catkin_install_python(PROGRAMS
     scripts/follow_display.py
     scripts/slider_control.py
     scripts/teleop_keyboard.py
     scripts/listen_real.py
     scripts/listen_real_of_topic.py
     scripts/simple_gui.py
     scripts/follow_display_gripper.py
     scripts/slider_control_gripper.py
     scripts/listen_real_gripper.py
     scripts/detect_stag.py
     DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
   )
 
   ## Install launch and config directories
   install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
     PATTERN "setup_assistant.launch" EXCLUDE)
   install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
 
   ## OpenCV requirements
   find_package(OpenCV REQUIRED)
   add_executable(opencv_camera src/opencv_camera)
   target_link_libraries(opencv_camera ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
   add_executable(camera_display src/camera_display)
   target_link_libraries(camera_display ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})

通過(guò)這些修改,Python 腳本將成為 ROS 包的一部分,被賦予可執(zhí)行權(quán)限,并且可以使用 ROS 工具(如 'rosrun')運(yùn)行。
本節(jié)對(duì)于指導(dǎo)用戶如何在 ROS 中編譯、啟動(dòng)和驗(yàn)證項(xiàng)目的功能至關(guān)重要。
6. 編譯和運(yùn)行
編譯工作區(qū)
配置 ROS 包的所有方面后,您需要編譯工作區(qū)以生成和配置必要的資源。
1. 確保您位于工作區(qū)的根目錄中:
cd ~/catkin_ws


2. 運(yùn)行 'catkin_make' 編譯工作區(qū):

catkin_make

3.如果編譯成功,您應(yīng)該會(huì)看到類似于以下內(nèi)容的輸出:

[100%] Built target qr_tracking

啟動(dòng) Node



編譯完成后,您可以使用 rosrun 啟動(dòng) QR 碼跟蹤節(jié)點(diǎn)。


1. 確保已加載工作區(qū)環(huán)境變量,然后啟動(dòng)仿真模型:

cd ~/catkin_ws
   source devel/setup.bash
   roslaunch mycobot_280 detect_marker_with_topic.launch port:=/dev/ttyUSB0 baud:=115200

911deb48-e820-11ef-9310-92fbcf53809c.png


2. 使用 'rosrun' 啟動(dòng) 'camera_detect.py' 腳本: rosrun qr_tracking camera_detect.py
您應(yīng)該會(huì)看到指示 ROS 節(jié)點(diǎn)已初始化的輸出,并且它將開(kāi)始發(fā)布 QR 碼檢測(cè)結(jié)果。
GitHub:
6.2.3 rivz Introduction and Use · GitBook

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    212

    文章

    29240

    瀏覽量

    210761
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2921

    文章

    45657

    瀏覽量

    384715
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85782
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    283

    瀏覽量

    17468
  • 大象機(jī)器人
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    9

原文標(biāo)題:QR 碼視覺(jué)追蹤案例分享:如何輕松將Python 集成到 ROS 中

文章出處:【微信號(hào):ElephantRobotics,微信公眾號(hào):大象機(jī)器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    TARGET3001!用法篇-如何將Altium文件導(dǎo)入到TARGET

    大概講一下如何將Altium文件導(dǎo)入到TARGET 3001!,所以真正使用一段時(shí)間你就會(huì)發(fā)現(xiàn)它確實(shí)是一款性價(jià)比很高的EDA軟件! ①首先,
    發(fā)表于 02-21 10:11

    新手求教:請(qǐng)高手指點(diǎn)如何將.DXF文件導(dǎo)入到Allegro pcb aditor? 是否還可以導(dǎo)入

    請(qǐng)高手指點(diǎn)如何將.DXF文件導(dǎo)入到Allegro pcb aditor? 是否還可以導(dǎo)入其他格式的板框
    發(fā)表于 12-22 22:58

    如何將solidworks文件導(dǎo)入到labview

    最近正在使用labview,請(qǐng)問(wèn)如何將已建模的solidworks文件導(dǎo)入到labview并顯示
    發(fā)表于 09-09 16:54

    如何將cad畫(huà)好的圖導(dǎo)入到labview

    如何將cad畫(huà)好的圖導(dǎo)入到labview
    發(fā)表于 11-06 14:33

    請(qǐng)問(wèn)怎樣講一個(gè)波形圖的圖像或者一個(gè)多列列表導(dǎo)入到EXCEL文件

    問(wèn)題:如何將一個(gè)波形圖的圖像導(dǎo)入到EXCEL文件如何將一個(gè)多列列表框導(dǎo)入到EXCEL
    發(fā)表于 01-25 16:50

    如何將PADS的原理圖清晰的導(dǎo)入到word

    如何將原理圖導(dǎo)入到word我試了試 截圖一點(diǎn)都不清楚,求大神啊
    發(fā)表于 05-17 14:04

    【案例9】如何將HFSS模型導(dǎo)入到ADS生成可加工的Gerber文件

    Gerber或者其他可以用于加工的文件。接下來(lái),我們學(xué)習(xí)如何將HFSS模型導(dǎo)入到ADS以生成可用于加工的Gerber
    發(fā)表于 08-03 14:32

    如何將ADI公司的Spice模型導(dǎo)入到Multisim仿真軟件呢?

    請(qǐng)問(wèn)如何將ADI公司的Spice模型導(dǎo)入到Multisim仿真軟件呢? 當(dāng)我導(dǎo)入時(shí)為什么找不到該文件呢?
    發(fā)表于 11-17 06:20

    如何將AD庫(kù)轉(zhuǎn)換導(dǎo)入到PADS中使用

    想學(xué)習(xí)pads,學(xué)會(huì)如何將AD庫(kù)轉(zhuǎn)換導(dǎo)入到PADS中使用,方便自己
    發(fā)表于 12-11 16:46 ?0次下載

    如何使用pythontxt文件導(dǎo)入到mysql的應(yīng)用實(shí)例

    實(shí)現(xiàn)思想: 1、python 自動(dòng)完成在txt 文件中加入自定義標(biāo)簽(簡(jiǎn)單的txt 文件可以不需要) ,2、python 自動(dòng)完成含有自定
    發(fā)表于 09-09 17:50 ?12次下載
    如何使用<b class='flag-5'>python</b><b class='flag-5'>將</b>txt<b class='flag-5'>文件</b><b class='flag-5'>導(dǎo)入到</b>mysql的應(yīng)用實(shí)例

    HLS導(dǎo)出的.xo文件如何導(dǎo)入到Vitis里面

    Q1 HLS導(dǎo)出的.xo文件如何導(dǎo)入到Vitis里面?需要把.xo文件解壓,然后把文件導(dǎo)入到Vitis Kernel/src
    的頭像 發(fā)表于 08-26 17:03 ?2823次閱讀

    Python腳本集成GUI工具包

    本篇將此腳本進(jìn)行優(yōu)化,集成 Python 的 GUI 工具包(Tkinter),并且可以結(jié)果數(shù)據(jù)導(dǎo)入到 Excel 和 TXT
    的頭像 發(fā)表于 02-15 16:40 ?1372次閱讀

    SNP Glue:SAP數(shù)據(jù)導(dǎo)入到其他系統(tǒng)的多種方式

    智能。本文介紹幾種常見(jiàn)的方式,幫助企業(yè)了解如何將SAP數(shù)據(jù)導(dǎo)入到其他系統(tǒng)。? 批量導(dǎo)出與導(dǎo)入
    的頭像 發(fā)表于 10-07 09:20 ?803次閱讀

    如何將Klayout Cell動(dòng)態(tài)導(dǎo)入Lumerical Multiphysics

    在本例,演示了如何將KLayout Library Cell動(dòng)態(tài)導(dǎo)入 Lumerical 以執(zhí)行設(shè)計(jì)掃描和表征。該功能支持動(dòng)態(tài)導(dǎo)入到Lumerical FDTD、MODE以及Mult
    的頭像 發(fā)表于 01-22 14:27 ?971次閱讀
    <b class='flag-5'>如何將</b>Klayout Cell動(dòng)態(tài)<b class='flag-5'>導(dǎo)入</b>Lumerical Multiphysics

    TARGET3001!用法篇-如何將Altium文件導(dǎo)入到TARGET

    的,如果可以把以前用AD做的文件直接導(dǎo)入到這款軟件中使用,這確實(shí)能給我們也帶來(lái)很多方便。通過(guò)了解部分資料,我大概講一下如何將Altium文件導(dǎo)入到
    的頭像 發(fā)表于 02-20 14:38 ?854次閱讀
    TARGET3001!用法篇-<b class='flag-5'>如何將</b>Altium<b class='flag-5'>文件</b><b class='flag-5'>導(dǎo)入到</b>TARGET<b class='flag-5'>中</b>
    主站蜘蛛池模板: 高h超辣bl文| 日日噜噜噜噜夜夜爽亚洲精品 | 国产午夜不卡 | 免费夜色污私人影院网站 | 麻豆国产成人AV在线 | 校园刺激全黄H全肉细节文 校园纯肉H教室第一次 | 飘雪韩国在线观看免费高清完整版 | 国内精品欧美久久精品 | 日本熟妇乱妇熟色A片蜜桃亚洲 | 国产午夜精品理论片在线 | 肉奴隷 赤坂丽在线播放 | 国产成人精视频在线观看免费 | 国产免费福利在线视频 | 少妇精品久久久一区二区三区 | 91天堂国产在线 在线播放 | 国自产拍 高清精品 | 久久综合久久伊人 | 拔萝卜在线高清观看视频 | xx顶级欧美熟妞xxhd | 久久精品18 | 97人妻中文字幕免费视频 | 在线精彩视频在线观看免费 | 久久99r66热这里有精品 | 巨乳中文无码亚洲 | 一区三区不卡高清影视 | 麻豆官网入口 | 亚洲中文字幕国产综合 | 亚洲午夜福利未满十八勿进 | 补课H湿 1V1 PLAY | 成人免费毛片观看 | 欧美丰满少妇久久无码精品 | 中文字幕在线观看网址 | 国产中文字幕乱码免费 | 韩国羞羞秘密教学子开车漫书 | 国产成人精品久久一区二区三区 | 在线精彩视频在线观看免费 | 忘忧草在线社区WWW日本-韩国 | 熟女啪啪白浆嗷嗷叫 | 小学生偷拍妈妈视频遭性教育 | 国产精品日本一区二区在线播放 | 免费无码国产欧美久久18 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品