ROS2图形化方式新建功能包工具- Turtle Nest

提示:全文AI生成。


链接:

https://github.com/Jannkar/turtle_nest

配置

Turtle Nest 使用说明(中文版)

一、Turtle Nest 简介

正如海龟巢是幼海龟的诞生地,ROS 2 Turtle Nest 是 ROS 2 包的诞生和成长之地。Turtle Nest 提供了一个易用的图形用户界面(GUI),简化了 ROS 2 包的创建过程。

二、为什么使用 Turtle Nest?

  1. 易于使用:无需深入 ROS 2 文档查找正确命令,也无需手动编辑 CMakeLists.txt 或 setup.py 文件。
  2. 支持多种语言:能够创建 C++ 和/或 Python 节点,这些节点立即可用于开发。
  3. 自动添加必要依赖:自动添加 rclpy、rclcpp 和 std_msgs 等必要依赖。
  4. 启动文件选项:可选择创建启动文件,以便使用单个命令运行节点。
  5. 参数文件选项:提供包含节点参数示例的参数文件选项。
  6. 语言组合:支持在同一包内创建 C++ 和 Python 节点,通常这两种语言需要分别放在不同包中。
  7. 命名规范强制:强制执行命名规范,避免因包名或节点名错误导致构建失败。
  8. 重要细节记忆:记住工作区路径、维护者姓名和维护者电子邮件等未来包的重要信息。

三、先决条件

  • Ubuntu 22 或 24
  • ROS 2(以下任一版本)
    • Humble
    • Iron
    • Jazzy
    • Rolling

四、安装

  1. 创建一个新的 ROS 2 工作区(如果你还没有的话)。
  2. 克隆 Turtle Nest 仓库。
  3. 安装依赖并构建应用程序。
 

bash复制代码

mkdir -p $HOME/ros2_ws/src/
cd $HOME/ros2_ws/src/
git clone https://github.com/Jannkar/turtle_nest.git
cd ..
sudo apt-get update
rosdep install --from-paths src --ignore-src -r -y --rosdistro ${ROS_DISTRO}
colcon build
source install/setup.bash
mkdir -p $HOME/ros2_ws/src/  
cd $HOME/ros2_ws/src/  
git clone https://github.com/Jannkar/turtle_nest.git  
cd ..  
sudo apt-get update  
rosdep install --from-paths src --ignore-src -r -y --rosdistro ${ROS_DISTRO}  
colcon build  
source install/setup.bash

 

如果出现网络问题,可用kk。

编译一次通过。 

五、使用

  1. 运行应用程序

    turtle-nest

    bash复制代码

    turtle-nest

    在 GUI 中填写必要信息来创建新的 ROS 2 包。

  2. 构建和配置新包

    cd $HOME/ros2_ws/  
    colcon build  
    source install/setup.bash

    bash复制代码

    cd $HOME/ros2_ws/
    colcon build
    source install/setup.bash
  3. 运行节点或启动文件

    • 运行节点:

      ros2 run <package_name> <node_name>

      bash复制代码

      ros2 run <package_name> <node_name>
    • 启动启动文件:

      ros2 launch <package_name> <launch_file_name>

      bash复制代码

      ros2 launch <package_name> <launch_file_name>

六、总结

Turtle Nest 为 ROS 2 开发者提供了一个方便、快捷的包创建工具,极大简化了包创建的复杂流程,使开发者能够更专注于核心功能的开发。通过其图形化界面和自动化功能,Turtle Nest 降低了 ROS 2 开发的门槛,使得新手和资深开发者都能轻松上手。


 

 

 

 

 

 

有误,但可用。

合适规范:


案例 

在ROS 2中使用turtlesim画圆的C++代码需要创建一个能够发布速度指令到/turtle1/cmd_vel话题的节点。这些速度指令将告诉turtlesim节点如何控制海龟的移动,从而画出一个圆。以下是一个简单的C++示例,用于在ROS 2中实现这一功能:

首先,确保你的ROS 2环境中已经安装了turtlesim包。然后,创建一个新的ROS 2包(如果还没有的话),并添加必要的依赖项。

接下来,在你的包目录中,创建一个C++源文件,例如src/draw_circle_main.cpp,并添加以下代码:

 

cpp复制代码

#include <chrono>
#include <functional>
#include <memory>
#include <string>
#include "rclcpp/rclcpp.hpp"
#include "geometry_msgs/msg/twist.hpp"
using namespace std::chrono_literals;
class DrawCircleNode : public rclcpp::Node
{
public:
DrawCircleNode()
: Node("draw_circle_node"), linear_velocity_(1.0), angular_velocity_(1.0)
{
RCLCPP_INFO(this->get_logger(), "Draw Circle Node has been started.");
// 创建一个发布者,发布到/turtle1/cmd_vel话题
twist_pub_ = this->create_publisher<geometry_msgs::msg::Twist>("/turtle1/cmd_vel", 10);
// 创建一个定时器,以固定的间隔发布速度指令
timer_ = this->create_wall_timer(
100ms, std::bind(&DrawCircleNode::publish_velocity, this));
}
private:
void publish_velocity()
{
auto message = geometry_msgs::msg::Twist();
// 设置线速度和角速度以画出圆
message.linear.x = linear_velocity_; // 线速度
message.angular.z = angular_velocity_; // 角速度
RCLCPP_INFO(this->get_logger(), "Publishing velocity: linear.x: %f, angular.z: %f", message.linear.x, message.angular.z);
twist_pub_->publish(message);
}
rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr twist_pub_;
rclcpp::TimerBase::SharedPtr timer_;
double linear_velocity_;
double angular_velocity_;
};
int main(int argc, char *argv[])
{
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<DrawCircleNode>());
rclcpp::shutdown();
return 0;
}

在这个示例中,DrawCircleNode类继承自rclcpp::Node,并创建了一个发布者twist_pub_,它发布到/turtle1/cmd_vel话题。publish_velocity方法被定时器调用,以固定的间隔(在这个例子中是100毫秒)发布速度消息。

请注意,线速度(linear_velocity_)和角速度(angular_velocity_)的值可以根据需要调整,以改变圆的半径和绘制速度。

接下来,你需要在你的CMakeLists.txt中添加构建这个源文件的指令,确保包含了必要的依赖项,如rclcppgeometry_msgs

最后,构建你的包:

 

bash复制代码

colcon build

构建完成后,确保turtlesim节点正在运行:

 

bash复制代码

ros2 run turtlesim turtlesim_node

然后,在另一个终端窗口中运行你的draw_circle节点:

 

bash复制代码

ros2 run <your_package_name> draw_circle

<your_package_name>替换为你创建的ROS 2包的名称。你应该会看到turtlesim窗口中的海龟开始画出一个圆。


为了在ROS 2中修改CMakeLists.txt以将src/draw_circle_main.cpp配置为可执行目标文件,你需要按照以下步骤进行:

  1. 找到CMakeLists.txt
    在你的ROS 2包的根目录下找到CMakeLists.txt文件。

  2. 添加可执行文件
    CMakeLists.txt中,使用add_executable函数来声明你的可执行文件,并指定源文件。

  3. 链接依赖项
    使用ament_packagetarget_link_libraries来链接你的可执行文件到所需的ROS 2库和依赖项。

  4. 安装可执行文件
    使用install函数来安装你的可执行文件到适当的目录。

以下是一个示例CMakeLists.txt,它配置了src/draw_circle_main.cpp作为可执行目标文件:

 

cmake复制代码

cmake_minimum_required(VERSION 3.5)
project(your_package_name)
# 查找依赖的包
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(geometry_msgs REQUIRED)
# 添加可执行文件
add_executable(draw_circle src/draw_circle_main.cpp)
# 链接依赖的库
ament_target_dependencies(
draw_circle
rclcpp
geometry_msgs
)
# 安装可执行文件
install(TARGETS
draw_circle
DESTINATION lib/${PROJECT_NAME})
# ament包配置
ament_package()

请确保将your_package_name替换为你的实际ROS 2包的名称。

在这个示例中:

  • add_executable(draw_circle src/draw_circle_main.cpp)声明了一个名为draw_circle的可执行文件,源文件是src/draw_circle_main.cpp
  • ament_target_dependencies(draw_circle rclcpp geometry_msgs)指定了draw_circle可执行文件依赖的ROS 2库。
  • install(TARGETS draw_circle DESTINATION lib/${PROJECT_NAME})指定了安装可执行文件的目录。通常,这会是你的包安装目录下的lib子目录,但你可以根据需要更改它。
  • ament_package()是ament构建系统的必要命令,用于配置包。

完成这些修改后,你可以运行colcon build来构建你的包,并生成draw_circle可执行文件。构建成功后,你就可以使用ros2 run your_package_name draw_circle来运行你的程序了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhangrelay

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

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

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

打赏作者

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

抵扣说明:

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

余额充值