ROS联合Webots之实现趣味机器人巡线刷圈

本文介绍了如何使用ROS和Webots模拟平台实现机器人视觉巡线。通过添加opencv库,调整摄像头参数,编写检测算法,并应用PID控制,实现了机器人在虚拟环境中自动沿着黑色线条行驶。详细步骤包括配置功能包,启用电机,调整摄像头角度,图像处理,以及关键点检测和PID速度控制。最终,通过调整和优化,机器人能够稳定地在赛道上刷圈。

ROS联合Webots实现机器人视觉巡线刷圈

注意:

  • 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识

ubuntu版本:20.04

webots版本:2021a

ros版本:noetic

前言

最近看到Youtube上大部分博主都在做巡线,笔者也来凑凑热闹。

此项目基于tianbot_mini机器人完成。
项目开源地址:tianbot_mini_webots

效果

小车已经设置为最高速度10

在这里插入图片描述

ROS控制方案

  1. 在功能包中添加opencv库
  2. 因为机器人要行使,所以首先要使能电机
  3. 要用到camera,所以使能camera
  4. 调整camera的前瞻角度
  5. 写opencv检测算法
  6. 更具PID控制算法控制两个轮子的速度

1. 配置功能包

1.1 配置CMakeLists.txt

自己找到相应位置添加

set(CMAKE_CXX_FLAGS "-std=c++11") # 调用OpenCV配置:C++版本为11

find_package(OpenCV 4.2 REQUIRED) # 找OpenCV 4.2 安装路径

include_directories(
  ${OpenCV_INCLUDE_DIRS} # 加载OpenCV 4.2 安装路径
)

add_executable(tianbot_line_follow src/tianbot_line_follow.cpp)
add_dependencies(tianbot_line_follow webots_ros_generate_messages_cpp)
target_link_libraries(tianbot_line_follow	${catkin_LIBRARIES})
target_link_libraries(tianbot_line_follow	${OpenCV_LIBS}) # 使用到Opencv库需要通过Opencv链接库

2. 使能电机

笔者这边写了tianbot_velocity.cpp来使能左右电机,其主要代码如下所示:

// 初始化电机
for (int i = 0; i < NMOTORS; ++i) {
    // 速度控制时position设置为缺省值INFINITY(必须要这一步,否则webots会报错)
    set_position_client = n->serviceClient<webots_ros::set_float>(string("/tianbot_mini/") + string(motorNames[i]) + string("/set_position"));   
    set_position_srv.request.value = INFINITY;
    if (set_position_client.call(set_position_srv) && set_position_srv.response.success)     
        ROS_INFO("Positi
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值