当前位置: 首页 > news >正文

ROS相关学习笔记

以下是创建并初始化一个新的 catkin 工作空间的具体步骤

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace  #这会在 src 目录下创建一个 CMakeLists.txt 文件

构建工作空间

进入工作空间根目录并构建

cd ~/catkin_ws

catkin_make

或者,如果你使用的是 catkin_tools

加载环境变量

为了使新构建的功能包可用,你需要加载新的环境设置:

source devel/setup.bash

手动创建 CMakeLists.txt

实际上,catkin_init_workspace 只是创建了一个简单的 CMakeLists.txt 文件。如果你已经熟悉 catkin 工作空间的结构,也可以手动创建这个文件。例如:

手动创建 CMakeLists.txt

cd ~/catkin_ws/src

ln -s /opt/ros/noetic/share/catkin/cmake/toplevel.cmake CMakeLists.txt

将真实的机器人模型导入到 TF(Transform Framework) 和 Gazebo 仿真工具中,需要完成以下关键步骤:完整示例项目结构

your_robot_description/

├── urdf/

│   ├── robot.urdf.xacro      # 主模型文件

│   └── sensors.xacro         # 传感器宏定义

├── meshes/                   # 3D模型文件(STL/DAE)

├── launch/

│   ├── display.launch        # 启动Rviz和TF

│   └── gazebo.launch         # 启动Gazebo仿真

└── config/

    └── controllers.yaml      # ros_control配置文件

工作空间的标准结构

ROS 使用一种称为 "catkin" 的构建系统,它遵循一个标准的目录结构。典型的 catkin 工作空间结构如下:

catkin_ws/

├── src/                # 源代码目录

│   ├── package_a/

│   ├── package_b/

│   └── ...

├── build/              # 构建目录(编译生成的中间文件)

├── devel/              # 开发目录(编译后的可执行文件和库)

└── install/            # 安装目录(最终安装的文件)

一个节点可以同时作为发布者和订阅者,即它可以发布消息到某些话题,也可以从其他话题订阅消息。

一个话题可以有多个发布者和多个订阅者。这意味着多个节点可以向同一个话题发布消息,而另一个节点可以从这个话题订阅并处理这些消息。

每次新建.py的node一定要给可执行权限===executable

话题的名字由自己制定、节点的名字在代码定义(习惯上与.py相同)

http://www.dtcms.com/a/104210.html

相关文章:

  • 第二十一章:Python-Plotly库实现数据动态可视化
  • 私有IP地址和公有IP地址的范围有哪些?你了解吗?
  • JAVA数据库增删改查
  • 总结面试中可能会涉及到简历的问题
  • C++练习3
  • Seg-Zero:通过认知强化实现的推理链引导分割
  • 【NLP 51、一些LLM模型结构上的变化】
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的国际化:支持多语言的 RESTful API
  • 短视频文案--钓鱼女和滑板女
  • Review --- 线程基础
  • 【实战】LLaMA-Factory 如何做 LLM 的多轮对话微调
  • 【C++笔记】C++常见二叉树OJ和拓扑排序
  • 31天Python入门——第19天:再学面向对象·一切皆对象
  • Css:如何解决绝对定位子元素内容被父级元素overflow:hidden属性剪裁
  • 可实现黑屏与蓝屏反应的屏幕隐私保护软件分享
  • 《高校辅导员》考试考哪些内容?
  • nacos-sdk-go v2.29 中一个拼写错误,我定位了3个小时 ……
  • 主流车辆监控管理系统对比分析
  • 极客说|重大发布:vLLM V1
  • 2011-2019年各省地方财政国债还本付息支出数据
  • 【Tauri2】011——菜单menu(2)
  • 什么是 Java 泛型
  • 0-1背包问题和最长公共子序列
  • Java打卡-Day23-文件、IO流
  • 探索 Kubernetes 网络穿透:如何从外部访问 K8s Pod 地址
  • 【MySQL】InnoDB的索引为什么用B+树而不用B树?
  • Python----计算机视觉处理(Opencv:道路检测之道路透视变换)
  • 蓝桥杯2023年第十四届省赛真题-棋盘
  • stack与queue和deque
  • Unicode统一码及实现方式的全面讲解