ROS1安装以及编写turtlesim走圆圈
一、安装ROS1
参考网址:https://blog.csdn.net/PlutooRx/article/details/127558240
二、同时用话题查看器查看两个node之间的消息传递
首先用以下命令打开ROS小海龟demo,并开启小海龟的控制
roscore
#开启新的终端
rosrun turtlesim turtlesim_node
#开启新的终端
rosrun turtlesim turtle_teleop_key
#开启新的终端
rosrun rqt_graph rqt_graph
开启新的终端,使用rostipic echo [topic]可以显示在某个话题上发布的数据
rostopic echo /turtle1/cmd_vel
使用键盘控制小海龟移动,可以看到以下内容:
现在让我们再看一下rqt_graph。先按下左上角的刷新按钮以显示新节点。正如你所看到的,rostopic echo现在也订阅turtle1/command_velocity话题。
三、用c++编写turtlesim走圆圈代码
参考网址:https://blog.csdn.net/qq_52187415/article/details/129330316
1、创建ROS工作空间
(1)创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
(2)编译工作空间
cd ~/catkin_ws
catkin_make
source devel/setup.bash
(3)检查环境变量
echo $ROS_PACKAGE_PATH
2、创建ROS功能包
(1)创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs
(2)编译功能包
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3、C++代码
(1)创建publisher.cpp文件
cd ~/catkin_ws/src/learning_topic/src/
touch publisher.cpp
(2)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;
}
(3)添加编译选项
cd ~/catkin_ws/src/learning_topic
sudo vim CMakeLists.txt
在末尾添加:
add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})
保存退出在编译:
cd ~/catkin_ws
catkin_make
(4)启动ROS
roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包,有可以省去这一步骤的方法,各位可以自行查找
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher