2022.06.23短学期mini2智行小车学习——初识ROS

什么是ROS:

机器人操作系统(Robot Operating System,一般简称为 ROS,它是一个应用于机器人之上的操作系统。

目前越来越多的机器人、无人机甚至无人车都开始采用 ROS 作为开发平台,尽管 ROS 在实用方面目前还存在一些限制,但前途非常光明。

随着技术进步,机器人产业分工开始走向细致化、多层次化,如今的电机、底盘、激光雷达、摄像头、机械臂等等元器件都有不同厂家专门生产。社会分工加速了机器人行业的发展。而各个部件的集成就需要一个统一的软件平台,在机器人领域,这个平台就是机器人操作系统 ROS

ROS 是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构ROS 虽然叫做操作系统,但并非 WindowsMac 那样通常意义的操作系统,它只是连接了操作系统和你开发的 ROS 应用程序,所以它也算是一个中间件,基于 ROS 的应用程序之间建立起了沟通的桥梁,所以也是运行在 Linux 上的运行环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。

ROS 机器人操作系统具有以下的特点:

分布式 点对点

ROS 采用了分布式的框架,通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,各个模块之间为松耦合机制,独立存在,不受其他进程影响,提高了系统的容错能力。

多种语言支持

ROS 支持多种编程语言。C++Pyhton 和已经在 ROS 中实现编译,是目前应用最广的 ROS开发语言,LispC#Java 等语言的测试库也已经实现,甚至 Matlab 等工具也提供了 ROS支持。为了支持多语言编程,ROS 采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就是,ROS 的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接口

开源社区

ROS 具有一个庞大的社区 ROS WIKI(http://wiki.ros.org/ ),这个网站将会始终伴随着你ROS 开发

ROS 系统的架构主要被分为三部分,每一部分都代表一个层级概念

文件系统级

计算图级

开源社区级

第一级是文件系统级,在这一级中,我们通过描述 ROS 文件在操作系统中的位置与包含关系来描述 ROS 的内部组成,文件夹结构,以及工作所需文件。

第二级是计算图级,体现为系统与进程之间的通讯。

第三级是开源社区级,我们将介绍 ROS 中的工具与概念,ROS 用户之间如何共享知识, 算法和代码。正是在开源社区的大力支持下 ROS 系统才得以快速成长。

ROS 文件系统

ROS 中的文件系统和我们平时了解的操作系统类似,一个 ROS 程序的不同组件要放在

不同的文件夹下面。这些文件夹是根据功能的不同来对文件进行组织的。最上层的文件夹名

为工作空间。

src/: ROS catkin 软件包(源代码包)

build/: catkinCMake)的缓存信息和中间文件

devel/: 生成的目标文件(包括头文件,动态链接库,静态链接库,可执行文件等)、 环境变量

重新编译工作环境,回到工作空间根目录下,输入 catkin_make 即可完成编译

这是由于没有配置环境的原因所造成的,

解决方法:输入命令行source ~/catkin_ws/devel/setup.bash

 

设置input、output语音阵列

启动:roslaunch robot_voice iat_publish.launch

唤醒:rostopic pub /robot_voice/asr_topic std_msgs/String "data: ''"

后遇报错Recognizer error 10407

参考:

ROS科大讯飞语音错误:Recognizer error 10407_吃胡萝卜的兔酱的博客-CSDN博客_科大讯飞错误代码10407ROS科大讯飞语音错误:Recognizer error 104071.问题描述2.问题解决3.关于 Ubuntu16.04下 科大讯飞SDK的下载与测试相关链接1.问题描述环境ubuntu16.04+kinetic从讯飞官网下载SDK在运行例行程序时报错Recognizer error 10407这问题说明SDK和AppID和你的应用没有对应上在找到对应文件看了AppID后没有问题然后又按照教材执行了一遍,发现问题在so文件复制上2.问题解决so文件的复制与链接:进入到 Linux_ihttps://blog.csdn.net/weixin_44911552/article/details/117134933

将/x64文件夹下libmsc.so复制覆盖/usr/local/lib/libmsc.so

cd mini2_ws/src/robot_voice/libs/x64

sudo cp libmsc.so /usr/local/lib/

复制完so文件后,执行sudo ldconfig

语音识别:roslaunch robot_voice iat_publish.launch

语义识别:roslaunch robot_voice nlu_tuling.launch

智能问答:roslaunch robot_voice chat_robot.launch

唤醒:rostopic pub /robot_voice/asr_topic std_msgs/String "data: ''"成功

参考:

mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support._--天行健地势坤--的博客-CSDN博客当出现mplayer: could not connect to socketmplayer: No such file or directoryFailed to open LIRC support. You will not be able to use your remote control.错误时修改mplayer即可 gedit ~/.mplayer/config 加入l...https://blog.csdn.net/u011573853/article/details/103164128

修改~/.mplayer/config,设置lirc=no

人脸识别

要先启动发布图像消息的节点

roslaunch astra_camera dabai_u3.launch

再运行人脸检测 

 检测结果:

第一种方法:新建终端输入 rqt_image_view 在 image_topic 选择 cv_bridge_image 查看;

第二种方法:在 rviz 打开 cv_bridge_image 查看

新建一个终端输入 rviz

左边点击 add ,选中 image

在 image 的 topic 选项中选 cv_bridge_image  image查看

颜色识别

启动深度相机驱动 :roslaunch astra_camera dabai_u3.launch

启动视觉检测程序:rosrun openvino RGBcube_detector.py(启动检测程序、后选择一个检测目标)

发布检测的颜色:rostopic pub /cube_choose std_msgs/String "data: 'red'"

Red

Blue

 第一步:绘制地图

在robot_shell目录下启动./7 tab补全

第二个窗口不能timeout

在最后一个窗口控制小车行进建模

保存地图:终端窗口运行roslaunch robot_slam save_map.launch

第二步:测试地图以及路径规划

在robot_shell目录下启动./8 tab补全

绿色箭头调整小车位置

新建终端窗口运行rostopic echo /move_base_simple/goal 查看座标位置信息。

紫色箭头控制小车目的地

之后我们在rviz里选择2dnavgoal在终点位置标注下,之后回到查看座标终端记录坐标信息,记录目标位置坐标,

 

打开mini2_ws/src/mini2_arm/src/control_center.cpp,找到图片所示位置更改,此外,我们还可以在该文件内修改抓取与释放时机械臂位置,更改完成后,在mini2_ws文件夹下新建终端输入指令:catkin_make,编译。

home文件夹下运行RGBcube脚本

新建终端输入:rostopic pub /robot_voice/asr_topic std_msgs/String "data: 'red'"

激活语音识别程序,在第五个窗口下(RGBcube窗口说出要识别的红色蓝色绿色中的一种),之后开始自动识别物块并抓取到指定位置

最终效果:智行小车——致大学最后一个短学期_哔哩哔哩_bilibili

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
要在ROS小车中使用OpenCV库的cv2.VideoCapture()函数打开摄像头,您需要使用ROS中的图像传输工具。具体而言,您需要使用ROS中的图像话题(image topic)和ROS中的图像传输(image transport)。 以下是一个简单的Python脚本示例,使用cv2.VideoCapture()函数打开ROS小车的摄像头: ``` python import rospy import cv2 from sensor_msgs.msg import Image from cv_bridge import CvBridge # 初始化ROS节点 rospy.init_node('camera_node', anonymous=True) # 创建图像消息处理器对象(CvBridge) bridge = CvBridge() # 定义回调函数,处理摄像头图像 def camera_callback(image_msg): # 将ROS消息转换为OpenCV格式 cv_image = bridge.imgmsg_to_cv2(image_msg, "bgr8") # 在OpenCV中处理图像 # ... # 显示图像 cv2.imshow("Camera Feed", cv_image) cv2.waitKey(1) # 创建ROS话题订阅者,订阅图像话题 rospy.Subscriber("/camera/image_raw", Image, camera_callback) # 进入ROS循环 rospy.spin() ``` 在上面的代码中,`camera_callback()`函数是用来处理摄像头图像的回调函数。该函数将ROS消息转换为OpenCV格式,并在OpenCV中处理图像。在本例中,我们只是简单地将图像显示在窗口中,但您可以根据您的需求进行更复杂的处理。 要使用cv2.VideoCapture()函数打开ROS小车的摄像头,您只需要更改以下行: ``` python # 创建ROS话题订阅者,订阅图像话题 rospy.Subscriber("/camera/image_raw", Image, camera_callback) ``` 将`/camera/image_raw`更改为您ROS小车上实际使用的摄像头话题名称即可。 请注意,如果您的ROS小车上有多个摄像头,您需要使用不同的话题名称来访问它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值