IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS学习(十五)RoboWare Studio的安装使用 -> 正文阅读

[人工智能]ROS学习(十五)RoboWare Studio的安装使用


前言

RoboWare Studio是一个ROS集成开发环境.使ROS开发更加直观、简单,并且易于操作.可进行ROS工作空间及包的管理,代码编辑、构建及调试。可惜的是,目前已经停更。。。

一、安装

我使用的RoboWare Studio是roboware-studio_1.1.0-1514335284_amd64版本,deb文件已经上传到资源,roboware-studio_1.1.0-1514335284_amd64.deb,请自行下载。下载完成,双击即可完成安装,效果如下:
在这里插入图片描述

二、特点

  • 1、RoboWare Studio可自动检测并加载ROS环境,无需额外配置。
  • 2、兼容indigo、jade、kinetic等版本。
  • 3、以图形化的方式进行ROS工作区及包的创建、源码添加,message、service、action文件创建、显示包及节点列表。
  • 4、可实现CMakelists.txt文件和package.xml文件的自动更新。
  • 5、提供Release、Debug及Isolated编译选项。以界面交互的方式调试C++和Python代码,可设置断点、显示调用堆栈、单步运行,并支持交互式终端。可在用户界面展示ROS包和节点列表。
  • 6、可将本地代码部署到远程机器上,远程机器可以是X86架构或ARM架构。可在本地机器实现远程代码的部署、构建和实时调试。
  • 7、内置Git功能,使用更加简单。可在编辑器界面进行差异比对、文件暂存、修改提交等操作。可对任意Git服务仓库进行推送、拉取操作。
  • 8、从代码创建、消息定义,到文件存储路径的创建及选择等,RoboWare Studio会引导开发者进行符合ROS规范的操作,协助开发者编写高质量、符合规范的ROS包。

三、初步使用

1、新建工作区(创建工作空间)

在这里我新建了一个工作区robo_catkin_ws,和之前学习时创建的catkin_ws区分开。这一步操作相当于创建工作空间操作。
在这里插入图片描述
填写工作空间名,如下:
在这里插入图片描述点击右下角的“保存”按钮,完成工作空间创建。

2、构建(工作空间初始化)

将资源管理器设置为release模式,在菜单中ROS选项中,点击构建,完成构建,相当于完成工作空间初始化。所以,这步操作相当于catkin_init_workspace操作,可以看到src目录下会多出一个 CMakeLists.txt 文件。
在这里插入图片描述

3、编译

在IDE下面控制台,可以看到终端一栏,输入如下命令,完成编译。

catkin_make

然后,将该工作空间的路径加入环境变量ROS_PACKAGE_PATH中,即将该工作空间下的devel中的setup.bash添加到主目录的.bashrc文件中。
依次输入如下命令:

gedit ~/.bashrc
source /home/zt/robo_catkin_ws/devel/setup.bash

4、新建ROS包(创建功能包)

点击src文件夹,鼠标右键,选择新建ROS包,输入功能包名字learning_topic,即可完成在工作空间的src目录下创建功能包。
在这里插入图片描述
可以看到该功能包下,自动生成了CMakeList.txt和package.xml文件。

5、配置功能包依赖

选中功能包,右键,选择“编辑依赖的ROS包列表”,如下:
请添加图片描述
在弹出来的配置栏处输入roscpp std_msgs,如下:

在这里插入图片描述

6、添加节点文件

右键点击learning_topic功能包,新建src文件夹,可以看到子文件中会生成src文件夹
在这里插入图片描述
右键点击src文件夹,新建cpp源文件:
在这里插入图片描述
命名为talker.cpp后,选择“加入到新的可执行文件中”:
在这里插入图片描述
同理命名listener.cpp,我们在文件目录可以看到,在得到两个文件的同时,RoboWare Studio也修改了CMakeList.txt和package.xml文件。
talker.cpp源码如下:

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>

int main(int argc, char **argv)
{
    ros::init(argc, argv, "velocity_publisher");
     
    ros::NodeHandle n;
    
    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
	
    ros::Rate loop_rate(10);

    int count = 0;
	
    while(ros::ok())
    {
		geometry_msgs::Twist vel_msg;
		vel_msg.linear.x = 0.5;
		vel_msg.angular.z = 0.2;
		turtle_vel_pub.publish(vel_msg);
		ROS_INFO("Publish turtle velocity command [%0.2f m/s, %0.2f rad/s]", vel_msg.linear.x, vel_msg.angular.z);
		loop_rate.sleep();
}
    return 0;
}

listener.cpp源码如下:

#include <ros/ros.h>
#include "turtlesim/Pose.h"

void poseCallback(const turtlesim::Pose::ConstPtr& msg)
{
    ROS_INFO("Turtle pose: x:%0.6f, y:%0.6f", msg->x, msg->y);
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "pose_subscriber");

    ros::NodeHandle n;

    ros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);

    ros::spin();

    return 0;
}

7、编译及运行

在IDE下面控制台,打开新的终端,输入如下命令完成编译:

catkin_make

启动roscore,命令如下:

roscore

运行小乌龟节点,命令如下:

rosrun turtlesim turtlesim_node

运行talker节点,命令如下:

rosrun learning_topic talker

在这里插入图片描述

运行listener节点,命令如下:

rosrun learning_topic listener

在这里插入图片描述

8、自定义消息

右键点击learning_topic功能包,新建Msg文件夹
在这里插入图片描述
右键点击生成的msg文件夹,新建msg文件,命名为Person.msg
在这里插入图片描述
文件内容如下:

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

如上所述,我们分别新建person_publisher.cpp和person_subscriber.cpp文件。

person_publisher.cpp文件内容如下:

#include <ros/ros.h>
#include "learning_topic/Person.h"

int main(int argc, char **argv)
{
	ros::init(argc, argv, "person_publisher");
	ros::NodeHandle n;
	
	ros::Publisher person_info_pub = n.advertise<learning_topic::Person>("/person_info", 10);
	ros::Rate loop_rate(1);
	int count = 0;
	while(ros::ok())
	{
		learning_topic::Person person_msg;
		person_msg.name = "Tom";
		person_msg.age = 18;
		person_msg.sex = learning_topic::Person::male;
		
		person_info_pub.publish(person_msg);
		ROS_INFO("Publish Person Info: name:%s  age:%d  sex:%d",
				  person_msg.name.c_str(), person_msg.age, person_msg.sex);
		loop_rate.sleep();
	}
	return 0;
}

person_subscriber.cpp文件内容如下:

#include <ros/ros.h>
#include "learning_topic/Person.h"

void personInfoCallback(const learning_topic::Person::ConstPtr& msg)
{
	ROS_INFO("Subscribe Person Info: name:%s  age:%d  sex:%d", msg->name.c_str(), msg->age, msg->sex);
}

int main(int argc, char **argv)
{
	ros::init(argc, argv, "person_subscriber");
	ros::NodeHandle n;
	ros::Subscriber person_info_sub = n.subscribe("/person_info", 10, personInfoCallback);
	ros::spin();
	return 0;
}

9、编译及运行

在IDE下面控制台,打开新的终端,输入如下命令完成编译:

catkin_make

启动roscore,命令如下:

roscore

运行person_subcriber节点,命令如下:

rosrun learning_topic person_subcriber

在这里插入图片描述
运行person_publisher节点,命令如下:

rosrun learning_topic person_publisher

在这里插入图片描述
同理,也可以完成自定义服务的实现。

四、总结

个人感觉,RoboWare Studio最大的方便之处在于,可实现CMakelists.txt文件和package.xml文件的自动更新,这大幅度的减少了配置工作。但其在使用过程中,有些地方仍需要我们手动输入命令完成,比如编译catkin_make、启动roscore或节点等。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:03:14  更:2022-05-06 11:04:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:33:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码