• 智能小车代码

    2020-07-06 08:26:28
    智能小车学习网站链接
  • 51智能代码

    2020-05-12 23:31:53
    以stc12c5a60s为核心 的黑白线寻迹智能车源代码
  • 51单片机灭火车

    2020-06-03 23:32:49
    基于51单片机的灭火小车,主要是由红外火焰传感器组成,可以实现自动寻找火源,灭火,避障等功能
  • 平衡车源代码

    2020-07-13 23:31:10
    用此代码可做平衡车,代码很容易理解,适合在家DIY 一辆平衡车
  • 恩智浦全国大学生智能车竞赛直立参考代码。欢迎下载,仅供参考。 恩智浦全国大学生智能车竞赛直立参考代码。欢迎下载,仅供参考。
  • 智能小车项目源码

    2018-03-11 13:48:35
    #include <stdlib.h> #include <string.h> #include <stdio.h> #include <time.h> #include <unistd.h> #include &...#inc
    #include <stdlib.h>  
    #include <string.h>  
    #include <stdio.h>  
    #include <time.h>  
      
    #include <unistd.h>  
    #include <fcntl.h>  
    #include <termios.h>  
    #include "opencv2/core/core.hpp"  
    #include "opencv2/highgui/highgui.hpp"  
    #include "opencv2/imgproc/imgproc.hpp"  
    #include <iostream>  
      
    using namespace cv;  
    using namespace std;  
      
    #define MAX_KERNEL_LENTH (19)  
    #define MEAN_THRESH_VAL (1)  //平均阈值  
      
    int fd;  
    int fps = 100; //帧率  
    char buf[1024] = "temp text";  
    Mat org_image, blurred_image, binary_image, edge_image;  
      
    //串口设置  
    int setupSerial()  
    {  
        struct termios toptions;  
        //打开串口  
        fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);  
        printf("fd opened as %i\n", fd);  
        //等待Arduino启动  
        usleep(150000);  
        //获得当前串口设置  
        tcgetattr(fd, &toptions);  
      
        //设置波特率  
        cfsetispeed(&toptions, B9600);  
        cfsetospeed(&toptions, B9600);  
      
        //控制模式 ,没有奇偶校验、停止位,字符长度为8  
        toptions.c_cflag &= ~PARENB;  
        toptions.c_cflag &= ~CSTOPB;  
        toptions.c_cflag &= ~CSIZE;  
        toptions.c_cflag |= CS8;  
      
        //启用标准模式  
        toptions.c_lflag |= ICANON;  
        tcsetattr(fd, TCSANOW, &toptions);  
        printf("Attempting to communicate with arduino... \n");  
        return 0;  
    }  
      
    //命令函数  
    void sendCommand(const char* command)  
    {  
       int n;  
       write(fd, command, strlen(command)); //把命令写入fd中,并返回写的字节数  
       n = read(fd, buf, 512);             //把fd所指的文件传送到buf所指的内存中,返回读取的字节数  
       buf[n+1] = '\0';  
       //返回命令内容  
       printf("Command Returned: %s\n", buf);  
    }  
      
    //特征提取阶段:获取图像的均值  
    double value(Mat binary_image)  
    {  
        Scalar mean_scalar, stddev_scalar;  
        meanStdDev(binary_image, mean_scalar, stddev_scalar);  
        double value;  
        value = mean_scalar.val[0];  
        return value;  
    }  
      
    //确定小车的方向  
    int direction(Mat image)  
    {  
        namedWindow("org image", WINDOW_NORMAL);  
        imshow("org image", image);  
        //将原图像变为640*480  
        resize(image, org_image, Size(640,480), 0, 0, CV_INTER_LINEAR);  
      
        //模糊处理  
        for (int i = 1; i < MAX_KERNEL_LENTH; i = i + 2)  
        GaussianBlur(org_image, blurred_image, Size(1,1), 0, 0);  
        //使用恒定阈值方法去掉细节,得到阈值图像  
        threshold(org_image, binary_image, 170, 255, THRESH_BINARY);  
        //得到只有边缘信息的图像  
        Canny(blurred_image, edge_image, 45, 90);  
        //把只有边缘信息的图像叠加到二值图像上,获取边缘信息的同时也获取物体的区域信息  
        Mat binary_image1;  
        binary_image1 = binary_image + edge_image;  
      
        //闭运算  
        Mat binary_image2 = binary_image.clone();  
        Mat element = getStructuringElement(MORPH_RECT, Size(40, 40));  
        morphologyEx(binary_image1, binary_image2, MORPH_CLOSE, element);  
        namedWindow("binary", WINDOW_NORMAL);  
        imshow("binary", binary_image2);  
      
        //定义九个方位  
        Mat result[9];  
        result[0] = binary_image2(Rect(0, 0, 213, 160));  
        result[1] = binary_image2(Rect(213, 0, 213, 160));  
        result[2] = binary_image2(Rect(426, 0, 213, 160));  
        result[3] = binary_image2(Rect(0, 160, 213, 160));  
        result[4] = binary_image2(Rect(213, 160, 213, 160));  
        result[5] = binary_image2(Rect(426, 160, 213, 160));  
        result[6] = binary_image2(Rect(0, 320, 213, 160));  
        result[7] = binary_image2(Rect(213, 320, 213, 160));  
        result[8] = binary_image2(Rect(426, 320, 213, 160));  
        //计算九个方位的均值  
        double seperate_value[9];  
        for (int i = 0; i < 9; ++ i)  
            seperate_value[i] = value(result[i]);  
        //得到后面均值最小的方位  
        double min_value = 100;  
        int index = 0, key = 0;  
        for (int i = 6; i < 9; ++ i)  
            if (seperate_value[i] < min_value)  
            {  
                min_value = seperate_value[i];  
                index = i;  
            }  
        //返回车转动的方向  
         switch (index)  
           {  
               case 6: key = -1; break; //左转  
               case 8: key = 1; break;  //右转  
               default: key = 0; break; //直走  
           }  
      
           if (seperate_value[6] < 1 && seperate_value[7] < 1 && seperate_value[8] < 1)   
               key = 0;                      //没有障碍物,直接往前行驶  
           else if (seperate_value[6] > 10 && seperate_value[7] > 10 && seperate_value[8] > 10)  
               key = 9;                     //道路都被障碍物挡住,停止前进  
      
        cout << "key: " << key << endl;  
        waitKey(1);  
        return key;  
    }  
      
    int main()  
    {  
        setupSerial();  
        VideoCapture capture(0);  
        while(1)  
        {  
            capture>>org_image;  
            if(org_image.data != NULL)  
            {  
              cvtColor(org_image, org_image, COLOR_BGR2GRAY);  
              //确定前进方向并向Arduino发送命令  
              int key = direction(org_image);  
              if (key == 0)  
                 {  
                    sendCommand("f0");  
                    usleep(500000);}  
              else if (key == -1)  
                {  
                    sendCommand("s");  
                    usleep(500000);  
                    sendCommand("l60");  
                    usleep(500000);  
                }  
                else if (key == 1)  
                {  
                  sendCommand("s");  
                  usleep(500000);  
                  sendCommand("r140");  
                  usleep(500000);  
                }  
                else  
                {  
                    sendCommand("l90");  
                    usleep(500000);  
                    sendCommand("s");  
                    usleep(500000);  
                    //sendCommand("l90");  
                }  
            }  
            else  
            {  
                cout << "error:empty image!" << endl;  
                break;  
            }  
        }  
        return 0;  
    }  
    

    展开全文
  • 如何在家自己动手做一个arduino平衡车?简单的源代码分享,优酷有我的视频!
  • 无线语音遥控智能车资料,无线语音遥控智能车资料,无线语音遥控智能车资料。
  • Star 200+...支持以下功能:3D本地化3D映射路径规划路径跟随加速/制动/转向控制数据记录汽车/行人/物体检测交通信号检测交通灯识别车道检测对象跟踪传感器校准传感器融合面向云的地图连接自动化智能手机导

    Star 200+

    https://github.com/CPFL/Autoware

    用于城市自主驾驶的开源软件。 

    Autoware

    用于城市自主驾驶的集成开源软件,由第四层维护支持以下功能:

    • 3D本地化
    • 3D映射
    • 路径规划
    • 路径跟随
    • 加速/制动/转向控制
    • 数据记录
    • 汽车/行人/物体检测
    • 交通信号检测
    • 交通灯识别
    • 车道检测
    • 对象跟踪
    • 传感器校准
    • 传感器融合
    • 面向云的地图
    • 连接自动化
    • 智能手机导航
    • 软件仿真
    • 虚拟现实

    Autoware受BSD许可证保护。请自行负责使用。为了安全使用,我们为不拥有真正自主车辆的人提供基于ROSBAG的仿真方法。如果您使用Autoware与真正的自主车辆,请在现场测试之前制定安全措施和风险评估。

    执照

    • 新的BSD许可证
      • 参见许可证

    规格推荐

    • 的CPU内核:8

    • RAM大小:32GB
    • 存储大小:30GB

    要求

    • ROS靛蓝(Ubuntu 14.04)或ROS玉(Ubuntu 15.04)
    • OpenCV 2.4.10或更高版本注意:截至2016年8月,Autoware不支持OpenCV 3或更高版本。请使用OpenCV 2
    • Qt 5.2.1或更高
    • CUDA(可选)
    • FlyCapture2(可选)
    • 犰狳

    如果在ROS Hydro或Ubuntu 13.04,13.10上使用Autoware,请在2015 / OCT / 21之前使用结帐修订。

    安装Ubuntu 14.04靛蓝的依赖

    % sudo apt-get install ros-indigo-desktop-full ros-indigo-nmea-msgs ros-indigo-nmea-navsat-driver ros-indigo-sound-play ros-indigo-jsk-visualization ros-indigo-grid-map
    % sudo apt-get install ros-indigo-controller-manager ros-indigo-ros-control ros-indigo-ros-controllers ros-indigo-gazebo-ros-control ros-indigo-sicktoolbox ros-indigo-sicktoolbox-wrapper ros-indigo-joystick-drivers ros-indigo-novatel-span-driver
    % sudo apt-get install libnlopt-dev freeglut3-dev qtbase5-dev libqt5opengl5-dev libssh2-1-dev libarmadillo-dev libpcap-dev gksu libgl1-mesa-dev
    

    注意:请勿安装ros-indigo-velodyne-pointcloud软件包。如果您已经安装,请卸载它。

    安装Ubuntu 15.04玉器的依赖项

    % sudo apt-get install ros-jade-desktop-full ros-jade-nmea-msgs ros-jade-nmea-navsat-driver ros-jade-sound-play
    % sudo apt-get install ros-jade-controller-manager ros-jade-ros-control ros-jade-ros-controllers ros-jade-gazebo-ros-control ros-jade-sicktoolbox ros-jade-sicktoolbox-wrapper ros-jade-joystick-drivers ros-jade-novatel-span-driver
    % sudo apt-get install libnlopt-dev freeglut3-dev qt5-default libqt5opengl5-dev libssh2-1-dev libarmadillo-dev libpcap-dev gksu libgl1-mesa-dev
    

    注意:在Ubuntu15.04 Jade中没有提供jsk_visualization和grid_map。请从以下存储库下载并自行构建。https://github.com/jsk-ros-pkg/jsk_visualization https://github.com/ethz-asl/grid_map

    如何构建

    $ cd $HOME
    $ git clone https://github.com/CPFL/Autoware.git
    $ cd ~/Autoware/ros/src
    $ catkin_init_workspace
    $ cd ../
    $ ./catkin_make_release
    

    ###基于Caffe的对象检测器基于CV的检测器RCNN和SSD节点不会自动构建。

    要构建这些节点,请遵循相应节点的README SSD RCNN

    如何开始

    $ cd $HOME/Autoware/ros
    $ ./run
    

    对于开发人员

    小心更改下面的文件ros/src/sensing/drivers/lidar/packages/velodyne子树原始存储库在这里如果从这个存储库更改这些文件,您必须使用git子树推送(如果您不明白,请不要更改并推送代码 git subtree)。

    GitFlow,git分支模型,在Autoware仓库中引入。

    • 添加新功能时,您可以从中分支功能分支develop
      您可以使用以下命令。
      $ git checkout -b feature/[your_branch_name] develop
    • 当您在master分支中发现错误时,可以从您的修补程序分支中分离出来master
      您可以使用以下命令。
      $ git checkout -b hotfix/[your_branch_name] master

    更多细节在这里

    文件

    请参阅Autoware / docs。截至2015年8月,我们仅提供日本文件。英文文本将会加入。

    主要包装

    本土化

    • ndt_localizer
    • icp_localizer

    发现

    • lidar_tracker
    • cv_tracker
    • road_wizard

    使命(全球)规划

    • lane_planner
    • way_planner
    • freespace_planner

    运动(本地)规划

    • astar_planner
    • lattice_planner
    • dp_planner

    车辆控制

    • waypoint_follower
    • waypoint_maker

    引文研究论文

    1. S.加藤,Takeuchi,Y. Ishiguro,Y.Ninomiya,K.Takeda和T. Hamada。“开放式自动车辆方法”,IEEE Micro,Vol。35,No. 6,pp。60-69,2015。链接

    演示视频

    公路示范

    公路示范

    说明视频

    快速开始

    快速开始

    加载地图数据

    加载地图数据

    GNSS定位

    GNSS定位

    没有GNSS的本地化

    没有GNSS的本地化

    制图

    制图

    用SSD进行检测

    SSD

    用DPM检测

    DPM

    用欧氏距离聚类检测

    聚类

    交通灯识别

    交通灯识别

    规划与ROSBAG

    规划与ROSBAG

    用wf_simulator进行规划

    用wf_simulator进行规划

    混合状态A *

    用wf_simulator进行规划

    校准工具包

    校准工具包

    样品数据

    森山在名古屋的3D地图

    森山驾驶的ROSBAG数据

    用于生成森山的演示启动文件的脚本

    ROSBAG数据用于校准

    IROS 2016数据

    名古屋驾驶的ROSBAG数据

    联系

    Autoware Developers(autoware@googlegroups.com

    要订阅Autoware Developers ML,

    ----

    用于ROS的RGB-D SLAM

    https://github.com/felixendres/rgbdslam_v2

    RGBDSLAM v2

    ...是用于RGB-D相机的最先进的SLAM系统,例如Microsoft Kinect或Asus Xtion Pro Live。您可以使用它来创建3D点云或OctoMaps。

    RGBDSLAMv2是基于开源项目,ROS,OpenCV,OpenGL,PCL,OctoMap,SiftGPU,g2o等等 - 谢谢!

    具有系统描述和性能评估的期刊文章可以在以下出版物中找到:

    “3D Mapping with a RGB-D Camera”,
    F. Endres,J.Hess,J.SturmD. Cremers,W.Burgard
    IEEE Transactions on Robotics,2014。

    更多的信息可以在我的博士论文中找到

    其他信息可以在这里找到:

    RGBDL基准数据集上的RGBDSLAM

    先决条件

    • Ubuntu 16.04
    • ROS动力学
    • Amd64处理器(ARM已知有问题,主要与qt和opengl相关)其他版本可能会工作,但未经测试。如果您使用其他版本,请报告成功。

    安装

    这是一个规范的方式,如果你知道你在做什么,随时适应。

    1. 将RGBDSLAMv2放在catkin工作区中:有关 详细信息,请参阅catkin 教程使用git将此存储库克隆到工作区的“src /”目录中。或下载RGBDSLAMv2作为存档,并将其解压缩到“src /”。

    2. 下载我的[g2o fork | https://github.com/felixendres/g2o ],将其放在其他目录中。构建并安装。将环境变量导出$G2O_DIR到安装目录,让rgbdslam_v2知道在哪里找到它(请参阅从Scratch安装一个示例)。

    3. 使用rosdep(即“rosdep install rgbdslam”)安装缺少的依赖项。详情请见http://wiki.ros.org/ROS/Tutorials/rosdep

    4. 要构建RGBDSLAMv2去你的catkin工作区并执行“catkin_make”。如果您收到有关缺少siftgpu库的错误信息,请再次执行“catkin_make”。

    ##从Scratch ########################################### ########现在有一个install.sh脚本,可以执行(bash install.sh)。它安装在〜/ Code之下所需的一切(您可以在脚本中更改位置)。

    脚本简短而且不复杂,因此您也可以将其用作手册。

    如果要使用安装脚本,则直接下载就足够了 没有必要克隆这个存储库,因为脚本会为你做这个。

    如果您拥有4GB或更多内存的多核机器,则可以通过将“-j2”的两次发生增加到例如“-j4”来加快编译速度。

    安装完成 下一步是什么?

    有关使用情况的详细信息,请参阅以下部分。但是,让您快速开始这里是最重要的指标:

    • 如果要使用RGBDSLAMv2与RGB-D摄像机,您可能必须安装openni(sudo apt-get install ros-kinetic-openni-launch)或类似的东西

    • 查看“launch /”中的启动文件的示例和具体用例。roslaunch rgbdslam openni + rgbdslam.launch是实时映射的良好起点。

    • 您可能需要根据摄像机驱动程序节点调整输入主题的参数。

    • 查看“test /”中的README,用于在Juergen Sturm的RGB-D SLAM数据集和基准测试中运行,测试和评估RGBDSLAMv2:http : //vision.in.tum.de/data/datasets/rgbd-dataset 您需要cython for评估脚本(sudo apt-get install cython)。

    • 如果要使用SURF或SIFT,则需要从源代码构建OpenCV,包括非免费模块(这不包括已包含的SIFTGPU,但需要在CMakeLists.txt中启用)。在RGBDSLAMv2的CMakeLists.txt中,您可以设置OpenCV的构建目录,并启用非免费功能。请注意,SIFT和SURF不是最佳选择。由于RGBDSLAMv2中的新(软件)功能,ORB优于两者。

    RGBDSLAM刚刚启动

    重要的提示

    该软件是ROS Fuerte版本的RGBDSLAM的更新。然而,很多事情都发生了变化,所以下面的一些文档可能会被淘汰。请报告文档的问题。谢谢。

    组态

    有几个示例启动文件在某些​​用例中设置了RGB-D SLAM的参数。有关所有设置的明确列表及其默认设置,请参阅GUI菜单设置 - >查看当前设置中的src / parameter_server.cpp或(当前设置而不是默认设置)中可读取的定义。

    各种用例启动文件可能无法正常工作,因为它们没有经常测试。你应该让他们跑步,如果你提到的主题(“rostopic列表”和“rosnode信息”将帮助你“rqt_graph”也是太好了)。

    用法

    大多数人似乎想要注册点云。当您命令RGB-D SLAM执行此操作时,默认情况下会发送到/ rgbdslam / batch_clouds上(见下文)。发送的云实际上与以前一样,但是/从/映射到/ openni_camera的默认转换是在/ tf发送的。

    octoMap库被编译到rgbdslam节点。这允许直接创建octomap。在GUI中,可以通过从“数据”菜单中选择“保存八进制”来完成。在线八进制是可能的,但不推荐。

    从RGB-D基准序列fr2 / desk创建的OctoMap

    使用GUI

    要启动RGBDSLAMv2启动,例如$ roslaunch rgbdslam openni + rgbdslam.launch

    或者,您可以单独启动openni节点和RGBDSLAMv2,例如:roslaunch openni_camera openni_node.launch roslaunch rgbdslam rgbdslam.launch

    要捕获模型,请按空格开始录制连续流,或按回车记录单帧。为了减少数据冗余,从(几乎)相同位置的顺序帧不包括在最终模型中。

    参数RGBDSLAMv2可以通过参数进行定制。这些应该在启动文件中设置。可以在GUI操作期间更改参数,但是,从GUI更改可能对许多参数没有影响。

    可视化3D可视化显示全局优化模型(您可能需要点击它才能在优化后更新视图)。除了缺少值和深度跳跃之外,相邻点可以进行三角测量。使用快捷方式“t”,可以切换三角测量。由于原始点的渲染速度稍微加快,参数“cloud_display_type”控制是否在收到云时完全计算三角测量。参数“gl_point_size”对大多数用户可能是有用的。

    使用无GUI

    RosUI可以替代Grapical_UI来运行rgbdslam headless,例如在PR2上。然后可以通过服务调用使用rgbdslam。可能的电话是:

    • / rgbdslam / ros_ui {reset,quick_save,send_all,delete_frame,optimize,reload_config,save_trajectory}
    • / rgbdslam / ros_ui_b {pause,record} {true,false}
    • / rgbdslam / ros_ui_f {set_max} {float}
    • / rgbdslam / ros_ui_s {save_octomap,save_cloud,save_g2o_graph,save_trajectory,save_features,save_individual} {filename}

    要启动rgbdslam headless使用headless.launch:$ roslaunch rgbdslam headless.launch

    通过以下方式捕获单个帧:$ rosservice call / rgbdslam / ros_ui frame

    捕获数据流:$ rosservice call / rgbdslam / ros_ui_b pause false

    使用计算转换发送点云(例如,到rviz或octomap_server):$ rosservice call / rgbdslam / ros_ui send_all

    使用以下之一保存数据:

    一个文件中的所有点云在rgbdslam / bin目录中的quicksave.pcd:$ rosservice call / rgbdslam / ros_ui_s save_cloud

    在rgbdslam / bin目录中的自己文件中的每个点云:$ rosservice call / rgbdslam / ros_ui save_individual

    / rgbdslam / ros_ui:

    • 复位“”重置图形,删除所有节点(仅在捕获新图像时刷新)“
    • 帧“从传感器捕获一帧”
    • 优化“触发器图优化器”
    • reload_config“从ROS参数服务器重新加载参数”
    • quick_save“将所有点云保存在一个文件中,在rgbdslam / bin目录中的”quicksave.pcd“
    • send_all''将所有点云发送到/ rgbdslam / converted_cloud(可以使用rviz进行可视化)''
    • delete_frame''从图形中删除最后一帧(仅在捕获新图像时刷新)''

    / rgbdslam / ros_ui_b:

    • 暂停“暂停或恢复图像的捕获”
    • 记录“暂停或停止记录袋文件,可以在rgbdslam / bin目录中找到”

    / rgbdslam / ros_ui_f:

    • set_max“过滤出比此值更远的所有数据点(以cm为单位,仅用于保存到文件中)

    / rgbdslam / ros_ui_s:

    • save_features'将特征位置和描述符保存在具有给定文件名的“yaml”文件中
    • save_cloud“将云保存到给定的文件名(应以.ply或.pcd结尾)”
    • save_individual'将每个扫描保存在自己的文件中(在给定的前缀中添加一个后缀)''
    • save_octomap“将云保存到给定的文件名”
    • save_trajectory'将传感器轨迹保存到文件_estimate.txt''

    进一步帮助

    编译可能需要很多内存,特别是如果设置了环境变量$ ROS_PARALLEL_JOBS。

    如果您位于德国,并将保存的文件夹加载到meshlab中,请尝试切换到US语言环境,或用.use文件中的逗号替换小数点。

    如果您对RGBDSLAM的安装或使用有任何疑问,请参阅http://answers.ros.org/questions/?tags=RGBDSLAM如需进一步的问题,建议,修改本自述文件或提交修补程序,请联系Felix Endres(endres @ informatik.uni-freiburg.de)。

    除了本手册,可以使用rosdoc(“rosrun rosdoc rosdoc rgbdslam”)创建代码文档,该文件将在当前目录中创建一个“doc”文件夹。

    GICP和SIFTGPU

    如果与GICP或SIFTGPU的编译或链接有关的问题,可以在CMakeLists.txt的顶部停用这些功能。您可能会获得更快的GPU功能设置参数“siftgpu_with_cuda”,但您将需要安装可能需要NVidia GPU的专有CUDA驱动程序(请参阅http://www.nvidia.com/object/cuda_gpus.html)。要安装开发驱动程序和CUDA SDK,您可以使用以下教程:http ://sublimated.wordpress.com/2011/03/25/installing-cuda-4-0-rc-on-ubuntu-10-10- 64位/ ubuntu 10.04:http : //ubuntuforums.org/showthread.php?t=1625433(在Ubuntu 10.04 x64上测试)要使用SiftGPU,您应该安装“libdevil-dev”。

    可以在external / siftgpu / linux / makefile中更改其他编译信息。

    如果您收到siftgpu库找不到的错误,请在目录external / siftgpu /并重新运行catkin_make中手动执行“make”。

    GICP广泛的ICP可以(de)激活,以完善注册。有关更多信息,请参阅http://stanford.edu/~avsegal/generalized_icp.html

    许可信息

    这个软件是分发的,希望它是有用的,但没有任何保证; 甚至没有适销性或适用于特定用途的默示保证。

    RGBDSLAM是根据GPL v.3授权的。请参阅随附的文件“复制”。

    ----

    ROS2:https://github.com/ros2/ros2/wiki

    ROS 2

    机器人操作系统(ROS)是一组可帮助您构建机器人应用程序的软件库和工具。从驱动程序到最先进的算法,以及强大的开发人员工具,ROS具有您下一个机器人项目所需的功能。这都是开源的。

    在这里,您将找到有关如何安装和使用ROS 2软件的文档,ROS 2是一个正在大力开发的新版本的ROS。有关ROS 2的更多信息,请参见下文。

    如果您正在寻找有关ROS 1的信息(即ROS,因为它已经存在了好几年,现在您可能正在使用),请查看ROS网站文档维基

    在继续之前,请阅读功能页面了解当前ROS 2版本中的内容。

    安装

    请参阅安装页面

    教程

    ROS 2正在大力发展,所有版本目前都是“alpha”-prefixed。您不应该期望今天从ROS 1切换到ROS 2,但您可以查看教程页面,以查看系统在当前状态下可以执行的操作的一系列示例。

    特约

    有关如何为ROS 2开发做出贡献的详细信息,请参阅贡献页面开发人员指南

    报告问题和提问

    请参阅联系页面

    关于ROS 2

    自从ROS于2007年启动以来,机器人和ROS社区发生了很大变化。ROS 2项目的目标是适应这些变化,利用ROS 1的优势,改善不了的。有一个关于ROS 2的动机完整的文章在这里

    当前状态

    ROS 2的Alpha版本目前正在进行约6周的节奏,让社区成员有机会对系统提供反馈。在高层次上,ROS 2的发展广泛侧重于为支持多个DDS中间件实施,多个操作系统,多种编程语言以及与运行ROS 1的系统共存的基础奠定基础。有关当前功能的详细信息,请参阅功能

    有什么事情

    有关ROS 2的即将推出的功能的详细信息,请参阅路线图

    在哪里可以找到更多信息

    有关ROS 2设计的各种文章在design.ros2.org,如:为什么选择ROS 2.0?DDS上的ROS以及ROS 1和ROS 2之间的变化

    ROS 2的代码是开源的,分为各种存储库。您可以在ros2 github组织上找到大多数存储库的代码

    以下是关于ROS 2的ROSCon会谈,并提供有关ROS 2和各种演示的工作的信息:

    标题类型链接
    ROS 2更新 - alpha版本总结,架构概述ROSCon 2016演示幻灯片 / 视频
    评估ROS2通信层的弹性ROSCon 2016演示幻灯片 / 视频
    ROS 2状态 - 演示和技术背后ROSCon 2015演示幻灯片 / 视频
    ROS 2在“小”嵌入式系统上ROSCon 2015演示幻灯片 / 视频
    ROS和ROS 2.0中的实时控制ROSCon 2015演示幻灯片 / 视频
    为什么要使用ROS 2ROSCon 2014演示幻灯片 / 视频
    下一代ROS:建立在DDS上ROSCon 2014演示幻灯片 / 视频

    ----

    SPENCER多模态人员检测和跟踪框架

    在欧盟FP7项目SPENCER的背景下,针对移动机器人开发的多模态基于ROS的人群和检测跟踪框架

    被追踪的人投射到前面的RGB-D相机

    特点一目了然

    • 多模式检测:多个RGB-D和2D激光探测器在一个通用的框架中。
    • 人员跟踪:基于最近邻数据关联的高效追踪器。
    • 社会关系:通过连贯的运动指标估计人与人之间的空间关系。
    • 群体跟踪:根据社会关系检测和跟踪群体。
    • 鲁棒性: IMM,追踪启动逻辑和高回调检测器输入等各种扩展功能使人们跟踪器即使在非常动态的环境中也能相对稳健地工作。
    • 实时:在游戏笔记本电脑上运行20-30 Hz,跟踪器本身只需要1个CPU核心的10%。
    • 可扩展和可重用:结构良好的ROS消息类型和明确定义的界面可以轻松集成自定义检测和跟踪组件。
    • 强大的可视化:一系列可重用的RViz插件,可以通过鼠标点击配置,还有用于生成动画(2D)SVG文件的脚本。
    • 评估工具:用于评估跟踪性能的指标(CLEAR-MOT,OSPA)。
    • ROS集成:所有组件都与ROS完全集成,并以C ++或Python编写。不需要Matlab。

    动机

    欧盟FP7研究项目SPENCER的目标是为服务机器人开发算法,可以通过高度动态和拥挤的行人环境(如机场或购物中心)来指导群体,同时以符合社会的方式行事,例如不跨越家庭或夫妇 这样的机器人可以遇到的示例性情况在右侧的下图中可视化。为此,需要开发出在机器人环境中对于人类感知的强大和计算效率高的组件。

    SPENCER用例    SPENCER用例

    建筑

    下图显示了在SPENCER项目背景下开发的实时人员和组检测和跟踪管道:

    SPENCER追踪管道

    我们管道的不同阶段之间的整个沟通通过ROS消息发生,这些消息鼓励在自定义设置中重用我们的组件。模块化架构允许在管道的所有阶段中各个组件的简单互换性。

    可用组件概述

    消息定义

    我们提供一套可重复使用的ROS消息类型定义,我们已经通过不同的传感器模式和跟踪方法成功地应用于各种人员检测和跟踪场景。可以在spencer_tracking_msgs包中找到最相关的消息

    我们高度鼓励重用这些消息,以从我们丰富的检测,跟踪,过滤和可视化组件的基础设施中获益!现有的检测和跟踪算法通常可以通过以我们的格式发布附加消息,或通过编写一个简单的C ++或Python节点来转换消息格式,来容易地集成。

    人检测

    我们集成了以下人员检测模块:

    输出geometry_msgs/PoseArraypeople_msgs/PositionMeasurementArray消息的其他外部检测器可以使用此包中的脚本轻松地集成到我们的框架这种检测器的实例包括:

    多模态检测和融合

    对于检测到检测融合,我们实现了一系列节点,可以通过roslaunch XML文件灵活地组合融合流水线。详细信息可以在spencer_detected_person_association包中找到下图显示了在SPENCER实验期间使用的示例配置:

    示例多模态人员追踪架构

    在检测到轨道融合(目前未实现)的情况下,仍然建议对与轨道相关联的每组检测发布CompositeDetectedPerson消息(通过CompositeDetectedPersons),以便稍后可以返回到来自轨道的原始检测,以及通过相关联的检测标识查找关联图像边界框等。

    个人和组跟踪

    对于个人和组跟踪,我们目前提供基于最近邻标准过滤器数据关联的示例性代码,其在大多数使用情况下足够强大(特别是如果正在使用多模态检测器)。人跟踪已增强与轨道起始的逻辑和4不同的基于IMM-运动模型(恒速低过程噪声,高过程噪声,协调转弯和布朗运动),以使跟踪更加健壮。

    组跟踪器依赖于社会/空间关系经由如在[1]中所述的相同相干运动指示器特征来确定。

    在内部,我们已经集成了更先进的方法,包括轨迹导向多假设人物跟踪器[2],以及假设为导向的多模型多假设人和组跟踪器[1]。这些组件使用完全相同的ROS消息定义,但是它们尚未公开。这里提供的组件最初作为比较的基准方法实现。

    过滤跟踪人员和跟踪指标

    所述spencer_tracking_utils包包含许多独立的ROS的节点,可以过滤传入组TrackedPerson基于不同标准的消息,例如,到传感器/机器人的距离,仅在视觉上确认轨道等

    spencer_tracking_metrics中,我们已经公开了不同跟踪指标的实现,例如CLEAR-MOT和OSPA,以便它们与我们的消息定义兼容。这些可用于评估给定的基准线的跟踪性能。

    导入旧的注释日志文件

    srl_tracking_logfile_import包提供了进口的卡门格式旧的2D激光扫描日志文件已经标注了真实状况的人曲目,如Python脚本,这些数据集

    可视化

    所述srl_tracking_exporter包中包含用于从2D自上而下的角度为可伸缩矢量图形(SVGs)渲染轨道轨迹,检测和机器人测距法的有用Python脚本。这些可以选择性地动画化以便可视化一个或多个轨道随着时间的演变。

    我们的框架的一个主要亮点是可重用和高度可配置的定制RViz插件,用于可视化:

    • 检测人员
    • 跟踪人员(包括闭塞状态,相关检测ID和协方差椭圆)
    • 社会关系
    • 跟踪组

    作为示例,跟踪人员的一些功能显示为:

    • 不同的视觉风格:3D边框,圆柱,动画人网
    • 着色:6种不同的调色板
    • 显示速度箭头
    • 可视化的99%协方差椭圆
    • 显示轨迹ID,状态(匹配,遮挡),相关检测ID
    • 当轨道被遮挡时可配置的不透明度降低
    • 跟踪历史(轨迹)显示为点或线
    • 可配置的字体大小和线宽

    以下所有屏幕截图都是使用这些插件生成的。

    我们系统的示例屏幕截图

    以下屏幕截图显示我们的系统正在运行,同时从拥挤的机场环境播放记录的数据:

    多民族人群检测 橙色:2D激光[3],青色:上身RGB-D [2],黄色:单目视觉HOG [2],灰色:融合检测(使用检测到检测融合时)。

    检测结果示例

    人追踪。红色:通过基于图像的检测器视觉确认的轨迹

    跟踪结果的示例

    通过相干运动指示器特征进行组跟踪,如[1]

    示例组跟踪结果

    演示视频

    人员检测和跟踪系统的视频可以在SPENCER YouTube频道上找到

    运行时性能

    在配有前后RGB-D传感器(Asus Xtion Pro Live)和两台SICK LMS500激光扫描仪的SPENCER机器人平台上,我们通过两台高端游戏笔记本电脑(Intel Core i7-4700MQ,nVidia GeForce 765M)。用于正面传感器的检测器与检测融合管线一起在一台笔记本电脑上执行。背面传感器和人员和组跟踪模块的检测器在第二台笔记本电脑上执行。两台笔记本电脑通过千兆以太网互相连接,平台的其余部分相互连接。

    通过这种配置,组件可以实时运行在20-25 Hz(可视化卸载到单独的计算机上),即使在拥挤的环境中也可以看到30多个人。

    安装

    在Ubuntu 14.04 / ROS Indigo和Ubuntu 16.04 / ROS Kinetic上测试了人员和组检测和跟踪框架。有关机器人操作系统(ROS)的更多信息,请参阅ros.org

    注意:整个框架仅适用于64位系统。在32位系统上,您将遇到Eigen相关的对齐问题(失败的断言)。参见问题#1

    克隆源代码库

    由于我们目前还没有提供任何预先构建的Debian软件包,因此您必须从源代码构建我们的框架。作为第一步,创建一个新的catkin工作区的文件夹,并将GitHub存储库克隆到子文件夹中src

    cd ~/Code
    mkdir -p spencer-people-tracking-ws/src
    cd spencer-people-tracking-ws/src
    git clone https://github.com/spencer-project/spencer_people_tracking.git
    
    2.安装所需的依赖项

    假设您已经安装了ROS Indigo或ROS Kinetic,我们建议您通过以下方式安装我们的框架所需的依赖关系:

    rosdep update
    rosdep install -r --from-paths . --ignore-src
    
    3.初始化catkin工作空间

    接下来,我们建议使用catkin(可通过sudo apt-get install python-catkin-tools)设置工作区:

    cd ..
    catkin config --init --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
    
    4.构建ROS包

    最后,通过以下方式构建所有包:

    catkin build -c -s
    
    5.采购ROS工作区

    构建工作区后,通过以下方式提供:

    source devel/setup.bash
    
    关于地面HOG探测器的CUDA SDK的特别说明

    使用的cudaHOG库rwth_ground_hog需要使用nVidia显卡和已安装的CUDA SDK(推荐版本为6.5)。由于安装CUDA(特别是在使用Optimus / Bumblebee的笔记本电脑上)并且编译库并不简单,因此在此提供了安装说明一旦遵循了这些说明,rwth_ground_hog需要使用catkin 重建包。如果没有安装CUDA SDK,则ROS程序包仍将编译,但不会提供任何功能。

    快速入门教程

    以下演示和三个教程可帮助您轻松开始使用我们的框架。

    演示:来自bagfile的RGB-D和2D激光的多模跟踪

    可以通过运行下载具有2D激光和RGB-D传感器数据来测试我们框架的简短示例性袋子文件

    rosrun spencer_people_tracking_launch download_example_bagfiles.sh
    

    然后,您可以启动

    roslaunch spencer_people_tracking_launch tracking_on_bagfile.launch
    

    这将开始播放一个bagfile(一旦按SPACE下来取消暂停)并运行Rviz进行可视化。

    使用PCL人员检测器,而不是上身检测器

    作为基于深度模板的上身检测器的替代方案,您可以选择从点云库中使用我们稍微修改的人物检测器版本。在使用HOG SVM验证候选ROI之前,该检测器首先执行欧氏距离聚类和头次集群提取。要这样做,传递use_pcl_detector:=true到启动文件。

    启用groundHOG检测器

    如果您已经编译了cudaHOG库(参见上面的说明),您可以选择通过传送use_hog_detector:=true到启动文件来启用groundHOG检测器检测到检测融合流水线将自动融合来自两个检测器的检测。

    教程1:使用单个RGB-D传感器进行人员/组跟踪和可视化

    这是开始使用本地连接到计算机的单个RGB-D传感器的最简单方法。将您的Asus Xtion Pro Live传感器水平放置在平面上,并将其连接到计算机(或播放下面进一步链接的示例袋子文件)。然后从您的人员跟踪工作区中运行以下启动文件(确保您已经提供了它,例如source devel/setup.bash):

    roslaunch spencer_people_tracking_launch tracking_single_rgbd_sensor.launch height_above_ground:=1.6
    

    这将执行以下操作:

    • 启动OpenNi2驱动程序(Asus Xtion Pro),并在/spencer/sensors/rgbd_front_top/相机命名空间中发布RGB-D点云
    • 运行上身RGB-D探测器,假设在传感器下方1.6米处有一个水平地平面。其他高度也可以工作,但检测器已经在大约这个高度被训练。
    • 运行一个简单的检测到检测融合流水线
    • 运行srl_nearest_neighbor_tracker,它将订阅/spencer/perception/detected_persons和发布轨道/spencer/perception/tracked_persons
    • 使用预定义的配置运行RViz,该配置显示点云,传感器的视图平截头体以及检测到和跟踪的人员(使用我们的定制RViz插件)。
    使用MS Kinect v1

    原始的MS Kinect v1传感器不支持OpenNi2。在这种情况下,请附加use_openni1:=true到上述命令行的启动文件以备份到OpenNi1。

    故障排除

    如果您看不到任何检测边界框,请先检查点云是否正确显示在RViz中。如果没有,您的RGB-D传感器可能有问题(USB或OpenNi问题)。

    教程2:使用前后激光+ RGB-D传感器进行跟踪

    要尝试类似于SPENCER机器人平台的传感器配置,请运行:

    roslaunch spencer_people_tracking_launch tracking_on_robot.launch
    

    这假设RGB-D传感器水平安装在地面以上约1.6m处,传感器数据将在以下主题上公布:

    /spencer/sensors/laser_front/echo0  [sensor_msgs/LaserScan]
    /spencer/sensors/laser_rear/echo0   [sensor_msgs/LaserScan]
    /spencer/sensors/rgbd_front_top/{rgb/image_raw,depth/image_rect}  [sensor_msgs/Image]
    /spencer/sensors/rgbd_front_top/{rgb/camera_info} [sensor_msgs/CameraInfo]
    /spencer/sensors/rgbd_rear_top/{rgb/image_raw,depth/image_rect}   [sensor_msgs/Image]
    /spencer/sensors/rgbd_rear_top/{rgb/camera_info}  [sensor_msgs/CameraInfo]
    

    启动文件启动一个类似于教程1(上图)的管道,但是包括用于后部传感器的第二组RGB-D探测器,以及两个2D激光扫描仪的人员探测器。发布上述RGB-D和激光数据的传感器驱动程序不会由此启动文件自动启动。此外,您手动必须启动Rviz。

    使用这些传感器的子集

    请注意,如果只有人检测器的一部分运行,则融合管线会自动重新配置。如果你没有后面的RGB-D传感器,只需注释掉包含rear_rgbd_detectors.launch里面的行tracking_on_robot.launch

    教程3:完全定制传感器配置
    1. 启动自己的启动文件以启动人员检测器,或使用我们提供的启动文件的组合spencer_people_tracking_launch/launch/detectors您可能需要根据需要重新输入和输出主题。
    2. 创建副本detection_to_detection_fusion_pipeline.launch及其子女,如fuse_lasers_and_rgbd.launchspencer_detected_person_association基于所提供的示例,创建自己的管道,分步地对来自不同检测器的检测进行融合。有关更多信息,请参阅相应的包。
    3. 创建freiburg_people_tracking.launch文件的副本spencer_people_tracking_launch调整它是指您自己的融合启动文件在步骤2中创建。
    4. 开始你的副本freiburg_people_tracking.launch
    5. 如果需要,通过启动组跟踪roslaunch spencer_people_tracking_launch group_tracking.launch

    多模态数据集进行评估

    我们的ICRA 2016论文的多模态“运动捕捉”序列可根据要求提供,让您在我们的数据集上评估自己的检测/跟踪算法。为了公平的比较,请尽可能使用此存储库中包含的CLEAR-MOT指标实现。由于隐私原因,机场序列的原始数据不能共享,尽管我们可能会在稍后提供提取的检测。

    信用证,许可证和如何引用

    该存储库中的软件由以下机构维护:

    • Timm Linder,社会机器人实验室,弗莱堡艾伯特 - 路德维希大学
    • 亚琛大学计算机视觉系Stefan Breuers

    不同ROS包的信用量分配给相应README.mdpackage.xml文件中列出的特定作者

    这项工作得到EC根据合同号FP7-ICT-600877(SPENCER)的支持。如果您使用此存储库中包含的软件进行研究,请引用以下出版物:

    关于在非常拥挤和动态环境中的移动平台的多模态人员跟踪
    Linder,T.,Breuers,S.,Leibe,B.,Arras,KO 
    IEEE国际机器人与自动化大会(ICRA)2016

    也可以:

    人机检测,跟踪和可视化使用ROS在移动服务机器人
    Linder,T.和Arras,KO 
    机器人操作系统(ROS):完整参考(第1卷)。
    Springer系统,决策和控制研究,2016年

    该存储库中的大多数软件都是根据BSD许可证发布的。但是,有关详细信息,请查看各个ROS包。

    参考

    [1] Linder T.和Arras KO 多模型假设跟踪RGB-D数据中的人群。IEEE Int。会议信息融合(FUSION'14),萨拉曼卡,西班牙,2014年。

    [2] Jafari O. Hosseini和Mitzel D.和Leibe B。基于移动机器人和头戴式相机的实时RGB-D人检测和跟踪IEEE国际机器人与自动化大会(ICRA'14),2014年。

    [3] Arras KO和Martinez Mozos O.和Burgard W .. 使用增强特征来检测2D范围数据中的人IEEE国际机器人与自动化大会(ICRA'07),意大利罗马2007年。

    [4] Munaro M.和Menegatti E. 快速RGB-D人跟踪服务机器人自主机器人,第37卷第3期,第227-242页,Springer,2014。


    ----

    制图ROS集成

    建立状态 文档状态 Apache 2许可证。

    目的

    制图师是一种在多平台和传感器配置中在2D和3D 中提供实时同时定位和映射(SLAM)的系统。该项目提供制图工具的ROS整合。

    入门

    特约

    您可以在我们的贡献页面上找到有关制图师ROS整合的信息


    ----

    AutoRally

    替代文字

    AutoRally研究平台软件。

    自动平台网站

    AutoRally Youtube频道

    研究页面AutoRally与:

    特约

    我们欢迎错误修复,增强功能,新功能和反馈

    请将提交请求提交给符合ROS C ++样式指南devel分支我们使用Gitflow,所以主分支保留发布。

    安装说明

    内容

    1. 安装先决条件
    2. 克隆版本库
    3. 安装自动ROS依赖关系
    4. 编译/运行
    5. 生成文档
    6. 模拟测试设置

    1.安装先决条件

    1. 安装Ubuntu 14.04 64位

    2. 安装所需的软件包

      sudo apt-get install git doxygen openssh-server libusb-dev texinfo

      推荐工具

      以下工具对于该项目是有用的,但不是必需的。

      • FEH
      • cutecom
      • cmake的-诅咒贵
      • 香菜
      • 突触
      • Arduino的
      • 蟒蛇,termcolor
    3. 安装 ros-indigo-desktop-full

    4. 安装gtsam

      按照gtsam 快速入门指南,克隆并安装gtsam 开发分支。

      而不是cmake ..使用:

      cmake -DGTSAM_INSTALL_GEOGRAPHICLIB=ON -DGTSAM_WITH_EIGEN_MKL=OFF ..

      一旦安装完成,确保linux可以看到共享库:

      sudo ldconfig

    克隆或叉库

    在catkin工作空间中获取自动存储建议的位置是~/catkin_ws/src/,但任何有效的catkin worskspace源文件夹将工作。如果您正在使用代码,我们建议先分一批。

    要直接从AutoRally回购克隆:

    git clone https://github.com/AutoRally/autorally.git
    

    还将IMU代码克隆到同一个catkin工作空间中:

    git clone https://github.com/AutoRally/imu_3dm_gx4.git
    

    3.安装自动ROS依赖关系

    在catkin工作区文件夹中,运行此命令来安装该项目依赖的包。

    rosdep install --from-path src --ignore-src -y

    编译运行

    catkin_make从catkin工作空间文件夹编译并安装运行

    由于ROS分布式发射系统的额外要求,您必须运行

    source src/autorally/autorally_util/setupEnvLocal.sh

    之前使用任何AutoRally组件。有关如何为您的车辆平台上的分布式发射设置此系统的更多信息,请参阅维基

    注意:如果您不熟悉catkin,请知道您必须运行source catkin_ws/devel/setup.sh,ROS将能够找到自动包。这行可以添加到你的〜/ .bashrc文件。

    5.生成文档

    您可以生成或运行更新代码文档doxygenautorally/

    查看autorally/doc/html/index.html在Web浏览器中打开代码文档

    6.启动AutoRally Simulation以测试配置

    roslaunch autorally_gazebo autoRallyTrackGazeboSim.launch

    您可以使用USB手柄来驱动模拟平台。在启动时,节点发布runstop消息joystick假的按右键(通常标记为X,Y,A,B或正方形,三角形,X,圆圈)的任何按钮可切换发布的值。

    通过查看主题中的runstopMotionEnabled参数来验证运行状态运动是否启用/chassisState

    如果您没有使用游戏手柄,则必须为平台移动配置另一个runstop信息源:

    • 评论第93行 autorally_gazebo/launch/autoRallyTrackGazeboSim.launch

    • rosrun rqt_publisher rqt_publisher

    和rqt_publisher配置来发布消息主题/runstop类型的autorally_msgs/runstop在1Hz与sender设置为rqt_publishermotionEnabled设置为

    • 验证runstopMotionEnabled真实/chassisState话题。

    7.自主驾驶模拟

    在本节结尾,机器人将使用可用的控制器在模拟中自主驾驶autorally_control

    将机器人定位在与模拟开始时相同的位置,并确保启动运行停止运动(设置为true)。

    启动状态估计器:

    autorally_core/launch/state_estimator.launch变化InvertYInvertZ,则:

    rosparam set /gps_imu/FixedInitialPose true
    roslaunch autorally_core state_estimator.launch
    

    开始航点跟随者:

    roslaunch autorally_control waypointFollower.launch
    

    启动恒速控制器并告诉它要驱动什么速度:

    roslaunch autorally_control constantSpeedController.launch
    rosrun rqt_publisher rqt_publisher
    

    配置发布商constantSpeedController/speedCommand的类型std_msgs/Float64为10的价格为3(您可以调整他的价值一旦一切正在运行)。该值是以m / s为单位的目标速度,只要您执行此操作,平台应在移动启用时移动

    如果机器人转动并击中障碍物,可能是因为状态估计器没有收敛,所以它的方向估计是不正确的。只需选择轨道障碍并将其移动以允许机器人继续驾驶,并且估计器应该收敛,并且车辆将返回到障碍物内。

    下一步是什么

    有关控制器和状态估计器的更详细的解释可以在wiki上找到

    控制AutoRally平台是您自己的控制器如何控制AutoRally平台(在模拟或硬件上)的教程。

    如果您正在配置物理AutoRally平台,则下一步是配置计算框,所有外设和启动系统。这些说明在“ 平台配置说明”中找到


    ----

    IAI Kinect2

    维护者

    先阅读

    在提出问题之前,请仔细阅读本README和各个组件的内容。我们得到很多重复的问题,所以当你有问题时,我们敦促大家检查github问题(包括关闭的)你的问题很可能已经在讨论过了。

    该项目的目标是给您一个驱动程序和从Kinect-2传感器接收数据所需的工具,以一种有用的机器人技术。您仍然需要知道如何使用ROS来使用它。请遵循ROS教程您还需要学习如何使用点云,深度云或图像(计算机视觉)来处理数据。

    注意: 有关 iai_kinect2软件包及其组件的 问题请使用GitHub问题不要写邮件

    目录

    描述

    这是用于Kinect One(Kinect v2)的ROS接口的工具和库的集合。

    它包含:

    常问问题

    如果我有任何问题或某事不奏效,我该怎么办?

    首先你应该看看这个FAQ和libfreenect2FAQ其次,从libfreenect2问题页面和iai_kinect2问题页面看类似的问题和解决方案。

    点云尚未发布?

    点云仅在使用启动文件时发布。确保启动kinect2_bridge roslaunch kinect2_bridge kinect2_bridge.launch

    它可以与OpenCV 3.0一起使用

    简答:不。

    长的答案:是的,可以使用OpenCV 3.0编译这个包,但是它不会工作。这是因为使用了cv_bridge,它本身在ROS Indigo / Jade中使用OpenCV 2.4.x进行编译,并且无法与OpenCV版本进行链接。OpenCV 3.0的工作支持可能会带来未来的ROS版本。

    kinect2_bridge不工作/崩溃,有什么问题?

    有很多原因kinect2_bridge可能不工作。首先要找出问题是否与kinect2_bridgelibfreenect2一个很好的测试工具是Protonect它位于的二进制文件libfreenect2/build/bin/Protonect它直接使用libfreenect2,对其他库的依赖性最小,因此它是第一个测试的好工具。

    执行:

    • ./Protonect gl 测试OpenGL支持。
    • ./Protonect cl 测试OpenCL支持。
    • ./Protonect cpu 测试CPU支持。

    运行前kinect2_bridge请确保Protonect正在工作,并显示颜色,深度和图像。如果其中有些是黑色的,那么有一个与此无关的问题kinect2_bridge,您应该从libfreenect2 GitHub页面中查看有关帮助的问题。

    如果其中一人的作品,尝试与工作的一个kinect2_bridgerosrun kinect2_bridge kinect2_bridge _depth_method:=<opengl|opencl|cpu>您也可以使用更改注册方法_reg_method:=<cpu|opencl>

    Protonect工作正常,但kinect2_bridge仍然不工作/崩溃。

    如果是这样的话,你必须确保Protonect使用相同版本libfreenect2kinect2_bridge一样。要做到这一点,运行makesudo make install再次build文件夹中。再试kinect2_bridge一次。

    cd libfreenect2/build
    make & sudo make install
    

    还要确保你没有使用OpenCV 3.0。

    如果仍然崩溃,请在调试中编译并运行gdb:

    cd <catkin_ws>
    catkin_make -DCMAKE_BUILD_TYPE="Debug"
    cd devel/lib/kinect2_bridge
    gdb kinect2_bridge
    // inside gdb: run until it crashes and do a backtrace
    run
    bt
    quit
    

    打开一个问题,并发布问题描述和backtrace(bt的输出

    kinect2_bridge挂起并打印“等待客户端连接”

    这是正常的行为。'kinect2_bridge'仅在客户端连接时处理数据(ROS节点至少听到一个主题)。这样可以节省CPU和GPU资源。一旦开始kinect_viewerrostopic hz其中一个主题,处理应该开始。

    rosdep:找不到[kinect2_bridge]或[kinect2_registration]的rosdep定义

    rosdep将输出错误无法找到[kinect2_bridge][kinect2_registration]这很好,因为它们都是iai_kinect2包的一部分,rosdep不知道这些包。

    Protonect或kinect2_bridge输出[TransferPool :: submit]提交转移失败

    这表示USB连接有问题。

    我还有一个问题,该怎么办?

    首先,检查GitHub上的问题页面是否有类似的问题,因为它们可能包含它们的解决方案。默认情况下,您只会看到公开的问题,但是如果您点击,closed您将会解决这些问题。还有一个搜索字段帮助找到类似的问题。

    如果您没有发现问题的解决方案,请随时为您的问题开辟新的问题。请详细说明您的问题,并提供错误信息和日志输出。

    依赖

    • ROS Hydro / Indigo
    • OpenCV(2.4.x,推荐使用官方Ubuntu存储库)
    • PCL(1.7.x,推荐使用官方Ubuntu存储库中的一个)
    • 特征(可选,但推荐)
    • OpenCL(可选,但推荐)
    • libfreenect2(> = v0.2.0,用于稳定性检出最新的稳定版本)

    安装

    1. 安装ROS Ubuntu 14.04的说明

    2. 设置您的ROS环境

    3. 安装libfreenect2

      按照说明操作,并使用C ++ 11 cmake .. -DENABLE_CXX11=ON代替cmake ..

      如果某些事情不起作用,请查看最新的稳定版本git checkout v0.2.0

    4. 将此存储库克隆到您的catkin工作空间中,安装依赖项并构建它:

    cd〜/ catkin_ws / src / git clone https://github.com/code-iai/iai_kinect2.git cd iai_kinect2 rosdep install -r --from-paths。cd〜/ catkin_ws catkin_make -DCMAKE_BUILD_TYPE =“Release”

    
       *Note: `rosdep` will output errors on not being able to locate `[kinect2_bridge]` and `[depth_registration]`.
       That is fine because they are all part of the iai_kinect2 package and `rosdep` does not know these packages.*
    
       *Note: If you installed libfreenect2 somewhere else than in `$HOME/freenect2` or a standard location like `/usr/local`
       you have to specify the path to it by adding `-Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2` to `catkin_make`.*
    
    5. Connect your sensor and run `kinect2_bridge`:
    
    

    roslaunch kinect2_bridge kinect2_bridge.launch

    6. Calibrate your sensor using the `kinect2_calibration`. [Further details](kinect2_calibration#calibrating-the-kinect-one)
    7. Add the calibration files to the `kinect2_bridge/data/<serialnumber>` folder. [Further details](kinect2_bridge#first-steps)
    8. Restart `kinect2_bridge` and view the results using `rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud`.
    
    ## GPU acceleration
    
    ### OpenCL with AMD
    
    Install the latest version of the AMD Catalyst drivers from https://support.amd.com and follow the instructions. Also install `opencl-headers`.
    
    

    sudo apt-get install opencl-headers

    
    ### OpenCL/CUDA with Nvidia
    
    Go to [developer.nvidia.com/cuda-downloads](https://developer.nvidia.com/cuda-downloads) and select `linux`, `x86_64`, `Ubuntu`, `14.04`, `deb(network)`.
    Download the file and follow the instructions. Also install `nvidia-modprobe` and `opencl-headers`.
    
    

    sudo apt-get install nvidia-modprobe opencl-headers

    
    You also need to add CUDA paths to the system environment, add these lines to you `~/.bashrc`:
    
    

    export LD_LIBRARY_PATH =“/ usr / local / cuda / lib64:$ {LD_LIBRARY_PATH}”export PATH =“/ usr / local / cuda / bin:$ {PATH}”

    
    A system-wide configuration of the libary path can be created with the following commands:
    
    

    echo“/ usr / local / cuda / lib64”| sudo tee /etc/ld.so.conf.d/cuda.conf sudo ldconfig

    
    ### OpenCL with Intel
    
    You can either install a binary package from a PPA like [ppa:floe/beignet](https://launchpad.net/~floe/+archive/ubuntu/beignet), or build beignet yourself.
    It's recommended to use the binary from the PPA.
    
    

    sudo add-apt-repository ppa:floe / beignet && sudo apt-get update sudo apt-get install beignet beignet-dev opencl-headers

    
    ## Citation
    
    If you used `iai_kinect2` for your work, please cite it.
    
    ```tex
    @misc{iai_kinect2,
      author = {Wiedemeyer, Thiemo},
      title = {{IAI Kinect2}},
      organization = {Institute for Artificial Intelligence},
      address = {University Bremen},
      year = {2014 -- 2015},
      howpublished = {\url{https://github.com/code-iai/iai\_kinect2}},
      note = {Accessed June 12, 2015}
    }
    

    结果应该与此类似(可能取决于所使用的参考书目风格):

    T. Wiedemeyer, “IAI Kinect2,” https://github.com/code-iai/iai_kinect2,
    Institute for Artificial Intelligence, University Bremen, 2014 – 2015,
    accessed June 12, 2015.
    

    截图

    以下是我们的工具包的截图: 彩色图像深度图像点云图像查看器


    ----

    最后列一些参考书籍:

    掌握机器人编程的ROS

    掌握ROS的机器人编程书籍教程源代码

    封面

    买书

    作者

    安装

    该代码可与ROS Jade和ROS Indigo相兼容。本书提到了每个包的详细安装说明

    教程

    • 第1章: ROS及其软件包管理简介
    • 第2章:在ROS中使用3D机器人建模
    • 第3章:使用ROS和凉亭模拟机器人
    • 第4章:使用ROS MoveIt!和导航堆栈
    • 第5章:使用Pluginlib,Node和Gazebo插件
    • 第6章:编写ROS控制器和可视化插件
    • 第7章:将I / O板,传感器和执行器连接到ROS
    • 第8章:使用ROS,Open-CV和PCL编程视觉传感器
    • 第9章:构建和接口ROS中的差分驱动器移动机器人硬件
    • 第10章:探索ROS-MoveIt的高级功能!
    • 第11章:工业机器人的ROS
    • 第12章:ROS中的故障排除和最佳实践

    ROS机器人项目

    ROS机器人项目

    封面

    买书

    作者

    安装

    该代码可与ROS Kinetic和ROS Indigo合作。本书提到了每个包的详细安装说明

    教程

    • 第1章: ROS Robotics应用开发入门
    • 第2章:使用ROS,OpenCV和Dynamixel Servos进行人脸检测和跟踪
    • 第3章:在ROS中构建一个Siri-like Chatbot
    • 第4章:使用ROS控制嵌入式电路板
    • 第5章:使用手势远程操作机器人
    • 第6章:对象检测和识别
    • 第7章:使用ROS和TensorFlow深入学习
    • 第8章:MATLAB和Android上的ROS
    • 第9章:构建自主移动机器人
    • 第10章:使用ROS创建自驾车!
    • 第11章:使用VR耳机和跳跃运动的远程操作机器人
    • 第12章:通过网络控制机器人

    使用Python学习机器人

    学习机器人使用Python书籍教程源代码

    封面

    买书

    作者

    安装

    该代码可与ROS Jade和ROS Indigo相兼容。本书提到了每个包的详细安装说明

    教程

    • 第1章:机器人介绍
    • 第2章:机器人的机械设计
    • 第3章:使用ROS和凉亭进行机器人模拟
    • 第4章:设计Chefbot硬件
    • 第5章:使用机器人执行器和车轮编码器
    • 第6章:使用机器人传感器
    • 第7章:使用Python和ROS编程视觉传感器
    • 第8章:使用Python和ROS进行语音识别和综合
    • 第9章:使用Python将人工智能应用于Chefbot
    • 第10章:使用Python来整合Chefbot硬件并将其与ROS进行连接
    • 第11章:使用QT和Python为机器人设计GUI
    • 第12章:Chefbot的校准和测试

    ----


    展开全文
  • 平衡车例程代码

    2020-06-02 23:31:22
    平衡车-电动平衡车,又叫体感车、思维车、摄位车等。其运作原理主要是建立在一种被称为“动态稳定”(Dynamic Stabilization)的基本原理上,利用车体内部的陀螺仪和加速度传感器,来检测车体姿态的变-pinghengche
  • 微信小程序-车源宝示例代码.zip 小程序模板代码,可以直接从源码里粘贴复制过来,虽然这样做不利于自己独立编写代码
  • 美国天才计算机大牛的汽车自动驾驶技术完整源代码,包含完整源代码、深度学习训练好的数据和算法原理PDF。该软件为实践过的,汽车已经在高速路上跑过了!
  • 车源信息api返回指定车源的详细信息,包括车源ID、车源详细信息链接、车源所在城市id、车源信息标题、品牌名称、车系名称、车源报价、行驶里程、车辆上牌日期、变速箱、颜色、排量等等。 接口名称:车源信息api ...

    车源信息api返回指定车源的详细信息,包括车源ID、车源详细信息链接、车源所在城市id、车源信息标题、品牌名称、车系名称、车源报价、行驶里程、车辆上牌日期、变速箱、颜色、排量等等。

    接口名称:车源信息api

    接口平台:第三方api

    接口地址:http://op.juhe.cn/che300/query

    支持格式:JSON/XML

    请求方式:HTTP GET/POST

    请求示例:

    接口备注:返回指定车源的详细信息

    车源信息api调用代码JSON返回示例:

     

    {
    "reason": "success",
    "result": {
       "car_detail": {
        "id":"14658896", /*车源id*/
        "url":"http:nj.che300.com\/detail_14658896.html", /*车源详细信息链接*/
        "city":"11", /*车源所在城市id*/
        "prov":"11", /*车源所在省份id*/
        "title":"奥迪A4L 2012年款 A4L 2.0TFSI 无级豪华型金盛店出售精品私家车", /*车源信息标题*/
        "car_desc":"定速巡航六碟cd 电动加热真皮座椅停车辅助系统店现推出国家认定资质的车况检测业务,可对车况进行权威检测。同时对检测结果郑重承诺:如若检测有误, 原价退车,(同时本店还推出二手车按揭贷款业务,最低0首付)。如想进一步了解可直接拨打分机电话联系跟单业务员。小孙竭诚为您服", /*车源概况描述
        "pic_url":"http:\/\/img.273.com.cn\/eqsdfs01\/M03\/B8\/C6\/CgDJBFOHIduANEVJAAHQ2Wu5uxU049_185-140c_9_0_1.jpg", [color:red]/*车源封面图片*/
        "brand_id":"1", /*品牌id*/
        "brand_name":"奥迪", /*品牌名称*/
        "series_id":"1", /*车系id*/
        "series_name":"奥迪A4L", /*车系名称*/
        "model_id":"15", /*车型id*/
        "model_name":"2012年款 奥迪A4L 2.0TFSI 无级豪华型", /*车型名称*/
        "price":"26", /*车源报价*/
        "mile_age":"2.1", /*行驶里程*/
        "register_date":"2012-01-01 00:00:00", /*车辆上牌日期*/
        "gear_type":"自动", /*变速箱*/
        "color":"红色", /*颜色*/
        "liter":"2.00L", /*排量*/
        "tel":"400-6030-273 转 079 035", /*联系电话*/
        "tel_url":null, /*联系电话图片,有些车源网站的联系方式是图片的方式展示*/
        "contactor":"孙海峰", /*联系人*/
        "seller_type":"2", /*卖家类型,1表示个人,2表示商家*/
        "dealer_name":"南京金盛服务中心", /*商家名称*/
        "car_source":"273", /*车源来源网站*/
        "post_time":"2014-05-29 00:00:00", /*车源发布时间*/
        "update_time":"2014-05-29 00:00:01", /*车源更新时间*/
        "model_price":"39.9", /*车型指导价*/
        "eval_price":"23.5919", /*车源估值*/
        "vpr":"0.907379948451491", /*性价比*/
        "tlci_date":"2015-01-01", /*交强险到期时间*/
        "audit_date":"2015-01-01", /*商业险到期时间*/
        "next_year_eval_price":"22.392327891262003", /*车辆下一年估值*/
        "pic_list":[ /*车辆图片列表*/
        "http:\/\/www.che300.com\/service\/QueryService.php?oper=getImage&url=http:\/\/www.autoimg.cn\/2scimg\/2013\/6\/14\/b_5709325315977847055.jpg",
        "http:\/\/www.che300.com\/service\/QueryService.php?oper=getImage&url=http:\/\/www.autoimg.cn\/2scimg\/2013\/6\/14\/b_5095409273223578011.jpg"]
        }}
       },
      "error_code": 0  
    }

     

    转载于:https://www.cnblogs.com/jiekoupt/p/4874324.html

    展开全文
  • 车源宝(微信小程序)源码 源码描述: 一、源码特点 1、微信小程序,欢迎大家来下载。 二、菜单功能 1、首页、车源、寻车、登录、注册 三、注意事项 1、开发环境为微信开发者工具,无数据库。
  • 微信小程序车源宝-找车-租车-买车-卖车.zip
  • 在工作台内可以发布车源、户主寻车、我的订单、通知消息等功能,在服务模块中,可看到车源管理、物流管理、车商金融、车市头条等小板块,项目代码完整,在微信小程序开发工具中可编译项目。  在pages框架中,包括了...
  • 无人驾驶汽车系统入门(十四)——ROS入门与实践(1) 前言:作为目前最广泛使用的开源机器人软件平台,ROS(Robot Operating System)极大的提升了机器人开发的效率。目前无人驾驶系统的实际实现仍然依赖于ROS,作为...

    无人驾驶汽车系统入门(十四)——ROS入门与实践(1)

    前言:作为目前最广泛使用的开源机器人软件平台,ROS(Robot Operating System)极大的提升了机器人开发的效率。目前无人驾驶系统的实际实现仍然依赖于ROS,作为一个相对成熟的机器人软件平台,ROS虽然存在一些缺点,在无人驾驶系统的系统实现上,ROS仍然是开源框架中最好的选择,这也是为什么诸如Apollo,Autoware等无人驾驶开源项目会选择ROS。本文主要讨论ROS的入门知识,后续的文章会对基于ROS的无人车系统编程进行进一步探讨。

    创作不易,转载请注明出处: http://blog.csdn.net/AdamShan/article/details/79653378

    ROS简介

    ROS是什么?

    ROS概念:ROS = Robot Operating System,包括:
    1. 通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系
    2. 工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统;
    3. 能力:具有控制,规划,预测,定位操纵等功能;
    4. 生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

    ROS的历史

    ROS系统是起源于2007年斯坦福大学人工智能实验室的STAIR项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作,2008年之后就由Willow Garage来进行推动。如今已被许多的学校公司所使用。为机器人变成提供了实际标准(Defacto standard)

    ROS的特性

    1. 点对点设计:ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战。
    2. 分布式设计:程序可以在多核计算机中运行,并且可以通过网络来通信。
    3. 多语言:ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。语言无关的消息处理,让多种语言可以自由的混合和匹配使用。
    4. 轻量级:鼓励将所有的驱动和算法逐渐发展成为和ROS没有依赖性单独的库。ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,就允许了对简单的代码超越原型进行移植和重新使用。
    5. 免费且开源:ROS大多数的源代码都是公开发布的。

    ROS中的概念

    需要理解的ROS中的核心概念包括:

    • master(主机)
    • node(节点)
    • topic(主题)
    • message(消息)

    Master(主机)

    用于管理节点间的通信,ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。

    开启Master命令:

    roscore

    Node(节点)

    节点就是一些独立编译,执行运算任务的进程。ROS利用规模可增长的方式使代码模块化:一个系统就是典型的由很多节点组成的。在这里,节点也可以被称之为“软件模块”。我们使用“节点”使得基于ROS的系统在运行的时候更加形象化:当许多节点同时运行时,可以很方便的将端对端的通讯绘制成一个图表,在这个图表中,进程就是图中的节点,而端对端的连接关系就是其中弧线连接。

    运行节点:

    rosrun package_name node_name
    

    查看激活节点列表:

    rosnode list
    

    检索有关节点的信息:

    rosnode info node_name
    

    Topic(主题)

    在ROS中消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。

    查看激活主题:

    rostopic list
    

    订阅和打印一个主题的内容:

    rostopic echo /topic
    

    显示主题相关信息:

    rostopic info /topic
    

    Message(消息)

    消息用来定义主题topic类型的数据结构,是整型,浮点型,布尔型,字符串等一系列结构进行压缩后,定义成*.msg文件。
    查看主题类型:

    rostopic type /topic
    

    向topic发布一个消息:
    rostopic pub /topic type args

    catkin 创建系统
    catkin是ROS构建系统,用来生成可执行文件,库和接口。
    (现在很多人建议用catkin build 来代替 catkin_make)
    首先进入工作区:

    cd ~/catkin_ws
    

    然后创建一个包:

    catkin_create_pkg package_name depend1 depend2 depend3

    每当你创建一个新包时,都需要更新你的环境:

    source devel/setup.zsh
    

    在catkin创建的工作区中包含以下三个文件夹:
    1. src:这个就是用来存放源码的地方,操作者在这里面进行编码,修改
    2. build:用来存放缓存文件和一些中间文件
    3. devel:(development)存放创建目标的地方(在存放之前安装)

    ROS中的项目组织

    ROS的软件使用package(包)进行组织,包下通常包含一下内容:

    • /src: 源代码
    • /msg: 定义一些message
    • /srv: 定义一些service
    • /launch:包含用于启动节点的launch file
    • /config:包含配置文件
    • /test: Unit/ROS tests
    • /include/package_name: C++ include头文件
    • /doc:包含文档文件
    • package.xml: package 信息
    • CMakeLists.txt: CMake构建文件

    package.xml

    这个文件定义了package的属性,这些属性包括:

    • package的名称
    • 版本号
    • 作者
    • 协议
    • 对其他package的依赖
    • ……

    下面是一个简单的例子的package信息:

    <?xml version="1.0"?>
    <package format="2">
      <name>ros_practice</name>
      <version>0.0.1</version>
      <description>The ros_practice package</description>
      <maintainer email="your-email@gmail.com">Adam</maintainer>
    
      <license>MIT</license>
    
      <buildtool_depend>catkin</buildtool_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>sensor_msg</build_depend>
      <build_export_depend>roscpp</build_export_depend>
      <build_export_depend>sensor_msg</build_export_depend>
      <exec_depend>roscpp</exec_depend>
      <exec_depend>sensor_msg</exec_depend>
    </package>

    在这个例子中,我们使用了roscpp的client的库,同时我们使用了一个sensor_msg消息。

    CMakeLists.txt

    CMakeLists.txt文件是CMake构建系统的输入,在这里我们不会详细讨论CMake的写法(因为它本身可以很复杂),我们大致熟悉一下我们常用的CMake的语法:

    • cmake_minimum_required:需要的CMake的最低版本
    • project():包的名称
    • find_package() 查找建构是需要的其他 CMake/Catkin 包
    • add_message_files() add_service_files() add_action_files 生成Message/Service/Action
    • generate_messages() 调用消息生成
    • catkin_package() 指定包的构建信息
    • add_library()/add_executable()/target_link_libraries() 用于构建的库,可执行代码
    • install() 安装规则

    下图是一个 CMakeLists.txt 的例子:

    这里写图片描述

    基于Husky模拟器的实践

    我们使用Husky模拟器来实践ROS编程,Husky本身是一种小型的轮式移动机器人(和我们关注的无人车比较相似),该模拟器基于Gazebo物理仿真环境,Gazebo是一款机器人仿真软件,基于ODE物理引擎,可以模拟机器人以及环境中的很多物理特性,Husky模拟器的安装请参考:
    http://wiki.ros.org/husky_gazebo/Tutorials/Simulating%20Husky

    如果ros kinetic使用apt安装存在问题的话,请参考:https://answers.ros.org/question/256756/how-to-install-husky-simulator-in-kinetic/

    使用roslaunch启动husky模拟器,启动一个空的世界:

    roslaunch husky_gazebo husky_empty_world.launch

    roslaunch是ROS中启动多个节点的机制,Launch文件是ROS提供的可以同时运行多个nodes的文件。Launch文件以一种特殊的XML格式编写,以.launch结尾。

    在运行了模拟器以后使用rqt_graph查看正在运行的节点和话题:

    这里写图片描述

    我们发现/gazebo节点订阅了一个/cmd_vel话题,使用rostopic info /husky_velocity_controller/cmd_vel 查看话题信息,得到如下信息:

    Type: geometry_msgs/Twist
    
    Publishers:
     * /twist_mux (http://adam:40181/)
    
    Subscribers:
     * /gazebo (http://adam:35678/)

    也就是说,这个控制指令是一个geometry_msgs/Twist消息,ROS中我们使用geometry_msgs/Twist消息类型来发布运动命令。控制命令会被基本的控制器节点使用。话题 /cmd_vel 全名 ” command velocities “ 。控制器节点订阅 /cmd_vel 话题,并将里面的运动命令(Twist 消息)通过 PID 控制算法转换成电机信号。使用osmsg show geometry_msgs/Twist查看消息的格式:

    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z

    其中,linear表示线速度(单位:m/s) ;angular表示角速度(单位:rad/s) 。

    下面我们在指令行中通过向/husky_velocity_controller/cmd_vel发送Twist消息来驱动我们的小车,我们让它以0.2m/s的速度和0.2rad/s的角速度运动:

    rostopic pub -r 10  /husky_velocity_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

    其实我们还可以直接向/cmd_vel主题发消息来控制小车(不信的话可以试试rostopic info /cmd_vel看看订阅它的节点):

    rostopic pub -r 10  /cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

    接下来我们使用手柄来控制Husky机器人,我们使用teleop_twist_joy包来实现对手柄数据转换为Twist指令并将Twist发布到/cmd_vel主题,启动teleop_twist_joy下的launch文件:

    roslaunch teleop_twist_joy teleop.launch

    启动后会在终端打印如下的信息:

    PARAMETERS
     * /joy_node/autorepeat_rate: 20
     * /joy_node/deadzone: 0.3
     * /joy_node/dev: /dev/input/js0
     * /rosdistro: kinetic
     * /rosversion: 1.12.12
     * /teleop_twist_joy/axis_angular: 0
     * /teleop_twist_joy/axis_linear: 1
     * /teleop_twist_joy/enable_button: 8
     * /teleop_twist_joy/enable_turbo_button: 10
     * /teleop_twist_joy/scale_angular: 0.4
     * /teleop_twist_joy/scale_linear: 0.7
     * /teleop_twist_joy/scale_linear_turbo: 1.5
    
    NODES
      /
        joy_node (joy/joy_node)
        teleop_twist_joy (teleop_twist_joy/teleop_node)
    

    下面的NODES表示启动了joy_nodeteleop_node两个节点,它们分别位于joyteleop_twist_joy两个包中,上面是启动文件的参数信息,我们着重看一下三个参数:

     * /teleop_twist_joy/axis_angular: 0
     * /teleop_twist_joy/axis_linear: 1
     * /teleop_twist_joy/enable_button: 8

    其中enable_button表示必须要按下该按键(8号按键,在我的手柄上是back键)才能控制,前面两个分别表示控制速度和角速度的按钮(在我的手柄上是左摇杆)

    Note: Husky作为一种轮式机器人,其能够控制的速度只有x方向的速度(前向)和z方向的角速度(Yaw,偏航角速度)

    我们看一下此时的rqt_graph:

    这里写图片描述

    至此,命令行下的ros操作相信大家都熟悉并理解了,后面我们开始ROS编程部分。

    展开全文
  • OpenJWeb快速开发平台免费开放物流子系统代码,下载...(2)工行网银支付详细代码(参考合同管理)(3)车辆管理、车源管理、货源管理、车源货源发布等功能。 用户可通过车辆管理代码来熟悉openjweb开发平台的代码

    OpenJWeb快速开发平台免费开放物流子系统代码,下载地址:

    http://www.openjweb.com/portal/products/code.rar

     

    物流子系统包括:

    (1)mabABC GIS地图显示,用于显示网上车场、网上货场。
    (2)工行网银支付详细代码(参考合同管理)

    (3)车辆管理、车源管理、货源管理、车源货源发布等功能。

     

    用户可通过车辆管理代码来熟悉openjweb开发平台的代码特点。此代码包包含物流子系统相关的action、实体、service层的代码。

    如果用户需要下载安装程序,可访问

    http://www.openjweb.com/portal/products/openjweb21.rar

    在本机配置好安装程序后,通过admin用户名和123456口令登录系统可看到物流相关的模块。

    用户必须注册才能下载代码和安装程序。

     

    OpenJWeb开发组 联系人:王先生 QQ:29803346 手机18600510596 Email:baozhengw@163.com

    展开全文
  • PS2遥控小车

    2020-06-03 23:32:45
    PS2遥控小车。用PS2手柄控制直流电机,主控板为stm32f103zet6.驱动板为L298N。
  • 这是本科期间做的平衡车资料,软件(调试通过、无错误)、硬件资料全都有,可以用它DIY自己的平衡小车。内容包含所有平衡小车相关资料(硬件(stm32)、源码、电路图、连线方法等);源码包含括互补滤波版、卡尔曼滤波板...
1 2 3 4 5 ... 20
收藏数 646
精华内容 258