首页 > 其他分享 >ROS2图形化方式新建功能包工具- Turtle Nest

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

时间:2024-09-14 18:51:52浏览次数:14  
标签:Turtle src draw Nest rclcpp circle ROS 图形化 ros2

提示:全文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来运行你的程序了。

标签:Turtle,src,draw,Nest,rclcpp,circle,ROS,图形化,ros2
From: https://blog.csdn.net/ZhangRelay/article/details/142052754

相关文章

  • 2024年06月中国电子学会青少年软件编程(图形化)等级考试试卷(四级)答案 + 解析
    青少年软件编程(图形化)等级考试试卷(四级)分数:100题数:24一、单选题(共10题,共30分)1.运行下列程序,输入单词“PLAY”,最后角色说?()A.LY4APB.AP4LYC.YA4PLD.PL4AY正确答案:B答案解析:根据程序分析可知,首先获取单词字符数,然后奇数位的字母放在字符数左侧,......
  • 2024年06月中国电子学会青少年软件编程(图形化)等级考试试卷(一级)答案 + 解析
    青少年软件编程(图形化)等级考试试卷(一级)分数:100题数:37一、单选题音乐VideoGame1的时长将近8秒,点击一次角色,下列哪个程序不能完整地播放音乐两次?()A.B.C.D.正确答案:D答案解析:D选项只会播放一遍声音水果盲盒角色有6个造型,其中星星造型表示神秘大礼......
  • es:使用嵌套nested搜索
    一,创建索引:说明:创建索引时,要使用nested类型//创建索引库publicfunctioncreateSecondIndex($client,$indexName){$params=['index'=>$indexName,//索引的名称(mysql的表名)'body'=>[�......
  • 嵌套集合模型(Nested set model)介绍
    嵌套集合模型(Nestedsetmodel)介绍pilishen /更新于5年前本文翻译自维基百科Nestedsetmodel 此文档是 nestedset-无限分类正确姿势的扩展阅读 nestedsetmodel(嵌套集合模型)是一种在关系型数据库中表示nestedsets(嵌套集合) 的特殊技术。[nestedsets]通常......
  • HarmonyOS开发之NestedScroll嵌套滑动
    在Harmony应用开发中,为了提高用户体验,开发者经常需要实现复杂的滑动交互效果。特别是在一些需要内外层滑动结合的应用场景下,如何优雅地处理这些滑动事件变得尤为重要。本文将探讨两种使用nestedScroll机制来实现滑动布局的方法,并附上相应的代码示例。场景一:基于NestedScroll实现Wat......
  • 【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十八章u-bo
      迅为i.mx8mm开发板特点: 性能强:i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核,主频高达1.8GHz,2GDDR4内存、8GEMMC存储。 PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个......
  • python学习(一)turtle画图
    一些常用的函数:1)turtle.pensize():设置线条的粗细;2)turtle.speed():设置绘制的速度,1-10,1最慢,10最快;3)turtle.begin_fill():准备开始填充图形;4)turtle.circle(50,steps=3):circle函数在之前用到过,是画一个半径为radius的圆,这里是扩展,steps表示在半径为50的圆内的内置steps多边形;5)t......
  • Redis 入门 - 图形化管理工具如何选择,最全分类
    工欲善其事必先利其器,上一章Redis服务环境已经搭建完成,现在就需要一个趁手的工具,有个好工具可以做到事半功倍。Redis图形化管理工具五花八门,可供选择的很多,大家可以根据自己的需求应用场景进行选择。就是因为选择过多所以才写了这篇文章,和大家分享下到底有哪些工具可供选择,好给......
  • Kali 安装炫彩蛇(MSF图形化工具)
    本教程使用手动安装的形式。参考文献:首次安装(yuque.com) 准备安装文件这里在KaliLinux系统进行安装。切换到root用户。 将install.sh添加到虚拟机的某个目录(我直接上传到家目录里面了),脚本从raw.githubusercontent.com/docker/docker-install/master/install.sh下载 ......
  • 2024年3月scratch图形化编程等级考试四级真题
    2024年3月scratch图形化编程等级考试四级真题202403青少年软件编程等级考试Scratch四级真题试卷总分数:100分考试时长:60分钟第1题 运行下列程序,输入单词“PLAY”,最后角色说?()A:HLLLHLLLB:LLLLLLLLC:LLHHLLHHD:LLLHLLLH第2题 运行程序后,分别输入3、2、1,小猫会说什......