如何正确安装并使用roboware软件?

2026-05-17 00:171阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1344个文字,预计阅读时间需要6分钟。

如何正确安装并使用roboware软件?

一、在Ubuntu 18.04虚拟机上安装Roboware+感觉官网不好进,把roboware-studio_1.1.0-1514335284_amd64.deb文件上传到网盘中。

链接:[https://pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw](https://pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw)

提取码:x3zc cd

如何正确安装并使用roboware软件?

将roboware安装包的父目录添加到安装包路径。

一、在ubuntu18.04虚拟机上安装roboware

感觉官网不太好进,把roboware-studio_1.1.0-1514335284_amd64.deb文件放上网盘了。

链接:pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw 提取码:x3zc

cd到安装包的父目录下或者用终端打开,输入解压安装命令:

sudo dpkg -i roboware-studio_1.1.0-1514335284_amd64.deb

如果遇到下面这个问题

Package libgconf-2-4 is not installed

这是由于依赖错误,输入命令自动安装缺少依赖:

sudo apt-get -f -y install

重新运行下面的命令:

sudo dpkg -i roboware-studio_1.1.0-1514335284_amd64.deb

安装完成后,在终端直接在终端输入打开软件:

roboware-studio​​​​​​​

二、测试learning_topic功能包(上)

下面的内容适合于已经看过B站《古月ros入门21讲》前面11讲的内容的小伙伴,因为古月老师是教我们手动利用gedit修改CMakeList.txt和package.xml的,这里采用roboware环境,会自动完成修改,这样可以专注于编程与调试。

1、基本工作区创建

文件选项栏下选择新建工作区,这里工作区名字为ros_21_review

将资源管理器设置为release模式,ros选项栏下点击构建,这个操作相当于是catkin_init_workspace操作,如下图是已经完成工作空间的构建了,生成了CMakeList文件的结果。

2、创建功能包learning_topic

右击src选择 新建ROS包

命名为learning_topic回车,发现自动生成了CMakeList.txt和package.xml

3、配置功能包依赖

添加ros包依赖,右键点击 编辑依赖的ros包列表

在弹出的配置栏处输入roscpp std_msgs,这个操作在古月老师的视频中也是需要手动在CMakeList.txt中添加的。

4、添加节点文件talker.cpp和listener.cpp

右击learning_topic功能包,选择 新建src文件夹

在子文件中生成src文件,右击src文件选择 新建cpp源文件

命名为talker.cpp后选择 加入到新的可执行文件中

同理命名listener.cpp,得到两个文件的同时,roboware也修改了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; }

快捷键 ctrl + ` 调起终端,在工作空间下编译:

catkin_make

为了避免每次输入ros指令前输入source /devel/setup.bash,将该工作空间下的devel中的setup.bash添加到主目录的.bashrc文件中(ctrl+h显示隐藏文件)

5、测试talker和listener

(1)打开roscore:

roscore

(2)运行小海龟节点:

rosrun turtlesim turtlesim_node

(3)运行talker节点:

rosrun learning_topic talker

(4)运行listener节点:

rosrun learning_topic listener

三、测试learning_topic功能包(下) 1、自定义消息

右击learning_topic功能包,选择 新建Msg文件夹

右击生成的msg文件夹,选择 新建MSG文件,命名为Person.msg

将下面的具体结构定义复制进去

string name uint8 sex uint8 age uint8 unknown = 0 uint8 male = 1 uint8 female = 2

2、添加节点文件person_publisher.cpp和person_subscriber.cpp

同talker.cpp的方法生成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; }

如下图所示:

在工作空间下编译:

catkin_make

3、测试person_publisher.cpp和person_subscriber.cpp

(1)启动roscore:

roscore

(2)运行person_subcriber节点:

rosrun learning_topic person_subcriber


(3)运行person_publisher节点:

rosrun learning_topic person_publisher

本文共计1344个文字,预计阅读时间需要6分钟。

如何正确安装并使用roboware软件?

一、在Ubuntu 18.04虚拟机上安装Roboware+感觉官网不好进,把roboware-studio_1.1.0-1514335284_amd64.deb文件上传到网盘中。

链接:[https://pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw](https://pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw)

提取码:x3zc cd

如何正确安装并使用roboware软件?

将roboware安装包的父目录添加到安装包路径。

一、在ubuntu18.04虚拟机上安装roboware

感觉官网不太好进,把roboware-studio_1.1.0-1514335284_amd64.deb文件放上网盘了。

链接:pan.baidu.com/s/1SImF07-xgyUaQfEoMBr5Rw 提取码:x3zc

cd到安装包的父目录下或者用终端打开,输入解压安装命令:

sudo dpkg -i roboware-studio_1.1.0-1514335284_amd64.deb

如果遇到下面这个问题

Package libgconf-2-4 is not installed

这是由于依赖错误,输入命令自动安装缺少依赖:

sudo apt-get -f -y install

重新运行下面的命令:

sudo dpkg -i roboware-studio_1.1.0-1514335284_amd64.deb

安装完成后,在终端直接在终端输入打开软件:

roboware-studio​​​​​​​

二、测试learning_topic功能包(上)

下面的内容适合于已经看过B站《古月ros入门21讲》前面11讲的内容的小伙伴,因为古月老师是教我们手动利用gedit修改CMakeList.txt和package.xml的,这里采用roboware环境,会自动完成修改,这样可以专注于编程与调试。

1、基本工作区创建

文件选项栏下选择新建工作区,这里工作区名字为ros_21_review

将资源管理器设置为release模式,ros选项栏下点击构建,这个操作相当于是catkin_init_workspace操作,如下图是已经完成工作空间的构建了,生成了CMakeList文件的结果。

2、创建功能包learning_topic

右击src选择 新建ROS包

命名为learning_topic回车,发现自动生成了CMakeList.txt和package.xml

3、配置功能包依赖

添加ros包依赖,右键点击 编辑依赖的ros包列表

在弹出的配置栏处输入roscpp std_msgs,这个操作在古月老师的视频中也是需要手动在CMakeList.txt中添加的。

4、添加节点文件talker.cpp和listener.cpp

右击learning_topic功能包,选择 新建src文件夹

在子文件中生成src文件,右击src文件选择 新建cpp源文件

命名为talker.cpp后选择 加入到新的可执行文件中

同理命名listener.cpp,得到两个文件的同时,roboware也修改了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; }

快捷键 ctrl + ` 调起终端,在工作空间下编译:

catkin_make

为了避免每次输入ros指令前输入source /devel/setup.bash,将该工作空间下的devel中的setup.bash添加到主目录的.bashrc文件中(ctrl+h显示隐藏文件)

5、测试talker和listener

(1)打开roscore:

roscore

(2)运行小海龟节点:

rosrun turtlesim turtlesim_node

(3)运行talker节点:

rosrun learning_topic talker

(4)运行listener节点:

rosrun learning_topic listener

三、测试learning_topic功能包(下) 1、自定义消息

右击learning_topic功能包,选择 新建Msg文件夹

右击生成的msg文件夹,选择 新建MSG文件,命名为Person.msg

将下面的具体结构定义复制进去

string name uint8 sex uint8 age uint8 unknown = 0 uint8 male = 1 uint8 female = 2

2、添加节点文件person_publisher.cpp和person_subscriber.cpp

同talker.cpp的方法生成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; }

如下图所示:

在工作空间下编译:

catkin_make

3、测试person_publisher.cpp和person_subscriber.cpp

(1)启动roscore:

roscore

(2)运行person_subcriber节点:

rosrun learning_topic person_subcriber


(3)运行person_publisher节点:

rosrun learning_topic person_publisher