1.搭建

注意:conda虚拟环境中安装的Python版本必须与ROS 2版本要求的Python版本保持一致。

如humble是python3.10,conda虚拟环境就必须是3.10

cd ~/yolo3d_ws/src #没有就新建

创建ros2功能包,ament_python 表示这是一个纯Python包,使用setup.py来构建和安装
--dependencies这个参数会自动在生成的 package.xml 和 setup.py 中添加依赖项

ros2 pkg create yolo3d  --build-type ament_python --dependencies rclpy

建完包就自动生成了。把yolo3d.py run2.py topic_sub.py等文件放进来

cd yolo3d/yolo3d  

修改~/yolo3d_ws/src/yolo3d中的setup.py,用于按包的方式启动,添加这些:

 entry_points={
        'console_scripts': [
            "topic_pub = yolo3d.topic_pub:main",
            "topic_sub = yolo3d.topic_sub:main",
            "run2 = yolo3d.run2:main",
            "yolo3d = yolo3d.yolo3d:RealSenseYOLOCupDetector"

然后编译,在yolo3d_ws下,每次修改代码后也需要重新编译

colcon build

2.运行

cd ~/yolo3d_ws
source install/setup.zsh
conda activate yolo3d 

设置PYTHONPATH包含conda环境的库,这样才能在ros2中用上conda环境

可通过进环境后输入:python -c “import site; print(site.getsitepackage())” 查询路径 

export PYTHONPATH=/home/mxzbos/anaconda3/envs/yolo3d/lib/python3.10/site-packages:$PYTHONPATH

开启程序,会先完成初始化后等待startgrab话题发布

ros2 run yolo3d run2 

新开终端,发布startgrab话题,触发开始cup位置检测

#-r 5就是以5hz频率一直发布,-t 5就是5秒后话题关闭,-1就是只发布一下
ros2 topic pub -r 5 /startgrab std_msgs/msg/Bool "data: true" 

再新开终端,打开订阅者,我写在yolo3d_ws里了,测试用

cd ~/yolo3d_ws
source install/setup.zsh
ros2 run yolo3d topic_sub

3.最终效果

4.ros1

ros1非常简单,不需要创建ros包,直接在虚拟环境

pip install rospkg rospy catkin_tools

就可以直接运行含import rospy的python文件

python run_ros.py
rostopic pub /startgrab std_msgs/Bool true -1 #发布话题开始抓取
rostopic echo -c cup_pos   #订阅 返回结果

不过别忘了先roscore

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐