ROS基础入门——实操教程
ROS基础入门——实操教程
前言
本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。

前言:本文初编辑于2024年10月24日
CSDN主页:https://blog.csdn.net/rvdgdsva
博客园主页:https://www.cnblogs.com/hassle
一、安装【virtualbox】【Ubuntu】【ROS】
前人栽树,后人乘凉
二、文件创建
2.1创建工作空间和初始化
此处参考(选看)
在ubuntu主界面按下(ctrl + alt + T)打开命令行,然后依次输入下面的命令
mkdir -p test(这是自定义空间名称,爱叫什么叫什么)/src
cd test(这是自定义空间名称,爱叫什么叫什么)
catkin_make
生成了下面的文件树
....
└── test(文件夹,意为工作空间,第一行代码运行时被创建)
├── build(文件夹,意为编译空间,第三行代码运行时被创建)
│ ├── ...
├── devel(文件夹,意为开发空间,第三行代码运行时被创建)
│ ├── setup.bash
│ ├── setup.sh
│ ├── ...
└── src(文件夹,第一行代码运行时被创建)
└── CMakeLists.txt (别动这个)
2.2导入包
生成一个基于三个库的ROS包,其中:roscpp是使用C++实现的库,rospy是使用python实现的库,std_msgs是标准消息库
cd src
catkin_create_pkg testpkg(这是ROS包名,爱叫什么叫什么) roscpp rospy std_msgs
此时src文件树变动
....
└── test
├── build
│ ├── ...
├── devel
│ ├── setup.bash
│ ├── setup.sh
│ ├── ...
└── src
└── CMakeLists.txt (别动这个!!!动的是下面那个同名文件,别搞错了)
└── testpkg
├── CMakeLists.txt(执行cpp和py代码需要修改此处)(2.4涉及此处)
├── include
│ └── testpkg
├── package.xml
└── src(此处存放cpp代码)(2.3涉及此处)
2.3 编写Cpp与Py程序
Cpp详细教程(教程浓缩成下面一句话了,看完教程感觉脑子很乱的话照着下面的话去做就行)
一句话概括:需要在src(源文件空间)······> testpkg(ROS包名,爱叫什么叫什么)······> src文件夹(用于存放cpp文件)中存放编写好的cpp文件
Py详细教程(同上)
一句话概括:需要在src(源文件空间)······> testpkg(ROS包名,爱叫什么叫什么)······> scripts文件夹(用于存放py文件,需要手动创建该文件夹)中存放编写好的py文件
2.4 Cmakelist.txt文件改写
2.4.1Cpp程序:
在自定义命名包的 CMakeLists.txt(执行cpp和py代码需要修改此处)内修改第136行和第149-151行 为
具体行数因版本不同可能有所变动
注意映射名(映射名就是随便写的名,别写test就行)可与cpp源文件名相同
add_executable(映射名
src/源文件名.cpp
)
target_link_libraries(映射名
${catkin_LIBRARIES}
)
2.4.2python程序:
在自定义命名包的 CMakeLists.txt(执行cpp和py代码需要修改此处)内修改第162-165行 为
具体行数因版本不同可能有所变动
注意这里Py程序是不需要映射名的
catkin_install_python(PROGRAMS scripts/源文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
2.5编译并运行程序
2.5.1Cpp程序:
在自定义空间名称(2.1中创建的)中按下(ctrl + alt + T)打开命令行,依次输入
catkin_make
roscore
在自定义空间名称(2.1中创建的)中按下(ctrl + alt + T)打开另一个命令行,依次输入
source ./devel/setup.bash
rosrun 包名(2.2中创建的) 映射名(2.4中创建的)
2.5.2Python程序:
在自定义空间名称(2.1中创建的)中按下(ctrl + alt + T)打开命令行,依次输入
chmod +x 源文件名.py
catkin_make
roscore
在自定义空间名称(2.1中创建的)中按下(ctrl + alt + T)打开另一个命令行,依次输入
source ./devel/setup.bash
rosrun testpkg(ROS包名,爱叫什么叫什么,2.2中创建的) 源文件名.py(2.4中创建的)
ROS基础入门——实操教程的更多相关文章
- TensorFlow入门实操课程第一章教程笔记
神经元网络深度学习的起步程序 Hello World 第一个应用程序总是应该从超级简单的东西开始,这样可以看到代码如何产生和运作的整体框架. 就创建神经网络而言,我喜欢使用的例子是一个能够学习两组数字 ...
- 入门级实操教程!从概念到部署,全方位了解K8S Ingress!
Kubernetes Ingress用于添加规则,以将流量从外部路由到Kubernetes集群的服务中.在本文中你将了解ingress 的概念,以及用于路由外部流量到Kubernetes deploy ...
- SpringCloud之服务网关Gateway,入门+实操
SpringCloudAlibaba微服务实战教程系列 Spring Cloud 微服务架构学习记录与示例 一. GateWay简介 Spring Cloud GateWay是Spring Cloud ...
- 实操教程丨如何在K8S集群中部署Traefik Ingress Controller
注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...
- GitLab-CI/CD入门实操
以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...
- burp suite 基础入门超详细教程
介绍: 都是我个人了解到的信息,,分享给大家 欢迎指正 burp suite 被誉为web安全工具中的瑞士军刀. 大家知道,瑞士军刀,都是体积小,功能强悍,.西方军队的标配.说这么多,只是想强调这款工 ...
- sqlmap基础入门超详细教程
前言: 总算进入了自己喜欢的行业. 要时刻记得当初自己说过的话, 不忘初心. Come on! 资料: 感谢超哥分享的干货.. sqlmap干货点击直达 学习环境: 本次学习使用的是kali集成的s ...
- 织梦默认编辑器换成kindEditor实操教程
织梦默认编辑是CKeditor,要想换成kindEditor编辑器,按如下步骤操作. 先看效果图: 首先下载打包好的 kindEditor_for_dedeCMS.ZIP,下载地址:https://d ...
- 超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
在2018年年初,Jenkins X首次发布,它由Apache Groovy语言的创建者Jame Strachan创建.Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins ...
- 手把手实操教程!使用k3s运行轻量级VM
前 言 k3s作为轻量级的Kubernetes发行版,运行容器是基本功能.VM的管理原本是IaaS平台的基本能力,随着Kubernetes的不断发展,VM也可以纳入其管理体系.结合Container和 ...
随机推荐
- Linux 破解mysql密码
mysql忘记密码怎么办 [root@master ~]# mysql -uroot -pHuawei123123$ mysql: [Warning] Using a password on the ...
- (一)Vue 3 项目搭建
确保已安装 16.0 或更高版本的 Node.js,然后在命令行中运行以下命令: npm init vue@latest 这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工 ...
- 【Mybatis-Plus】联表分页查询实现
参考文章: https://blog.csdn.net/weixin_43847283/article/details/125822614 上上周写的SQL案例确实可以重构,所以搬到Demo里面测试看 ...
- 【Java-GUI】02 Dialog对话框
--1.对话框 Dialog java.awt.Dialog 和Window一样可以独立存在的一个窗体 但是注意: 1.Dialog对象一定需要一个依附的父级窗口 2.两种模式(模式和非模式),模式打 ...
- 【Spring Data JPA】06 全注解配置(非SpringBoot整合)
总依赖组件坐标: <properties> <spring.version>5.2.8.RELEASE</spring.version> <hibernate ...
- 【转载】 Alpha-beta剪枝
原地址:https://www.jiqizhixin.com/graph/technologies/56dbb21e-c3f9-4e06-b16a-2e28f25b26c8 ============= ...
- git 如何处理合并时存在的子模块冲突
如果另一个分支的子模块不同于当前分支,那么在拉取下来时,并不会更新本地子模块的版本,而会出现一个.diff文件,表示差异性.那么在合并代码时,可能会因为这个.dff文件冲突无法解决.产生这个问题的原因 ...
- Apache DolphinScheduler如何开启开机自启动功能?
转载自东华果汁哥 Apache DolphinScheduler 是一个分布式.去中心化的大数据工作流调度系统,支持大数据任务调度.若要设置 DolphinScheduler 开机自启动,通常需要将其 ...
- 20-canvas之形变
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- SMU 2024 spring 天梯赛3
SMU 2024 spring 天梯赛3 7-1 重要的话说三遍 - SMU 2024 spring 天梯赛3 (pintia.cn) I'm gonna WIN! I'm gonna WIN! I' ...