ROS入门记录 [2]

Tutorial——Beginner Level 1

1. Installing and Configuring Your ROS Environment

ROS入门记录1

2. Navigating the ROS Filesystem

$ rospack find roscpp
$ roscd roscpp
$ rosls roscpp

# rospack = ros + pack(age)
# roscd = ros + cd
# rosls = ros + ls

3. Creating a ROS Package

a catkin Package consist of :

  • package.xml. That package.xml file provides meta information about the package.
  • CMakeLists.txt. There can be no more than one package in each folder.

This means no nested packages nor multiple packages sharing the same directory. Most simplest package’s instructure might be like this:

my_package/
  CMakeLists.txt
  package.xml

A trivial workspace might look like this:

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

catkin_create_pkg

$ cd catkin_ws/src

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

$ cd ../catkin_ws
$ catkin_make

$ . ~/catkin_ws/devel/setup.bash

When using catkin_create_pkg earlier, a few package dependencies were provided. These first-order dependencies can now be reviewed with the rospack tool.

$ rospack depends1 beginner_tutorials 

std_msgs
rospy
roscpp

# 初次使用会报错,会建议你 sudo rosdep init

如果使用了proxy网络代理

# sudo rosdep init  will report error 
# rosdep init  ERROR: cannot download default sources list from
# 需要sudo使用 -E 来保留 环境变量配置 ,如之前设置过的 export http_proxy=x:y

$ sudo -E rosdep init

$ rosdep update
$ rospack depends1 beginner_tutorials  # 可得到上述相应依赖包

$ roscd beginner_tutorials
$ vi package.xml

<package>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 ROS 2 入门示例。 假设你已经安装好了 ROS 2 和相关的依赖包。我们将创建一个简单的 ROS 2 节点,该节点将发布一个名为 `/demo_topic` 的主题,其中包含一个字符串消息。我们还将创建一个订阅该主题的节点。 首先,在终端中创建一个工作空间: ``` mkdir -p ~/ros2_ws/src cd ~/ros2_ws/ colcon build ``` 接下来,创建一个 ROS 2 包: ``` cd ~/ros2_ws/src ros2 pkg create my_demo_pkg --build-type ament_cmake ``` 这将在 `~/ros2_ws/src` 目录下创建一个名为 `my_demo_pkg` 的 ROS 2 包。进入该包的目录: ``` cd my_demo_pkg/ ``` 在 `my_demo_pkg` 目录下创建一个名为 `publisher.cpp` 的 C++ 文件,并将以下代码复制到文件中: ```cpp #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" using namespace std::chrono_literals; class PublisherNode : public rclcpp::Node { public: PublisherNode() : Node("publisher_node") { publisher_ = this->create_publisher<std_msgs::msg::String>("/demo_topic", 10); timer_ = this->create_wall_timer(1s, std::bind(&PublisherNode::timer_callback, this)); } private: void timer_callback() { auto message = std_msgs::msg::String(); message.data = "Hello, ROS 2!"; publisher_->publish(message); } rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_; rclcpp::TimerBase::SharedPtr timer_; }; int main(int argc, char **argv) { rclcpp::init(argc, argv); auto node = std::make_shared<PublisherNode>(); rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 这个节点将创建一个名为 `/publisher_node` 的节点,并在 `/demo_topic` 主题上发布一个字符串消息。 接下来,在 `my_demo_pkg` 目录下创建一个名为 `subscriber.cpp` 的 C++ 文件,并将以下代码复制到文件中: ```cpp #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" void callback(const std_msgs::msg::String::SharedPtr msg) { RCLCPP_INFO(rclcpp::get_logger("subscriber_node"), "Received message: '%s'", msg->data.c_str()); } int main(int argc, char **argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("subscriber_node"); auto subscriber = node->create_subscription<std_msgs::msg::String>("/demo_topic", 10, callback); rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 这个节点将创建一个名为 `/subscriber_node` 的节点,并订阅 `/demo_topic` 主题。当接收到消息时,它将打印消息内容。 现在,我们需要将这两个节点添加到 `CMakeLists.txt` 文件中: ``` add_executable(publisher_node src/publisher.cpp) ament_target_dependencies(publisher_node rclcpp std_msgs) add_executable(subscriber_node src/subscriber.cpp) ament_target_dependencies(subscriber_node rclcpp std_msgs) ``` 最后,编译并运行节点: ``` cd ~/ros2_ws/ colcon build --packages-select my_demo_pkg source install/setup.bash ros2 run my_demo_pkg publisher_node ``` 在另一个终端中运行以下命令: ``` ros2 run my_demo_pkg subscriber_node ``` 现在你应该能够在订阅节点的终端中看到如下输出: ``` [INFO] [subscriber_node]: Received message: 'Hello, ROS 2!' ``` 这就是一个简单的 ROS 2 入门示例。你可以尝试修改代码并探索更多高级功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值