zoukankan      html  css  js  c++  java
  • RoboWare Studio 安装

    RoboWare Studio是一个ROS集成开发环境。它使 ROS开发更加直观、简单、并且易于操作。可进行ROS工作区及包的管理、代码编辑、构建及调试。

    下载链接:https://pan.baidu.com/s/1D169dFyf2OD3SFBZVZy3pQ   密码:3iuk

    准备

    安装前,请查看系统环境并确认:
    (1)操作系统 为 Ubuntu。
    (2)已完成ROS的安装配置。ROS安装步骤可参照官方网站:
             http://wiki.ros.org/kinetic/Installation/Ubuntu
    (3)可使用 catkin_make 构建ROS包。若无法构建,可能需要运行:

    $ sudo apt-get install build-essential
    (4)为支持 Python 相关功能,需要安装 pylint。

    $ sudo python -m pip install pylint
    $ sudo apt-get install python-pip
    (5)为支持 clang-format 相关功能,需要安装 clang-format-3.8 或更高版本。

    $ sudo apt-get install clang-format-3.8
    安装

    下载Roboware Studio最新版,在下载的文档下,鼠标右键调出终端输入:

    $ sudo dpkg -i roboware-studio_<version>_<architecture>.deb
    i386为32位版本,amd64为64位版本

    输入安装包的名字时,可以tab键自动补全~!

    安装过程会弹出 用户协议 可以按 ESC 选择确认!

    安装过程会弹出 用户协议 可以按 ESC 选择确认!

    安装过程会弹出 用户协议 可以按 ESC 选择确认!(坑了好多人,重要的事说三遍~!)

    启动

        图标就是这个

    点击图标打开软件:

    新建工作区,选择用户目录下 ,名称 :catkin_ws


    进来后就是这个样子:


    选择Release , 然后在上面菜单栏ROS点击构建:

    构建之后:

    测试ros是否正常运行,运行roscore :

    测试正常~! ctrl + c 取消


    新建一个包:

    更改 package.xml 信息(随便按键盘字母就能输入了):

    左上角 文件--保存

    编辑依赖的ROS包列表

    CMakeLists.txt 自动更新依赖关系:

    ctrl + ` 调出roboware studio终端
    在工作空间编译一下lee_package:

    创建ROS消息和ROS服务
    右键包名,新建Msg文件夹:

    保存。


    CMakeLists.txt 自动加入一些运行依赖(如果不用这个IDE必须手动添加):

    这个软件的强大开始体现~!


    测试下msg:

    OK~!


    创建一个Srv空文件夹:
    srv文件分为请求和响应两部分,由'---'分隔。下面是srv的一个样例:
    int64 A
    int64 B
    ---
    int64 Sum
    其中 A 和 B 是请求, 而Sum 是响应。

    同样的CMakeLists.txt 自动添加:

    下面通过rossrv show命令,检查ROS是否能够识该服务

    重新编译我们的package:

    编译完成!
    所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。
    生成的C++头文件将会放置在:
    ~/catkin_ws/devel/include/lee_package/
    Python脚本语言会在:
    ~/catkin_ws/devel/lib/python2.7/distpackages/lee_package/msg 目录下创建。
    lisp文件会出现在:
    ~/catkin_ws/devel/share/commonlisp/ros/lee_package/msg/ 路径下.

    创建消息发布器 talker 和订阅器 listener :

    #include "ros/ros.h"
    #include "std_msgs/String.h"
    #include "sstream"

    int main(int argc, char **argv)
    {
    ros::init(argc, argv, "talker");
    ros::NodeHandle n;
    ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
    ros::Rate loop_rate(10);
    int count=0;
    while (ros::ok())
    {
    std_msgs::String msg;
    std::stringstream ss;
    ss << "hello ros~!" << count;
    msg.data = ss.str();
    ROS_INFO("%s",msg.data.c_str());
    chatter_pub.publish(msg);
    ros::spinOnce();
    loop_rate.sleep();
    ++count;
    }
    return 0;
    }


    #include "ros/ros.h"
    #include "std_msgs/String.h"
    void chatterCallback(const std_msgs::String::ConstPtr& msg)
    {
    ROS_INFO("I heard: [%s]", msg->data.c_str());
    }
    int main(int argc, char **argv)
    {
    ros::init(argc, argv, "listener");
    ros::NodeHandle n;
    ros::Subscriber sub = n.subscribe("chatter", 1000,chatterCallback);
    ros::spin();
    return 0;
    }
    现在运行 catkin_make:

    成功编译~!


    编写发布器和订阅器:
    启动发布器
    确保roscore可用,并运行:

    新终端中:
    $ rosrun lee_package talker
    启动订阅器
    上面我们编写了一个名为"listener"的订阅器节点。现在新终端中运行它:
    $ rosrun lee_package listener


    编写简单的服务器和客户端:


    #include "ros/ros.h"
    #include "lee_package/AddTwoInts.h"
    bool add(lee_package::AddTwoInts::Request &req,lee_package::AddTwoInts::Response &res)
    {
    res.sum = req.a + req.b;
    ROS_INFO("request: x=%ld, y=%ld", (long int)req.a, (long int)req.b);
    ROS_INFO("sending back response: [%ld]", (long int)res.sum);
    return true;
    }
    int main(int argc, char **argv)
    {
    ros::init(argc, argv, "add_two_ints_server");
    ros::NodeHandle n;
    ros::ServiceServer service = n.advertiseService("add_two_ints",add);
    ROS_INFO("Ready to add two ints.");
    ros::spin();
    return 0;
    }

    #include "ros/ros.h"
    #include "lee_package/AddTwoInts.h"
    #include <cstdlib>
    int main(int argc, char **argv)
    {
    ros::init(argc, argv, "add_two_ints_client");
    if (argc != 3)
    {
    ROS_INFO("usage: add_two_ints_client X Y");
    return 1;
    }
    ros::NodeHandle n;
    ros::ServiceClient client = n.serviceClient<lee_package::AddTwoInts>("add_two_ints");
    lee_package::AddTwoInts srv;
    srv.request.a = atoll(argv[1]);
    srv.request.b = atoll(argv[2]);
    if (client.call(srv))
    {
    ROS_INFO("Sum: %ld", (long int)srv.response.sum);
    }
    else
    {
    ROS_ERROR("Failed to call service add_two_ints");
    return 1;
    }
    return 0;
    }
    现在运行catkin_make命令:


    分别在两个终端中运行下面指令:
    $ rosrun lee_package add_two_ints_server
    $ rosrun lee_package add_two_ints_client 3 5

    参考资料:

    ROS官方wiki:http://www.ros.org

    roboware官网:http://www.roboware.me

    ----------------------------------------------------------------


    欢迎大家转载我的文章。
    ---------------------
    作者:宇智波罩
    来源:CSDN
    原文:https://blog.csdn.net/qq_41450811/article/details/80305846
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/dayspring/p/9889618.html
Copyright © 2011-2022 走看看