Skip to content

DxFindStack/Turtle-Circle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Turtle-Circle

利用ROS2实现小海龟画圈————总共给出了Python版和C++版
README中以C++举例

一、安装运行环境

  1. 安装 VirtualBox
    VirtualBox 官网下载地址 建议安装到D盘
    VirtualBox是一款开源虚拟机软件,可以利用它在你的计算机上再安装其他操作系统,比如Ros2所需要的Linux操作系统。
  2. 安装 Ubuntu系统
    这里采用的是Ubantu22.04系统,一般把基于Linux内核的操作系统都称为Linux系统,而Ubantu就是以桌面应用为主的Linux操作系统之一。
    Ubuntu 下载镜像地址
    找到这个ubuntu-22.04.5-desktop-amd64.iso版本,点击下载即可。
    (1)下载好了以后,点击VirtualBox中的新建,输入名称Ubuntu22,选择下载好的Ubuntu所在的文件夹,找到Ubuntu,再点击跳过自动安装,如下图所示:
    Ubuntu安装页面 (2)按下图配置好CPU内存,点击下一步。
    CPU大小设置 (3)再按下图配置好虚拟硬盘大小,点击下一步。 内存大小设置
    (4)确认信息无误后,点击完成。
    确认信息
    (5)回到虚拟机主页面,点击启动,这个时候鼠标不能用,可以用键盘上下键来选中Try or install Ubuntu
    选择Try or install Ubuntu
    (6)点击捕获,然后回车
    捕获
    (7)进入Ubuntu界面,选择中文简体,然后点击安装Ubuntu
    选择中文简体
    (8)为了简化,选择最小安装,其他全取消,点击继续
    更新与安装
    (9)安装类型,由于只有一个磁盘选择第一个;如果双系统的话,选择第二个;再点击现在安装。
    安装类型
    (10)点击继续
    将改动写入磁盘
    (11)选择地区,点击继续
    选择地区
    (12)输入个人信息和密码,这里尽量不要出现中文,以英文字母就行,不用太长,密码要尽可能简单一点,防止忘记。
    输入个人信息和密码
    (13)安装完成,点击现在重启
    安装完成
    (14)按回车键
    按回车键
    (15)后面输入密码,就可以进入

注意事项
(1)虚拟硬盘可以给大一点,实际并不会占用那么大,但后期想调整就有点困难了。
(2)密码一定要记住,可以输一个简单的,后期输起来也方便。

  1. 安装 ROS2
    在Ubuntu中安装ROS2,可以通过Ctrl+shift+T打开终端使用一键安装指令 wget http://fishros.com/install -O fishros && . fishros
    (1)输入2,不更换继续安装
    第一个选择
    (2)输入1,选择humble(Ros2)
    第二个选择
    (3)输入1,选择humble(Ros2)桌面版
    第三个选择
    (4)输入密码,即可完成安装
    (5)检测ROS2安装成功与否
    检测ROS2安装成功与否
    (6)查找ROS2安装路径,输入whereis ros2,有路径证明安装成功。
    ROS2的路径查找

二、实现步骤

  1. 打开小海龟模拟器
    在Ubuntu系统里Ctrl+Alt+T打开终端,输入ros2 run turtlesim turtlesim_node打开小海龟模拟器。
  2. 在Vscode中创建功能包,并实现话题的发布与订阅
    (1)vscode中src目录下打开终端,输入ros2 pkg create demo_cpp_topic --build-type ament_cmake --dependencies rclcpp geometry_msg turtlesim --lincense Apache-2.0然后回车,创建功能包。
    (2)在demo_cpp_topic的src目录下创建turtle_circle.cpp文件,并在其中写C++代码实现小海龟画圈,如下所示:
    #include<rclcpp/rclcpp.hpp>
    #include"geometry_msgs/msg/twist.hpp"
    #include"chrono"
    
    class TurtleCircleNode: public rclcpp::Node
    {
    private:
       rclcpp::TimerBase::SharedPtr timer_;
       rclcpp::Publicsher<geometry_msgs::msg::Twist>::SharedPtr Publicsher_;  //发布者的智能指针
    public:
       explicit TurtleCircleNode(const std::string& node_name):Node(node_name)
       {
          publicher_ = this->create_publisher<geometry_msgs::msg::Twist>("turtle1_cmd_vel", 10);
          timer_ = this->create_wall_timer(1000ms,std::bind(&TurtleCircleNode::timer_callback,this));
       }
       void timer_callback()
       {
          auto msg = geometry_msgs::msg::Twist();
          msg.linear.x = 1.0;
          msg.linear.z = 0.5;
          publisher_->publish(msg);
       }
    
    } ;
    
    int main(int argc,char* argv[])
    {
       rclcpp::init(argc,argv);
       auto node = std::make_shared<TurtleCircleNode>("turtle_node");
       rclcpp::spin(node);
       rclcpp::shutdown();
    }
    
  3. 添加依赖和可执行文件
    在demo_cpp_topic/src目录下找到CMakeList.txt文件,并打开。在其中添加add_executable(turtle_circle src/turtle_circle),
    ament_target_dependencies(turtle_circle rclcpp geometry_msgs),
    install(TARGETS turtle_circle DESTINATION lib/$(PROJECT_NAME))
  4. 运行测试
    (1)在回到工作空间目录打开终端,输入colcon build构造可执行文件
    (2)利用source install/setup.bash添加环境变量
    (3)利用命令ros2 run demo_cpp_topic turtle_circle运行
    最后,打开海龟模拟器,就可以看见小海龟转圈。

About

利用ROS2实现小海龟画圈

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published