基于ROS系统的手部追踪器程序设计
第一部分: 完成该程序的注意事项
1、ROS默认的python版本为2.7,但是在python2.7环境下,手部追踪程序不能正确运行,其主要原因在于python2与python3的运算规则存在很大差异,比如对于除法即 ‘/’运算符,python2下,int/int = int, 而python3环境下int/int = int=float,而cv.dnn模块以及python脚本程序中涉及到很多'/'运算,因此必须让该程序在ROS系统下以python3环境运行,否则不可能得出想要的效果。
2、如何使ROS调用python3解析器呢?很简单,只要在python脚本程序头部添加如下声明即可。
#!/usr/bin/python3
3、由于本程序需要用到python3版本的rospy,而ROS系统没有基于python3的rospy,因此需要利用pip3进行安装。安装命令为:
pip3 install rospkg -i https://pypi.tuna.tsinghua.edu.cn/simple
详情参考:https://www.cnblogs.com/h46incon/p/6207145.html
第二部分:项目构建全过程概览
一、构建工作空间
1、首先新建一个文件夹,名称为tracing_hands
mkdir tracing_hands
并在该文件夹下新建一个文件夹,名称为src
mkdir src
执行catkin_make,创建出一个空的ROS程序架构(工作空间)
catkin_make
二、构建catkin软件包
1、在前述src文件夹环境下,创建软件包,并取名为tracing_hands
catkin_create_pkg tracing_hands std_msgs rospy
2、创建自定义消息类型,刚刚创建的tracing_hands文件夹下新建一个文件夹,取名msg
mkdir msg
在该文件夹下新建两个自定义消息类型,分别是:
int_list_1d.msg:
#该message存储left,top,right,bottom
int32[] data
int_list_2d.msg:
#该message存储多个[left,top,right,bottom]
int_list_1d[] data
3、在当前文件夹下继续创建一文件夹,取名scripts,用于存放可执行python脚本文件,talker.py,listener.py,执行
chmod +x talker.py
chmod +x listener.py
用以将python脚本定义为可执行文件,使其可以执行。
4、在当前文件夹下新建一文件夹,取名为launch,并在其中新建一文件,取名为tracing_hands.launch,内容如下:
<launch>
<node name = "talker" pkg = "tracing_hands" type = "talker.py"/>
<node name = "listener" pkg = "tracing_hands" type = "listener.py"/>
</launch>
用以快速启动tracing_hands软件包下的talker和listener节点
执行
chmod +x tracing_hands.launch
用以将其变为可执行文件。
5、修改当前文件夹下的CmakeList.txt和package.xml文件
6、回到工作空间目录下即~/tracing_hands,执行catkin_make编译程序
!!!至此程序框架已全部构建完成,后面可用rosrun来逐个执行节点或者roslaunch来快速启动所有节点
第三部分:程序使用
1、使用前请注意:修改talker.py 的配置文件路径(就是你自己训练的权重文件)talker.py在/tracing_hands/src/tracing_hands/scripts 文件夹下。修改26,27行即可,其余的不需要修改了。
2、使用roslaunch启动:在我的环境下用到如下语句:
cd ~/tracing_hands
source ./devel/setup.bash
roslaunch tracing_hands tracing_hands.launch
3、使用rosrun启动:在我的环境下用到如下语句:
roscore
打开一个新终端:依次输入如下:
cd ~/tracing_hands
source ./devel/setup.bash
rosrun tracing_hands talker.py
再打开一个新终端:依次输入如下:
cd ~/tracing_hands
source ./devel/setup.bash
rosrun tracing_hands listener.py
另:要实现可视化效果可在程序运行时,打开一个新终端并执行:
rqt_graph
具体参见:
http://wiki.ros.org/cn/ROS/Tutorials/UsingRqtconsoleRoslaunch
本文地址:https://blog.csdn.net/weixin_43409736/article/details/107874798