Roboware Studio教程 (ROS kinetic)

article/2025/10/3 23:03:05

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 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位版本

输入安装包的名字时,可以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必须手动添加):

 

 

 

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

 

先运行roscore再测试下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

 

 

debug调试

1.首先在程序旁边打一个断点

选择编译的二进制文件 :

选择启动调试: 

 多了一个调试工具,并且代码执行到黄色高亮处,下面就可以愉快的调试了:

F5一次性执行完,按F11单步调试

 

 

参考资料:

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

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

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

 

 

欢迎大家转载我的文章。

转载请注明:转自 抚琴弹出情调零  vx:qiang250571870

Roboware Studio 手册需要的可以下载 https://download.csdn.net/download/qq_41450811/10411256


http://chatgpt.dhexx.cn/article/GmbhmtnK.shtml

相关文章

roboware的使用

安装 roboware相当于一个专门适配ROS的vscode&#xff0c;功能性十分强大&#xff0c;几乎所有与ROS相关的操作都可以在IDE中完成。目前官网已经挂掉&#xff0c;可以选择百度云安装&#xff1a; https://pan.baidu.com/s/1D169dFyf2OD3SFBZVZy3pQ 密码&#xff1a;3iuk 或者去…

RoboWare Studio 安装教程与可能问题解决

一、下载RoboWare源码 途径1&#xff1a;官方GitHub连接&#xff1a;https://github.com/TonyRobotics/RoboWare 途径2&#xff1a;RoboWare官网&#xff1a;http://www.roboware.me/#/home &#xff08;我选择了途径1&#xff09; 下载完后解压&#xff0c;我们可以看到文…

round() 函数

查看更多 https://www.yuque.com/docs/share/50c54ca6-17b5-4a09-959b-d8be30a16520

RowBounds 的使用

generator 添加 查询的写法 offset偏移量 size 每页的大小

row_number() over (partition by order by desc)用法

转自https://www.cnblogs.com/linJie1930906722/p/6036053.html 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录) partition by关键字是分析性函数的一部分&#xff0c;它和聚合函数不同的地方在于它能返回一个分组中的多…

row_number 语法

ROW_NUMBER()函数将针对SELECT语句返回的每一行&#xff0c;从1开始编号&#xff0c;赋予其连续的编号。在查询时应用了一个排序标准后&#xff0c;只有通过编号才能够保证其顺序是一致的&#xff0c;当使用ROW_NUMBER函数时&#xff0c;也需要专门一列用于预先排序以便于进行编…

row_number()函数

语法格式&#xff1a;row_number() over(partition by 分组列 order by 排序列 desc) SELECTROW_NUMBER() OVER(PARTITION BY sh.BUSMAIINFID ORDER BY nvl(sh.TIMESTAMP, sh.CREATEDATE) DESC)AS RN,sh.ORGID,sh.BUSMAIINFID,sh.TIMESTAMP,sh.CREATEDATE FROMREG_NETREGINFOA…

MyBatis中的RowBounds

如何分页查询 Mybatis如何分页查询&#xff1f;Mysql中可以使用limit语句&#xff0c;但limit并不是标准SQL中的&#xff0c;如果是其它的数据库&#xff0c;则需要使用其它语句。MyBatis提供了RowBounds类&#xff0c;用于实现分页查询。RowBounds中有两个数字&#xff0c;off…

row_number() over(partition by)整理

row_number() over(partition by)&#xff0c;作为oracle常用的分析函数&#xff0c;身为数据开发时必须要掌握的。不过一段时间不用&#xff0c;难免会有些忘记&#xff0c;今天整理一下一些场景下的用法。 现有表&#xff08;test_rownumber&#xff09;有如下数据&#xff…

Mybatis分页之RowBounds

Mybatis可以使用RowBounds进行分页 dao层 sql的xml文件&#xff0c;因为是java层面的分页&#xff0c;所以sql不需要分页 单元测试 因为参数是第几个开始&#xff0c;这样很不友好&#xff0c;我们一般情况分页是第几页开始&#xff0c;页大小是多少&#xff0c;所以这就需要我…

MySQL–ROW_NUMBER

MySQL–ROW_NUMBER 一、窗口函数 ​ 要讲row_number&#xff0c;首先得讲一下窗口函数。窗口函数&#xff0c;也叫OLAP函数&#xff08;Online Anallytical Processing&#xff0c;联机分析处理&#xff09;&#xff0c;可以对数据库数据进行实时分析处理。 ​ 窗口函数的基…

row_number() OVER(PARTITION BY)函数介绍

OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数&#xff0c;分析函数用于计算基于组的某种聚合值&#xff0c;它和聚合函数的不同之处是&#xff1a;对于每个组返回多行&#xff0c;而聚合函数对于每个组只返回一行。 开窗函数指定了分析函…

巧用ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING

背景 数据如上&#xff0c;按id和ssny分组&#xff0c;求最大的开票时间&#xff0c;若为空&#xff0c;取非空的上一期组内最大开票时间 解 SELECT id, ssny, kpsj, max(kpsj) OVER(PARTITION BY id ORDER BY ssny desc ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) …

mybatis RowBounds 分页

在 mybatis 中&#xff0c;使用 RowBounds 进行分页&#xff0c;非常方便&#xff0c;不需要在 sql 语句中写 limit&#xff0c;即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的&#xff0c;所以在数据量大的sql中并不适用&#xff0c;它更适合在返回数…

RowBounds分页

不再使用SQL实现分页 1.接口 //分页List<User> getUserByRowBounds(); 2.mapper.xml <!-- 分页--><select id"getUserByRowBounds" resultType"UserMap">select * from mybatis.user</select> 3.测试 Testpublic void getUserByRo…

row_number() OVER(PARTITION BY)

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; row_number()排序函数 统计每个部门薪资最高的员工信息&#xff08;同一个部门的员工按照薪资进行降序排序&#xff09;第一种写法&#xff1a;ro…

在VS中安装nuget离线包nupkg文件

1、打开或者新建任意一个项目 2、项目-管理NuGet程序包 3、设置 4、设置好以后如下图&#xff0c;点击确定 5、安装

Uipath打包流程为.nupkg文件

先断开oc 在publish流程&#xff0c;其中main是入口 点击publish 然后打开Uipath robot&#xff0c;可以看到流程已经同步上去了

如何将nupkg离线安装包安装到VS2017、9

不知道为什么&#xff0c;用vs自带的nuget程序管理器安装nuget包非常慢&#xff0c;而且很容易出错&#xff0c;最重要的是编译的时候能急死人&#xff0c;于是换网、自己架nuget服务器...一顿折腾。 不再废话&#xff0c;直接上干货&#xff1a; 1、在官网https://www.nuget…

VS如何安装.nupkg文件

nupkg是visual studio 的NuGet Package的一个包文件 安装nupkg包前&#xff0c;在visual studio的NuGet中会显示该包需要的.net framework runetime版本需要 还有版权归属等信息 具体看一下截图 大家可以去下载一个&#xff1a;Google Protocol buffers 3.5.1的nupkg来试试 下…