博客参考:https://blog.csdn.net/qq_41450811/article/details/80305846

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

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

准备

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

sudo apt-get install build-essential

4. 为支持 Python 相关功能,需要安装 pylint

sudo apt-get install python-pip
sudo python -m pip install pylint

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位版本. 安装过程会弹出 用户协议 可以按 ESC 选择确认!

启动

软件界面如下

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

创建工作空间之后的窗口如下

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

Ctrl+`调出Terminal, catkin_make构建之后:

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

测试正常, Ctrl+c结束即可

创建一个包

编辑依赖的ROS包列表

输入依赖的ROS包, 对应的CMakeLists.txt将生成相应的指令

创建ROS消息和ROS服务

1. 右键包名,新建Msg文件夹

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

编译之后,先运行roscore再测试下msg:

如果已经将当前工作空间写到了 ~/.bashrc,可以直接在工程编译完后运行,否则还是要先初始化运行环境

source devel/setup.bash

创建一个Srv空文件夹

srv文件分为请求和响应两部分,由'---'分隔。下面是srv的一个样例:

int64 A
int64 B
---
int64 Sum

其中 A 和 B 是请求, 而Sum 是响应。

同样的CMakeLists.txt 自动添加:

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

重新编译之后,生成的内容在文件夹下分布如下

所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。

生成的C++头文件将会放置在如下位置

~/catkin_ws/devel/include/lee_package/

Python脚本语言会在如下目录下创建

~/catkin_ws/devel/lib/python2./distpackages/lee_package/msg 

lisp文件会出现在如下路径

~/catkin_ws/devel/share/commonlisp/ros/lee_package/msg/ 

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

//listener.cpp

#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;
}
//talker.cpp

#include "sstream"
#include "ros/ros.h"
#include "std_msgs/String.h" 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;
}

重新编译,运行

//terminal 1
rosrun ke_package talker //terminal 2
rosrun ke_package listener

显示效果如下

Listener Node

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

源代码如下

//clients

#include "ros/ros.h"
#include <cstdlib>
#include "ke_package/AddTwoInts.h" 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<ke_package::AddTwoInts>("add_two_ints");
ke_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;
}
//server

#include "ros/ros.h"
#include "ke_package/AddTwoInts.h" bool add(ke_package::AddTwoInts::Request &req,ke_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;
}

重新编译,运行

debug调试

1. 首先设置断点

2. 选择生成的二进制文件

3. 选择启动调试

CMakeLists.txt需要将构建工程类型设置如下

SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_CXX_FLAGS "-g")

  

Ubuntu 16.04 Roboware安装和使用的更多相关文章

  1. Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel

    Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1.MySQL安装[安装 MariaDB]MariaDB是MySQL的一个分支首 ...

  2. Ubuntu 16.04 LTS安装 TeamViewer

    Ubuntu 16.04 LTS安装 TeamViewer     64位Ubuntu 16.04系统需要添加32位架构支持,命令如下. sudo dpkg --add-architecture i3 ...

  3. Linux Ubuntu 16.04 初次安装使用总结zzz

    装了两天的ubuntu系统终于算是勉强能用了,来来回回装了有三四次,期间出了各种各样的毛病.但是还是被我的Google大法给治好了.为了装这个系统,算是耗了两天的时间,啥事情都没干,干耗在这上面了.所 ...

  4. Ubuntu 16.04 RabbitMq 安装与运行(安装篇)

    Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966   前言 目前公司用阿里云 + redis 的方式实现的 ...

  5. 详细介绍Ubuntu 16.04系统环境安装Docker CE容器的过程

    由于项目的需要,我们在很多软件配置环境中需要用到Docker容器,这个时候我们可以用自己的VPS主机搭建.在这篇文章中,笔者将会利用Ubuntu 16.04系统环境安装Docker CE容器的过程.如 ...

  6. Ubuntu 16.04 LTS 安装 miniconda

    Ubuntu 16.04 LTS 安装 miniconda 下载 miniocnda 的 bash 文件下载链接 https://conda.io/miniconda.html ,我选择的是 64-b ...

  7. 如何在Ubuntu 16.04上安装配置Redis

    如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...

  8. 在 Ubuntu 16.04上安装 vsFTPd

    在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...

  9. 在 Ubuntu 16.04 上安装 Eclipse Oxygen

    2017 年 6 月 28 日,Eclipse 社区(the Eclipse Community)发布了 Eclipse Oxygen.本文记录了我在 Ubuntu 16.04 上安装 Eclipse ...

随机推荐

  1. Linux运维技术之讲解RAID

    RAID: 独立冗余磁盘阵列 ,将多块磁盘组合起来,组合成一个阵列,当成一个逻辑设备来使用的机制! RAID级别:仅代表磁盘组织不同,没有上下之分,组合raid时,不仅要考虑速度,还要考虑可用性. 磁 ...

  2. web渗透—xss攻击如何防御

    1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...

  3. python应用-n颗骰子的和出现的次数

    from random import randint def roll_dice(n): total=0 for _ in range (n): num=randint(1,6) total+=num ...

  4. Markdown插入图表

    链接:https://www.jianshu.com/p/3cf83d22dd3d Markdown图表语法 本文介绍如何用Markdown的mermaid等语法插入时序图.流程图.甘特图 如果是想学 ...

  5. CustomHTTPProtocol

    http://blog.csdn.net/jingcheng345413/article/details/54967739 一.概念 NSURLProtocol也是苹果众多黑魔法中的一种,使用它可以轻 ...

  6. 牛客网CSP-S提高组赛前集训营Round4

    牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对 ...

  7. Load Testing Socket.IO Web Applications and Infrastructure

    转自:https://medium.com/better-programming/load-testing-socket-io-web-applications-and-infrastructure- ...

  8. python开发面试问题

    python语法以及其他基础部分 可变与不可变类型: 浅拷贝与深拷贝的实现方式.区别:deepcopy如果你来设计,如何实现: __new__() 与 __init__()的区别: 你知道几种设计模式 ...

  9. 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛

    XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...

  10. smartnic

    19年趋势: Intel® 2019网络技术研讨会圆满落幕 SANTOS: Flow and HQoS Acceleration Over DPDK Using Intel Programmable ...