ROS 简单使用总结

本文介绍了ROS开发的相关内容,包括每次打开终端运行ros命令前需先运行特定命令或在.bashrc中添加配置,还涉及创建ROS工作空间、了解catkin程序包组成、运行roscore、编辑.cpp文件和CMakeLists.txt等,最后提到运行catkin_make及相关注意事项。

详细请查看:http://wiki.ros.org/cn/ROS/Tutorials 教程

1、每次打开终端,需要先运行如下命令后才能运行ros相关命令:

比如你安装的是ROS Indigo,$ source /opt/ros/indigo/setup.bash

也可(在根目录上打开)vim .bashrc 在最后一行添加这个命令,这样你执行这些命令配置好环境;

2、创建ROS工作空间

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ cd ~/catkin_ws/

$ catkin_make //编译
如果你查看一下当前目录应该能看到'build'和'devel'这两个文件夹。在'devel'文件夹里面你可以看到几个setup.*sh文件。
接下来首先source一下新生成的setup.*sh文件:
$ source
devel/setup.bash

3、一个catkin程序包由什么组成

最简单的程序包也许看起来就像这样:

  • my_package/
      CMakeLists.txt
      package.xml

4、roscore 

 

roscore 是你在运行所有ROS程序前首先要运行的命令。

 

请运行:

 

$ roscore

 

5、查看package.xml, 确保它包含一下两条语句:

 

  <build_depend>message_generation</build_depend>
  <run_depend>message_runtime</run_depend>

 

如果没有,添加进去。 注意,在构建的时候,我们只需要"message_generation"。然而,在运行的时候,我们只需要"message_runtime"。

 

6、编辑.cpp 如talker.cpp 

7、写CMakeLists.txt,如果需要关于 CMakeLists.txt 更详细的信息,请参考 catkin/CMakeLists.txt网址:http://wiki.ros.org/catkin/CMakeLists.txt

 

现在运行 catkin_make

 

# In your catkin workspace
$ catkin_make (根目录)

8、确保roscore可用,并运行:

 

$ roscore

 

catkin specific 如果使用catkin,确保你在调用catkin_make后,在运行你自己的程序前,已经source了catkin工作空间下的setup.sh文件:

 

# In your catkin workspace
$ cd ~/catkin_ws
$ source ./devel/setup.bash

 

In the last tutorial we made a publisher called "talker". Let's run it:

 

$ rosrun beginner_tutorials talker      (C++)


 

转载于:https://www.cnblogs.com/rjjhyj/p/10570725.html

### ROS 初学者项目实例与教程 对于初学者来说,学习 ROS 的最佳方式之一是从简单的项目入手。这些项目不仅可以帮助理解 ROS 基本概念,还能实践其核心功能模块。 #### 使用 `rospy` 和 `ros2 run` 实现基本发布者订阅者通信 以下是一个基于 Python 的简单示例,展示如何创建一个发布者节点和一个订阅者节点: ```python # 发布者节点 (talker.py) import rclpy from rclpy.node import Node from std_msgs.msg import String class TalkerNode(Node): def __init__(self): super().__init__('talker_node') self.publisher_ = self.create_publisher(String, 'topic', 10) timer_period = 0.5 # seconds self.timer = self.create_timer(timer_period, self.timer_callback) def timer_callback(self): msg = String() msg.data = f'Hello World {self.get_clock().now()}' self.publisher_.publish(msg) self.get_logger().info(f'Publishing: "{msg.data}"') def main(args=None): rclpy.init(args=args) talker = TalkerNode() rclpy.spin(talker) talker.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` ```python # 订阅者节点 (listener.py) import rclpy from rclpy.node import Node from std_msgs.msg import String class ListenerNode(Node): def __init__(self): super().__init__('listener_node') self.subscription = self.create_subscription( String, 'topic', self.listener_callback, 10) self.subscription # prevent unused variable warning def listener_callback(self, msg): self.get_logger().info(f'I heard: "{msg.data}"') def main(args=None): rclpy.init(args=args) listener = ListenerNode() rclpy.spin(listener) listener.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` 上述代码展示了如何利用 ROS 提供的消息传递机制实现两个节点之间的数据交换[^1]。 --- #### 创建自定义消息类型并使用 为了扩展项目的复杂度,可以尝试定义自己的消息类型。以下是具体步骤: 1. 在包目录下创建 `msg` 文件夹。 2. 定义一个新的 `.msg` 文件,例如 `CustomMessage.msg`: ``` float64 data string name ``` 3. 修改 `CMakeLists.txt` 和 `package.xml` 配置文件以支持新消息类型的编译[^2]。 --- #### TurtleSim 控制器模拟 TurtleSim 是 ROS 中的一个经典教学工具,用于演示机器人控制逻辑。可以通过键盘输入命令来移动虚拟海龟。启动方法如下: ```bash ros2 launch turtlesim turtle_sim.launch.py ``` 随后编写脚本来改变背景颜色或增加更多交互行为[^3]。 --- #### 动态路径解析技巧 当处理多个配置文件或者资源链接时,动态获取当前 launch 文件所在位置非常有用。这可通过内置函数 `(dirname)` 来完成。例如,在 XML 格式的 launch 文件中引入其他子文件的方式为: ```xml <include file="$(dirname)/subfile.launch"/> ``` 此技术简化了跨不同环境部署应用的过程[^4]。 --- ### 总结 以上列举了几种适合新手入门的 ROS 小型实验案例,涵盖了基础主题如消息传输、定制化通讯协议设计以及图形界面操控等内容。随着经验积累,可逐步探索更高级的主题比如 SLAM 映射算法或是导航堆栈集成方案等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值