3.第三次课—ROS通信【ROS智能车-自动驾驶入门与实战】科创竞赛兴趣班 | 课程回顾| 课外补充| ROS通信机制| ROS话题通信| Publisher| Subscriber| 保姆级教程

目录

一、【课程前言】

课程安排

学习目的

集邮册

二、【课程正文】

1.【上次课程回顾 / 课外补充知识】 

1.1上次课程回顾

1.2课外补充知识

1.2.1科学找资料 

1.2.2重生之—霸总教我查文献 

1.2.3手把手玩转Linux指令 

1.2.4如何优雅使用Github和Gitee 

1.2.5错过一个亿之重邮图书馆 

2.【ROS通信机制 / ROS话题通信】

2.1ROS通信机制 

2.2ROS话题通信 

3.【Publisher / Subscriber】

3.1Publisher

🚗任务五

3.2Subscriber

🚗任务六

三、【课程补充】

总结 


一、【课程前言】

简介:博主依托自动化学院学生学习与发展指导中心,开设了一门课程竞赛兴趣班,主要内容为ROS智能车—自动驾驶入门与实战,旨在帮助对ROS机器人操作系统、智能车、自动驾驶相关方面感兴趣的大一、大二、大三同学,深入学习基础知识并进行对应实战,从基础开始一步一步,最后在智能小车上完成实战,全过程引导,保姆级教程!~

⭐在这里,你能收获到ROS智能车的开发经验实战技巧,以及各类比赛信息

⭐在这里,你能接触到自动驾驶相关技术开发流程经验

⭐在这里,你能从基础开始一步一步构建自己的智能车开发系统

⭐在这里,你能学会Linux基础、Ubuntu基础、ROS基础等保姆级教程

我是本门课程的leader,大三物联网工程专业,拥有较为丰富的ROS智能车开发,和自动驾驶相关项目的经验

-----------------------------------------------------------------------------------------

课程安排

第一次课—课程基本介绍/学习资源推荐/网课/课程安排等【重要】

第二次课—环境配置以及软件安装(虚拟机/Ubuntu/Vscode/ROS)【重要】

第三次课—ROS 基础—话题/服务/参数服务器/常用命令及 API/launch 文件/TF 坐标变换/常用工具【重要】

第四次课—ROS 进阶—概述/坐标系/定位/导航/路径规划/SLAM/地图构建/导航【重要】

第五次课—基于 ROS 架构的智能小车实战——1(软件安装/配置/硬件架构/文件了解)

第六次课—基于 ROS 架构的智能小车实战——2(手动控制小车跑起来)

第七次课—基于 ROS 架构的智能小车实战——3(让小车无人自主导航)

第八次课—基于 ROS 架构的智能小车实战——4(综合开发进阶实战)

----------------------------------------------------------------------------------------- 

学习目的

1)学习基于 ROS 的基本 Python、C++开发语法规则

2)了解当前自动驾驶领域的应用前景、市场行业等

3)学习基于的 ROS 智能小车基本架构

4)学习掌握自动驾驶的关键技术:多传感器融合感知、定位、通信、导航等

5)通过学习在智能小车上完成自主导航实战

----------------------------------------------------------------------------------------- 

集邮册

【挑战任务】参与课程的同学,在每次课都会有两个挑战任务,成功完成后,即可集邮——小汽车印章,小汽车印章可以兑换神秘奖品喔~~~ 兑换规则在文末~~~

 -----------------------------------------------------------------------------------------

二、【课程正文】

接下来是第三次课程的内容,一起来回顾前面两次课程的知识,并且学习一些补充课外知识,学习ROS的三大通信机制:话题通信,服务通信,参数服务器,并且深入了解ROS的话题通信,基于ROS编写发布方Publisher和订阅方Subscriber!

1.【上次课程回顾 / 课外补充知识】 

1.1上次课程回顾

鱼香ROS【指令】wget http://fishros.com/install -O fishros && bash fishros

百度网盘链接:https://pan.baidu.com/s/1dGRP3EW1qBxFZ8lko6BrPg?pwd=AAAA

1.2课外补充知识

1.2.1科学找资料 

1.2.2重生之—霸总教我查文献 

1.2.3手把手玩转Linux指令 

示例:akaxi@akaxi-PC:~$ 
akaxi      //用户名,root为超级用户
@          //分隔符
Akaxi-PC   //主机名称
~         //当前所在目录,默认用户目录为~,会随着目录切换而变化
$        //表示当前用户是普通用户为$(管理员是#)

【指令】ls

【指令】cd

【指令】pwd

【指令】clear

【指令】mkdir
1.2.4如何优雅使用Github和Gitee 

----------------------云端代码克隆到本地------------------------
*从github仓库克隆到本地文件夹
git clone https://github.com/Akaxi6/Tracking_Car.git

*挂梯子连github需要改变改变端口
git config --global http.proxy http://127.0.0.1:7890

*取消代理,不挂梯子连gitee
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

# 查看代理
git config --global --get http.proxy
git config --global --get https.proxy

*查看本地文件夹/仓库的情况
git status
*提交文件到暂存仓库
git add Sendor_learning_Akaxi_1.pdf

*提交到仓库
git commit -m "commit pdf"  # ""引号内为备注

*查看仓库日志
git log

*推送到github云端
git push origin master/main

----------------------本地仓库推到云端------------------------
初始化本地仓库:git init
关联仓库:git remote add origin https://github.com/Akaxi6/Sensor_learning.git
将云仓库拉到本地:git pull origin master【初次提交跳过此步骤】
本地文件添加到本地仓库:git add . 【点 . 表示全部】
然后提交:git commit -m "备注"
本地仓库推到云仓库:git push origin master

1.2.5错过一个亿之重邮图书馆 

2.【ROS通信机制 / ROS话题通信】

2.1ROS通信机制 

2.2ROS话题通信 

3.【Publisher / Subscriber】

3.1Publisher

【快捷键】Ctrl + Shift + B

#include <ros/ros.h>
#include <std_msgs/String.h>

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    ros::init(argc, argv, "pub_pic_node");  // 发布节点创建
    ROS_INFO("节点pub_pic_node启动成功");     // 打印信息

    ros::NodeHandle nh;  // 初始化节点大管家
    ros::Publisher pub = nh.advertise<std_msgs::String>("my_pic", 10); //设置话题名称

    ros::Rate loop_rate(10); // 设置发布频率1秒10次

    while(ros::ok())
    {
        ROS_INFO("图片.jpg\n");
        std_msgs::String msg;  // 定义话题消息的类型为String
        msg.data = "图片.jpg";
        pub.publish(msg);      // 发布消息
        loop_rate.sleep();     // 休眠频率
    }
    return 0;
}

【快捷键】Ctrl + Shift + B

【指令1】roscore
【指令2】rosrun publish_pic pub_pic_node

【指令】rostopic list

🚗任务五

3.2Subscriber

#include <ros/ros.h>
#include <std_msgs/String.h>

void pic_callback(std_msgs::String msg)    // 回掉函数,处理接收到的话题信息
{
    ROS_INFO(msg.data.c_str());  // 打印得到的话题数据
    ROS_INFO("\n");
}

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    ros::init(argc, argv, "sub_pic_node");
    ROS_INFO("节点pub_pic_node启动成功");     // 打印信息

    ros::NodeHandle nh;
    ros::Subscriber sub = nh.subscribe("my_pic", 10, pic_callback);  //订阅发布者的话题my_pic,并进入回掉函数

    while (ros::ok())
    {
        ros::spinOnce();  // 循环一直回掉
    }
    
    return 0;
}

🚗任务六

-------------------------------------------END-------------------------------------------

三、【课程补充】

总结 

-----------------------------------------------------------------------------------------

 集邮兑换

-----------------------------------------------------------------------------------------

相信读到这里的朋友,一定是坚持且优秀的

给博主一个免费的赞👍吧

扫描二维码进ROS智能车-自动驾驶入门与实战群,问题交流 | 吹吹水 | 一起变得更加优秀

2024.4.30

渝北仙桃数据谷 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Akaxi-1

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值