一、ROS基本介绍
ROS(机器人操作系统)提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
ROS即通讯机制+开发工具+应用功能+生态系统四位一体。
特点:点对点、分布式、多语言支持、轻量级、免费和开源。
二、小海龟仿真
- 第一步,打开一个终端,输入以下命令
roscore
- 第二步,再打开一个终端,输入以下命令启动小海龟仿真器
rosrun turtlesim turtlesim_node
- 第三步,再打开一个终端,输入以下命令启动控制器
rosrun turtlesim turtle_teleop_key
此时就可以通过上下左右键进行小海龟的移动操作了。
三、编写程序让小海龟实现圆周运动
1.用话题查看器查看两个node之间的消息传递
打开话题查看器
命令行输入以下指令
rosrun rqt_graph rqt_graph
这张图中,可以看出turtle_teleop与turtlesim两个节点之间通过/strong/cmd_vel进行通信,也就是话题,按键信息会发布在这个话题上,然后turtlesim_node从这个话题接受信息控制其移动,所以需要写一个文件发送控制指令。
输入下图的代码可以看到消息的获取。
小海龟移动的基本原理
输入以下命令可以查看
rostopic type /turtle1/cmd_vel
可以看到如下,数据类型为geometry_msgs/Twist,还需要再进一步查看
输入以下代码来查看:
rosmsg show geometry_msgs/Twist
- linear的意思是线速度;
- angular的意思是角速度;
- xyz表示坐标;
如果要控制海龟转圈,就要保持匀速向前的运动,然后角速度不为0即可。
2.编写代码实现转圈
1.创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
2.编译工作空间
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3.创建ROS功能包
创建功能包:
cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs
编译功能包:
cd ~/catkin_ws
catkin_make
source devel/setup.bash
4.C++代码
#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"
int main(int argc, char **argv)
{
//初始化节点
ros::init(argc, argv, "publisher");
//创建节点句柄
ros::NodeHandle n;
//创建publisher,发布话题[/turtle1/cmd_vel],消息类型[geometry_msgs::Twist]
ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
//设置循环频率
ros::Rate loop_rate(100);
while (ros::ok())
{
//定义发布的数据
geometry_msgs::Twist msg;
//定义linear数据
geometry_msgs::Vector3 linear;
linear.x=1;
linear.y=0;
linear.z=0;
//定义angular数据
geometry_msgs::Vector3 angular;
angular.x=0;
angular.y=0;
angular.z=1;
msg.linear=linear;
msg.angular=angular;
//发布msg数据
chatter_pub.publish(msg);
//循环等待回调函数
ros::spinOnce();
//按照循环频率延时
loop_rate.sleep();
}
return 0;
}
5.添加编译选项
打开CmakeLists文件
cd ~/catkin_ws/src/learning_topic
gedit CMakeLists.txt
在文件最后加上以下代码:
add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})
保存退出,并进行编译。
cd ~/catkin_ws
catkin_make
6.启动小海龟
roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher
结果如下图所示,小海龟进行圆周运动。
四、总结
本次实验主要是了解了ROS的消息和话题的收发机制,用小海龟demo直观的感受了ROS,并编程实现了控制小海龟进行圆周运动。文章来源:https://www.toymoban.com/news/detail-471868.html
五、参考资料
Ubuntu18.04安装ROS——实现小海龟仿真
ROS通信实操(小乌龟通信实现)(九)C++、Python文章来源地址https://www.toymoban.com/news/detail-471868.html
到了这里,关于ROS入门之小海龟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!