当前位置: 首页 > news >正文

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

image-20250319191924899

打开vscode找到catkin_ws文件夹我们来创建相关文件从而实现小乌龟速度控制的代码

image-20250319192347028

image-20250319192415788

image-20250319192802674

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;
}

image-20250319193701171

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!!
如果出现问题,检查看看,多半是代码的敲错了哟

image-20250319194524276

按下<ctrl+shift+t>再使用一个终端输入:

roscore #这一命令会开启 ROS 核心服务。

出现如下表示成功

image-20250319194911769

再按下<ctrl+shift+t>再使用一个终端输入:

# 使用 rosrun 工具在 turtlesim 包中运行 turtlesim_node 可执行文件
# 运行后会弹出一个窗口,里面有一只小海龟
rosrun turtlesim turtlesim_node

出现如下表示成功

image-20250319195053637

再按下<ctrl+shift+t>再使用一个终端输入:

rosrun turtle_vel_ctrl_pkg turtle_vel_ctrl_node # 调用代码实现乌龟运动

如果当你输入完后,小乌龟成功的向右移动如下:

image-20250319195426282

那么这个简单小乌龟速度控制代码就完整实现。恭喜你!

作者温馨提示:

此程序是使用在ubantu20.04的ROS1实现的,如果想要运行此代码,请务必提前装好ubantu20.04和ROS1哦

提供一个链接快速安装ubantu20.04和ROS1和基础工作空间:

【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程_ubuntu20.04安装ros-CSDN博客——致谢:AlphaCatOvO

相关文章:

  • swagger ui 界面清除登录信息的办法
  • 嵌入式硬件篇---龙芯GPIO控制
  • Python基于深度学习的中文情感分析系统(V2.0,附源码,文档说明)
  • 【DRAM存储器四十七】LPDDR5介绍--LPDDR5的低功耗技术之DVFS
  • 股票:大盘定义及S成长性
  • 网络编程 day04
  • 构建企业核心竞争力深入解析某著名企业卓越运营管理框架(71页PPT)(文末有下载方式)
  • Python个人学习笔记(16):模块(os)
  • BGP路由协议【网络协议详解】--通俗易懂!
  • 1vscode开发工具搭建
  • 基于互联网地图批量获取地名的坐标,并转换坐标系
  • YOLO魔改之频率分割模块(FDM)
  • 爬虫案例-爬取某狗音乐
  • SAP 为开发者推出 Joule:AI 赋能 SAP 开发生态
  • 深入解析进程管理:创建、终止、等待与程序替换
  • Python功能完美的宝库——内置的强大“武器库”builtins
  • SpringBoot项目controller层接收对应格式请求的相关RequestMapping配置
  • 丝杆,同步轮,齿轮,链轮选型(精密版)
  • LLVM学习--外部项目
  • 第二章 Python 数据结构入门详解
  • 央行:今日起下调再贷款利率0.25个百分点
  • 国新办将于5月8日10时就《民营经济促进法》有关情况举行新闻发布会
  • 网友建议平顶山请刘昊然任旅游宣传大使,市委:有此设想,正申请经费
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况
  • “五一”假期全社会跨区域人员流动量超14.65亿人次
  • 让党的理论“飞入寻常百姓家”,他如何做到有新意?