当前位置:   article > 正文

在机械狗上利用AstraPro3D深度摄像头简单实现目标跟踪和人体姿态识别_机器狗 图像 识别技术

机器狗 图像 识别技术

本次任务是将AstraPro3D摄像头和机械狗运用起来,AstraPro为奥比中光开发的3D传感摄像头,机械狗是云深处绝影mini,过程中主要运用到了AstraSDK做骨架提取,ros系统控制机械狗和如何在Ubuntu16.04上基本的利用fswebcam去调用AstraPro摄像头
配置环境:Ubuntu16.04(通过TeamViewer登陆进机械狗系统)
摄像头:AstraPro
首先如何配置AstraSDK链接如下:
https://developer.orbbec.com.cn/forum_plate_module_details.html?id=819
https://developer.orbbec.com.cn/forum_plate_module_details.html?id=969
https://developer.orbbec.com.cn/forum_plate_module_details.html?id=967
作者在配置AstraSDK Linux版本时也参考了大量学习资料,在这里贴出链接。最后的目标是能在AstraSDK里面运行起来Sample里面的SimpleBodyViewer
可以通过以下几个代码测试是否能开启Astra的ros:
roslaunch astra_camera astrapro.launch
rostopic list
rostopic echo /camera/depth/image_raw
rosrun image_view image_view image:=/camera/depth/image_raw

如果rostopic list有显示,且能成打开摄像头,astra的ros配置成功

    通过以上步骤我们就可以实现调用Sample里面的SimpleBodyViewer提供的骨架信息,具体的骨架信息在以下这个函数中:
    那么之后就是利用ROS去控制绝影mini:
    首先要先开启udp的message传输(具体文件请看本文最后github链接):
    开启ROS节点和创建mes传输节点

    roscore
    ./message_transformer.py
    • 1

    发送ROS Twist消息
    c++:一般来说只需要用lx和az,lx前进速度,az转向速度

    //init the ros to control the robot dog.
    ros::init(argc, argv, "publish_velocity");
    ros::NodeHandle nh;
    ros::Publisher pub = nh.advertise<geometry_msgs::Twist>("/cmd_vel", 1000);
    srand(time(0));
    ros::Rate rate(2);
    
    void robotMove(double lx,double ly,double lz,double ax,double ay,double az,ros::Publisher &pub,ros::Rate &rate){
        if(ros::ok){
            geometry_msgs::Twist msg;
            msg.linear.x = lx;
            msg.linear.y = ly;
            msg.linear.z = lz;
            msg.angular.x = ax;
            msg.angular.y = ay;
            msg.angular.z = az;
            pub.publish(msg);
            ROS_INFO_STREAM("Sending random velocity command:"<<" linear="<<msg.linear.x<<" angular="<<msg.angular.z);
            rate.sleep();
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    python:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import rospy
    from geometry_msgs.msg import Twist
    
    def velocity_publisher(linearX,angularZ):
        rospy.init_node('publish_velocity', anonymous=True)
        turtle_vel_pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
        rate = rospy.Rate(2) 
        while not rospy.is_shutdown():
            vel_msg = Twist()
            vel_msg.linear.x = linearX
            vel_msg.angular.z = angularZ
            turtle_vel_pub.publish(vel_msg)
            str_info = "Publsh turtle velocity command[{} m/s, {}rad/s]".format(vel_msg.linear.x, vel_msg.angular.z)
            rospy.loginfo(str_info)
            rate.sleep()
    
    if __name__ == '__main__':
        try:
            velocity_publisher(0,0.5)    ##第一个前进速度,第二个转向速度
        except rospy.ROSInterruptException:
            pass
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    之后我们就可以利用SDK里面的骨架信息去控制机械狗的行为,由于AstraSDK是C++版本,所以我们可以使用C++控制代码。
    那为什么还要提供一个py版本呢,因为可以把AstraPro当成普通RGB摄像头使用,利用fswebcam,或者opencv:
    连接后先检测摄像头在哪一个camera,代码如下:

    v4l2-ctl --list-devices

      如果没有“v4l2-ctl”这个环境变量,百度一下(apt install xxx即可
      观察到RGB camera前面的编号,假设是6,那么代码如下:
      参考网站:
      https://blog.csdn.net/qq_29627051/article/details/102868724

      fswebcam -d /dev/video6 --no-banner -r 720x480 -S 10 ~/image.jpg
      
      把video0改为video6,如果是camera0也一样改成camera6
      不然会出现以下报错:
      webcam-unable-to-find-a-compatible-palette-format
      • 1
      • 2
      • 3
      • 4

      这样就可以实现只调用RGB图像了
      最后github链接:待补充
      演示视频链接:https://www.bilibili.com/video/BV1Wh41127wu?from=search&seid=331279642344468380

      备注:
      点击下面链接,进入奥比中光开发者社区,了解更多3D视觉技术信息:https://developer.orbbec.com.cn/
      或扫描下方二维码,进入奥比中光开发者社区:
      在这里插入图片描述

      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/280357
      推荐阅读
      相关标签
        

      闽ICP备14008679号