ros1中python3包调用自定义.py文件

ros中python包相互import不成功问题

问题

在ros工程中,运行python文件难以直接import自己写的py文件,相互之间无法import,但是在python3虚拟环境python *.py文件就可以正常运行!
在这里插入图片描述
注意这里还有个问题,我们的这个auboi5_moveitServer.py明明是在下面的路径下,为什么rosrun运行会跑到aubo_ws/devel/lib/cxh这下面去呢
在这里插入图片描述
这是因为你在cxh文件夹下的CMakeList.txt文件添加了catkin_install_python(PROGRAMS
scripts/auboi5_moveitServer.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)这样式的修改,所以在aubo_ws下执行编译就会把cxh下的文件复制到devel/lib文件夹里面导致Python导的包重名了!!!

解决办法

如果你的CMakeList.txt文件添加了像下面这样的catkin_install_python(PROGRAMS scripts/HelloWorld.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)这样式的修改,请立即全部删除或者注释掉!!!
因为不管用!!!
在这里插入图片描述

然后重新编译,编译前把之前编译出来的文件都删掉,如图红色框里就是之前编译出来的文件:
在这里插入图片描述
删掉后,执行命令

catkin_make
source devel/setup.bash

然后在需要创建成ROS节点的.py文件,给予权限即可在source后,通过rosrun运行python文件
权限命令

chmod +x *.py

如图在python虚拟环境grcnngrasp下,执行命令后,变绿就是命令生效了:
在这里插入图片描述
在终端里,先source一下再rosrun命令

source devel/setup.bash
rosrun cxh run_mono_grasp_real.py
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROSPython代码,回调函数是一种常见的处理机制。在代码,我们可以使用ro.Subscriber()函数来订阅指定的话题,并指定一个回调函数来处理接收到的消息。当有消息到达订阅的话题时,ROS会自动调用回调函数来处理消息。 回调函数通常在接收到消息后执行一系列的操作,括对数据进行处理、更新地图等等。在处理完回调函数A后,如果还需要进行其他的处理,可以在回调函数后添加一个while循环来执行需要执行的操作,然后在循环内调用rospy.spin()函数。这样做的好处是,rospy.spin()函数会持续监听话题,只要有新的消息到达,就会立即调用回调函数来处理消息。同时,由于rospy.spin()函数并不会占用主线程,所以代码可以继续执行其他的操作。 需要注意的是,一旦进入rospy.spin()函数,它就会进入一个死循环,不会返回。只要回调函数队列有回调函数等待执行,rospy.spin()函数就会立即去执行回调函数。如果回调函数队列为空,rospy.spin()函数会阻塞,不会占用CPU。这样可以保证回调函数能够及时响应消息,而不会错过任何消息。 综上所述,回调函数对于处理ROS的消息非常重要。可以通过订阅指定的话题并指定回调函数来处理接收到的消息,并可以在回调函数后添加while循环来执行其他的操作,同时通过rospy.spin()函数来保证回调函数能够及时响应消息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ros下的python代码的编写与回调函数](https://blog.csdn.net/weixin_28930461/article/details/106444518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ROS回调函数与spin()方法](https://blog.csdn.net/qq_33898609/article/details/105935613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值