当前位置: 首页 > article >正文

ROS1 Noetic编程环境搭建和练习

下载wpr_simulation源码,安装和编译

git clone https://github.com/6-robot/wpr_simulation.git
#git clone https://ghpwpr_simulation/scriptsroxy.com/https://github.com/6-robot/wpr_simulation.git
#wpr_simulation/scripts目录下
./install_for_noetic.sh
cd ~/catkin_ws
catkin_make //编译
gedit ~/.bashrc 
source ~/catkin_ws/devel/setup.bash //配置环境变量并保存
roslaunch wpr_simulation wpb_simple.launch 

安装git

sudo apt install git
#cp /media/ros1/WISNTON/ssh/id_rsa* .  //复制ssh密钥

安装terminator

sudo apt install terminator

启动 Ctrl+Alt+T

Ctrl+Shift+E 横向分屏

Ctrl+Shift+O 纵向分屏

Ctrl+Shift+W 取消分屏

Alt+方向键 移动焦点

vscode

下载 Documentation for Visual Studio Code

sudo dpkg -i code_1.95.0-1730153583_amd64.deb //安装vscode
  • vscode的左下角搜索chinese安装简体中文插件,查看中点击终端,方便使用
  • 安装ros插件和github copilot插件
  • 安装Bracket Pair Colorizer 代码大括号颜色不同
  • vscode直接编译要配置环境,使用rosversion -d查看ros版本配置编译设置

4.包、节点

rosrun turtlesim turtlesim_node

编程实践

  1. 创建包和节点小结
  • catkin_create_pkg test_pkg rospy roscpp std_msgs
  • 在软件包src文件夹下创建一个节点cpp源码
  • 在节点的源码文件中include ros头文件
  • 构建main函数,并在函数开头执行ros::init()
  • 构建while循环,循环条件为ros::ok()
  • 在CMakeList.txt中设置节点源码的编译规则
  • 编译运行

  1. 消息发布小结
  • 确定话题名称和消息类型
  • 在代码文件中include消息类型对应的头文件
  • 在main函数中通过NodeHandle发布一个话题并得到消息发送对象
  • 生成要发送的消息包并进行发送数据的赋值
  • 调用消息发送对象的publish()函数,将消息包发送到话题中。

  1. 话题查看小结
  • 查看活跃话题列表 rostopic list
  • 查看话题内容 rostopic echo 话题名称
  • 查看话题频率 rostopic hz 话题名称

  1. 话题订阅小结
  • 确定话题名称和消息类型
  • 在代码文件中include消息类型对应的头文件
  • 在main函数中通过NodeHandle大管家订阅一个话题并设置消息接收回调函数
  • 定义一个回调函数,对接收到的消息进行处理
  • main函数中需要执行ros::spinOnce(),让回调函数能够响应接收到的消息包

  1. 编写launch文件,启动多节点 
  • 使用launch文件,可以通过roslaunch指令一次启动多个节点
  • launch中,节点添加output="screen",可让节点信息输出到终端(ROS_WARN不受该属性限制)
  • 为节点添加aunch-prefix="gnome-terminal -e",可让节点单独运行在一个独立终端中。

  1. C++实现机器人运动控制,实现思路
  • 构建一个新软件包,包名vel_pkg
  • 软件包新建vel_node节点
  • 向NodeHandle申请发布话题/cmd_vel,并拿到发布对象vel_pub
  • 构建geometry_msgs/Twist类型消息包vel_msg,用来保存要发送的速度值
  • 开启循环,不停使用vel_pub对象发送速度消息包vel_msg

http://www.kler.cn/a/392610.html

相关文章:

  • JAVA题目笔记(十五)经典算法题
  • 11张思维导图带你快速学习java
  • 用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能
  • request爬虫库的小坑
  • 深度学习代码笔记
  • 如何在Python中实现一个简单的搜索引擎:从零开始的指南
  • aws-athena查询语句总结
  • 视频播放相关的杂记
  • ChromeDriver 官方下载地址_测试自动化浏览器驱动
  • FreeRTOS源码(二) 任务调度
  • 数据湖与数据仓库的区别
  • Hive1.2.1与Hbase1.4.13集成---版本不兼容问题
  • 人工智能机器学习-特征工程
  • filezilla连接虚拟机Ubuntu Linux时无法连接到服务器的解决方案
  • HTML之列表学习记录
  • 研发工程师---物联网+AI方向
  • 实测运行容器化Tomcat服务器
  • 数据集整理分类小工具
  • Llama架构及代码详解
  • 平衡二叉树、红黑树、B树、B+树
  • 鸿蒙next版开发:相机开发-会话管理(ArkTS)
  • HTB:Precious[WriteUP]
  • 计算机网络——1.2计算机网络的组成
  • SpringBoot赋能的共享汽车业务管理系统
  • LeetCode【0022】括号生成
  • 腾讯云产品推荐----域名的使用