Part1前言
ROS(机器人操作系统)是一个开源的机器人软件平台,旨在提供一套通用的工具和库,帮助开发人员创建机器人应用程序。ROS提供了用于构建机器人系统的库、工具、驱动程序、通信协议和软件包管理系统。
以下是ROS的一些主要特点和组件:
分布式计算:ROS支持分布式计算,允许多个节点(程序)在不同的计算机上运行,并通过ROS通信机制进行交互。这种分布式架构使得ROS非常适合于构建复杂的机器人系统。
软件包管理:ROS使用软件包管理系统来组织和分享代码。开发人员可以创建、安装和共享ROS软件包,以便在不同的项目中重用代码和功能。ROS社区提供了大量的开源软件包,涵盖了各种机器人应用领域。
消息传递:ROS使用基于发布-订阅模式的消息传递机制,允许不同的节点之间通过发布和订阅消息进行通信。节点可以发布消息到特定的主题(Topic),并可以订阅感兴趣的主题来接收消息。这种松耦合的通信方式使得节点之间的通信更灵活和可扩展。
服务和动作:除了消息传递,ROS还提供了服务(Service)和动作(Action)机制,允许节点提供和调用服务以及执行复杂的动作序列。服务和动作允许节点之间进行请求-响应和执行-反馈的交互。
工具支持:ROS提供了一系列的工具来辅助开发和调试机器人应用程序。这些工具包括命令行工具(如roscd、rosls、rosrun等)、可视化工具(如rviz、rqt等)以及调试工具(如rosbag、rqt_console等)。
ROS具有广泛的应用领域,包括工业机器人、服务机器人、自主驾驶车辆、无人机等。它被广泛使用于机器人研究、教育和工业应用中。ROS的开源性质和活跃的社区使得开发人员能够共享经验、解决问题和推动ROS的不断发展和改进。
本文主要研究基于ros的vscode开发。
Part2插件安装
安装ROS、catkin_tool两个插件
Part3创建目录
mkdir -p ros_test/src
cd ros_test/
catkin_make
之后整个ros目录就会创建完成
Part4创建功能包
1步骤一:ctrl+shift+p
输入roshello
2步骤二:添加依赖包
这里在步骤一之后,的页面输入下面的依赖包
roscpp rospy
3步骤三:添加roshello
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char** argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
ros::Rate loop_rate(10);
int count = 0;
while(ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
count++;
}
return 0;
}
4步骤五:配置CMakeLists
需要修改地方,其他保持默认
include_directories(
include
${catkin_INCLUDE_DIRS}
)
add_executable(${PROJECT_NAME}_node src/roshello_node.cpp)
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
5步骤六:编译
按住Ctrl+Shift+B编译该程序,就可以看到与catkin_make一样的编译过程
6步骤七:调试节点
添加launch.json文件 需要将program里面需要调试的包进行修改 这里只需要将program修改为自己的节点名称
{
"version": "0.2.0",
"configurations": [
{
"name": "ROS: Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/devel/lib/roshello/roshello_node",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"preLaunchTask": "build",
"postDebugTask": "clean"
}
]
}
配置调试任务tasks.json 这里需要在args中将roshello修改为之前创建的包名称,其他保持默认
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "catkin_make",
"args": [
"--pkg",
"roshello",
"--cmake-args",
"-DCMAKE_BUILD_TYPE=Debug"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": "$catkin-gcc",
"presentation": {
"reveal": "silent",
"panel": "shared"
}
},
{
"label": "clean",
"type": "shell",
"command": "catkin clean -y",
"presentation": {
"reveal": "silent",
"panel": "shared"
}
}
]
}
另外,还需要增加一下环境变量,命令如下,这样才可以编译通过 追加环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
7vscode进行调试
运行rosmaster
roscore
订阅节点
rostopic echo /chatter
之后F5调试即可
Part5总结
本文主要记录了使用vscode进行ros开发调试的步骤。