1.小乌龟速度控制
(ROS1)小乌龟速度控制
ubantu终端-创建ROS功能包:
# 切换到 catkin 工作空间的 src 目录下
cd catkin_ws/src
# 使用 catkin_create_pkg 命令创建一个新的 ROS 包
# 包名为 turtle_vel_ctrl_pkg
# 该包依赖于 roscpp(ROS 的 C++ 客户端库)和 geometry_msgs(ROS 中的几何消息类型库)
catkin_create_pkg turtle_vel_ctrl_pkg roscpp geometry_msgs
打开vscode找到catkin_ws文件夹我们来创建相关文件从而实现小乌龟速度控制的代码
turtle_vel_ctrl_node.cpp代码如下:注意:vscode里面都要有保存的<Ctrl + s>的习惯哈,不然你发现运行不了
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
// 主函数,ROS 节点的入口
int main(int argc, char **argv) {
// 初始化 ROS 节点,节点名为 "tutle_vel_ctrl_node"
ros::init(argc, argv, "tutle_vel_ctrl_node");
// 创建一个节点句柄,用于与 ROS 系统进行通信
ros::NodeHandle n;
// 创建一个发布者,发布 geometry_msgs::Twist 类型的消息到 "/turtle1/cmd_vel" 话题,队列长度为 20
ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 20);
// 设置循环频率为 10Hz
ros::Rate loop_rate(10);
// 初始化计数器
int count = 0;
// 只要 ROS 系统正常运行,就进入循环
while (ros::ok()) {
// 创建一个 geometry_msgs::Twist 类型的消息对象,用于存储速度指令
geometry_msgs::Twist vel_cmd;
// 设置线速度在 x 轴方向为 2,y 和 z 轴方向为 0
vel_cmd.linear.x = 2;
vel_cmd.linear.y = 0;
vel_cmd.linear.z = 0;
// 设置角速度在 x、y 和 z 轴方向为 0
vel_cmd.angular.x = 0;
vel_cmd.angular.y = 0;
vel_cmd.angular.z = 0;
// 发布速度指令消息
vel_pub.publish(vel_cmd);
// 处理一次 ROS 回调函数
ros::spinOnce();
// 按照设定的频率休眠,保证循环以 10Hz 运行
loop_rate.sleep();
}
return 0;
}
CMakeList.txt添加代码如下:
# 创建一个可执行文件,名为 turtle_vel_ctrl_node,其源文件为 src/turtle_vel_ctrl_node.cpp
add_executable(turtle_vel_ctrl_node src/turtle_vel_ctrl_node.cpp)
# 添加依赖项,确保在构建 turtle_vel_ctrl_node 之前,指定的目标已经构建完成
# ${${PROJECT_NAME}_EXPORTED_TARGETS} 是项目导出的目标,${catkin_EXPORTED_TARGETS} 是 catkin 导出的目标
add_dependencies(turtle_vel_ctrl_node
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS}
)
# 将 turtle_vel_ctrl_node 可执行文件与 catkin 库进行链接
target_link_libraries(turtle_vel_ctrl_node ${catkin_LIBRARIES})
确保都保存好后,接下来进行终端的操作
打开终端(ctrl+Alt+t)
# 切换到 catkin_ws 工作空间目录
cd catkin_ws
# 在当前工作空间(即 catkin_ws 目录)下编译 ROS 包
catkin_make
出现如下情况说明编译成功OvO!!
如果出现问题,检查看看,多半是代码的敲错了哟
按下<ctrl+shift+t>再使用一个终端输入:
roscore #这一命令会开启 ROS 核心服务。
出现如下表示成功
再按下<ctrl+shift+t>再使用一个终端输入:
# 使用 rosrun 工具在 turtlesim 包中运行 turtlesim_node 可执行文件
# 运行后会弹出一个窗口,里面有一只小海龟
rosrun turtlesim turtlesim_node
出现如下表示成功
再按下<ctrl+shift+t>再使用一个终端输入:
rosrun turtle_vel_ctrl_pkg turtle_vel_ctrl_node # 调用代码实现乌龟运动
如果当你输入完后,小乌龟成功的向右移动如下:
那么这个简单小乌龟速度控制代码就完整实现。恭喜你!
作者温馨提示:
此程序是使用在ubantu20.04的ROS1实现的,如果想要运行此代码,请务必提前装好ubantu20.04和ROS1哦
提供一个链接快速安装ubantu20.04和ROS1和基础工作空间:
【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程_ubuntu20.04安装ros-CSDN博客——致谢:AlphaCatOvO