ROS学习(2)

这篇博客详细介绍了ROS中的关键概念和服务数据的创建,包括srv文件的定义和编译。接着讲解了ROS参数的使用,如查看、设置、保存和加载。在坐标系管理部分,作者演示了如何使用TF进行坐标变换,并通过rviz进行可视化。此外,还涉及了launch文件的启动和错误排查,以及图像数据的处理,包括二维图像(usb_cam)和三维图像(freenect)的获取。最后,提到了摄像头标定的过程和相关工具的安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、服务数据的定义与使用

  1. 创建srv文件夹,创建Person.srv文件
touch Person.srv
  1. 定义srv文件
    .srv文件中—以上是request数据,以下是response数据
string name
uint8 age
uint8 sex

uint8 unknown = 0
uint8 female = 1
uint8 male = 2
---
string result
  1. 编译
    在package和cmakelist中添加依赖
    添加依赖后编译产生以下错误,原因是因为在171行中$前没有空格,添加后,编译成功。所以尽量用编译器打代码。。。。。
    在这里插入图片描述
  2. 运行

二、参数使用与编程方法

参数命令行的使用

//列出当前有多少个参数
rosparam list

//显示某个参数值
rosparam get param_key

//设置(修改)某个参数值
rosparam set param_key param_value

//保存参数到文件,保存在终端的当前路径下
rosparam dump file_name

//从文件读取参数
rosparam load file_name

//删除参数
rosparam delete param_key

//修改参数值后要发生请求才能改变
rosservice call /clear "{}"
  1. 创建功能包
  2. 编译
    如果出现以下错误可能是因为另一个终端也在执行,全部关掉重开一个就好
    在这里插入图片描述
  3. 运行

三、坐标系管理系统

在这里插入图片描述
TF坐标变化的实现

  1. 广播TF变换
  2. 监听TF变换
sudo apt-get install-melodic-tuetle-tf		//安装tf包
roslaunch turtle_tf turtle_tf_demo.launch		//启动多结点
rosrun tf view_frames	//可视化tf关系

rosrun tf tf_echo turtle1 turtle2		//显示动态变化
/*
第一行通过四元素(x,y,z,w)来描述姿态
第二行:通过x,y,z轴的旋转的弧度来描述
第三行:通过x,y,z轴的旋转的角度来描述
*/

rosrun rviz rviz -d `rospack find turtlr_tf`/rviz/turtle_rviz.rviz	//在rviz上显示位置关系

四、launch文件

通过xml文件实现多节点的配置和启动
在这里插入图片描述在这里插入图片描述在这里插入图片描述
启动launch文件

roslaunch learning_launch simple.launch

在这里插入图片描述错误:
在这里插入图片描述解决:launch文件中某一行缺少结束符,加上即可

如果发现重命名未成功但是运行launch文件时并没有报错,可能错误原因如下
在这里插入图片描述上面是正确的,下面是错误的
在这里插入图片描述

五、ROS中的图像数据(二维)

安装usb_cam功能包

sudo apt-get install ros-melodic-usb-cam

相关操作

roslaunch sub_cam isb_cam-test.launch		//开启摄像头
rqt_image_view		//rqt显示,查看压缩图像
rostopic info /usb_cam/image_raw	//显示图像类型

在这里插入图片描述在这里插入图片描述

六、ros中的图像数据(三维)

roslaunch freenect_launch freenect.launch		//开启kinect
rostopic info /camera/depth_registered/points	//显示数据
rosmsg show sensor_msgs/PointCloud2		//查看点云消息

在这里插入图片描述

七、摄像头标定

安装功能包

sudo apt-get install ros-melodic-camera-calibration

标定流程

roslaunch robot_vision usb_cam.launch
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

在这里插入图片描述square后面是打印的正方形的边长
在这里插入图片描述在这里插入图片描述

### ROS2 学习资料与入门教程 对于希望学习 ROS2 的用户来说,可以从官方资源和其他社区支持的内容入手。以下是关于 ROS2 学习的一些推荐路径: #### 官方文档与维基 ROS 维基 (wiki.ros.org) 是一个非常重要的工具,提供了丰富的信息来帮助开发者了解 ROS 和其功能[^1]。尽管这是针对 ROS 1 的主要资源,但许多概念仍然适用于 ROS2。因此,熟悉 ROS 维基的导航方式可以帮助理解 ROS2 中的核心理念。 #### 实践导向的学习笔记 一些学习者更倾向于通过实践而非阅读大量理论材料来进行学习。例如,有学习笔记提到:“本教程实操为主,少说书。” 这种类型的笔记可以作为快速上手 ROS2 的补充材料[^3]。这类资源通常会简化复杂的理论部分,专注于实际操作步骤,适合希望通过动手实验掌握技能的人群。 #### 使用预构建的应用程序进行练习 在 ROS2 中有许多预先编写好的应用程序和仿真环境供初学者探索,比如海龟模拟器(turtlesim),这允许新手尝试修改现有代码并观察效果变化[^2]。通过对这些现成项目的调整,能够加深对 ROS2 编程接口的理解。 #### 建议的学习流程 - 开始前先浏览一下 ROS 官网提供的最新版安装指南。 - 随后按照官方发布的 beginner-level tutorials 来逐步深入。 - 利用像 turtlesim 这样的简单应用去巩固所学知识点。 ```python import rclpy from rclpy.node import Node class MinimalPublisher(Node): def __init__(self): super().__init__('minimal_publisher') self.publisher_ = self.create_publisher(String, 'topic', 10) timer_period = 0.5 # seconds self.timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 def main(args=None): rclpy.init(args=args) minimal_publisher = MinimalPublisher() rclpy.spin(minimal_publisher) minimal_publisher.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` 上述 Python 脚本展示了一个基本的 ROS2 发布节点实例,有助于直观感受 ROS2 的编程风格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值