【ROS】ros入门21讲(上)

导语:ROS(Robot Operating System)机器人操作系统,是一个适用于机器人的开源的操作系统,它用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。


今日开启ROS学习之路。

ROS

一:安装ROS系统(linux):

我是在ubuntu16.04下安装的ROS Kinetic,安装教程可见官网: http://wiki.ros.org/kinetic/Installation/Ubuntu.

二:ROS系统是否安装成功:

检验ros是否安装成功,可输入以下命令,三个命令分别在不同的终端输入。

//1.启动ROS Master
roscore
//2.启动小海龟仿真器
rosrun turtlesim turtlesim_node
//3.启动海龟键盘控制节点
rosrun turtlesim turtle_teleop_key

三:创建工作空间与功能包:

( 开始ROS之前的配置 )

3.1 创建工作空间

mkdir  ~/catkin_ws/src
cd ~/catkin_ws/src 
cd catkin_init_workspace

编译工作空间

cd ~/catkin_ws/
catkin_make

设置环境变量

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

3.2 创建功能包(begin)

语法:catkin_create_pkg<package_name>[depend1] [depend2] [depend3]**
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp

编译功能包

cd ~/catkin_ws/
catkin_make
source ~/catkin_ws/devel/setup.bash

发布者,话题,订阅者,ROS master之间的关系

四:发布者Publisher的编程实现(C++)

4.1 如何实现一个发布者:
1.初始化ROS节点
2.向ROS master注册节点信息,包括发布的话题名和话题中的消息类型
3.创建消息数据
4.按照一定频率循环发布消息
velocity_publisher.cpp

4.2 配置发布者代码编译规则
配置CMakeLists.txt中的编译规则:在learning_topic的CMakeLists.txt 中设置需要编译的代码和生成的可执行文件,设置链接库(velocity_publisher是.cpp的文件名即节点名字,放在##Install##上面)

add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})

4.3 编译并运行发布者

cd ~/catkin_ws
catkin_make
source devel/setup.bash
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher

source devel/setup.bash 可在.bashrc中配置好,source /home/xyh/catkin_ws/devel/setup.bash,之后可不再重复执行source命令。
发布者运行后,可在海龟终端界面看到海龟按照规划速度运动,即沿着圆周运动,并且在发布终端界面可以看到发布信息。

五:订阅者Subscriber的编程实现(C++)

5.1 如何实现一个订阅者:
1.初始化ROS节点
2.订阅需要的话题
3.循环等待话题消息,接收到消息后进入回调函数
4.在回调函数中完成消息处理
pose_subscriber.cpp

5.2 配置订阅者代码编译规则
配置CMakeLists.txt中的编译规则同发布者

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

5.3 编译并运行订阅者

cd ~/catkin_ws
catkin_make
source devel/setup.bash
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic pose_subscriber

订阅者运行后,可以在终端看到海龟的x,y的位置,但位置并没有变化,然后可以通过键盘(rosrun turtlesim turtle_teleop_key)控制海龟,可在终端看到x,y的位置变化。

六:话题消息的定义与使用

在创建新的数据类型之前,应该查看是否有满足的数据类型 rosmsg
6.1 定义msg文件; .在learning topic的目录下创建文件夹msg,再创建文件Person.msg 。
Person.msg

string name
uint8 sex
uint8 age
uint8 unknown=0
uint male = 1
uint female = 2

6.2 在package.xml中添加功能包依赖

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

6.3 在CMakeLists.txt添加编译选项

find_package(... message_generation)

add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)

catkin_package(... message_runtime)

6.4 编译生成语言相关文件(catkin工作空间的根目录下编译)
6.5 写publisher和subscriber的.cpp文件,按照上面的海龟步骤进行
Person_publusher.cpp和Person_subscriber.cpp
CMakeLists.txt中编译规则分别多一步

add_dependencies(Person_publusher ${PROJECT_NAME}_generate_message_cpp)
add_dependencies(Person_subscriber ${PROJECT_NAME}_generate_message_cpp)

运行:

catkin_make
roscore
rosrun learning_topic person_subscriber
rosrun learning_topic person_publisher
<think>好的,我需要回答用户关于如何验证ROS2安装是否成功的具体方法。首先,用户提到了几个引用,我需要结合这些信息来整理答案。 根据引用[1],安装ROS2后需要配置环境,然后运行demo。这可能是一个验证步骤。引用[2]提到使用小乌龟测试ROS2是否安装成功,因为ROS2自带小乌龟节点。用户可以通过运行turtlesim包中的节点来测试。引用[3]和[4]提到了ROS1中的测试方法,比如使用rosrun和rqt_graph,但ROS2可能有所不同,需要注意区分。 首先,我需要确认ROS2的验证步骤是否包括运行小乌龟仿真。根据引用[2],输入命令`ros2 pkg executables turtlesim`可以检查是否安装了小乌龟软件包。然后运行节点,比如启动小乌龟模拟器`ros2 run turtlesim turtlesim_node`,再通过另一个终端控制小乌龟移动`ros2 run turtlesim turtle_teleop_key`,这应该能验证ROS2是否正常工作。 另外,引用[1]提到运行demo,可能是指一些基本的例子,比如发布-订阅的测试。例如,运行talker和listener节点,检查通信是否正常。此外,检查环境变量是否正确设置,使用`printenv | grep -i ROS`来确认ROS_DISTRO和ROS_VERSION是否配置正确。 需要注意的是,ROS2和ROS1的命令有所不同,比如`ros2`代替`ros`,`colcon`代替`catkin_make`等。因此,在回答中要明确区分ROS2的命令,避免混淆。同时,用户提到的引用中有一些可能涉及ROS1的内容,比如引用[3]中的`rosrun rqt_graph rqt_graph`,这在ROS2中可能需要使用`ros2 run rqt_graph rqt_graph`或者其他方式。 最后,生成相关问题时要围绕验证安装的方法,可能涉及其他测试工具或常见问题解决方法。</think>### 验证ROS2安装是否成功的具体方法 1. **基础功能测试:小乌龟仿真** - 启动小乌龟模拟器: ```bash ros2 run turtlesim turtlesim_node ``` 若成功,会弹出带有随机颜色小乌龟的图形界面[^2]。 - 控制小乌龟移动: 打开新终端,运行: ```bash ros2 run turtlesim turtle_teleop_key ``` 此时按键盘方向键可控制小乌龟移动,验证节点通信正常[^4]。 2. **节点与话题检查** - 查看当前运行的节点: ```bash ros2 node list ``` 应显示`/teleop_turtle`和`/turtlesim`节点。 - 查看活跃话题: ```bash ros2 topic list ``` 应包含`/turtle1/cmd_vel`等话题。 3. **发布-订阅测试** - 启动消息发布者(发送"Hello ROS2"): ```bash ros2 run demo_nodes_cpp talker ``` - 启动订阅者接收消息: ```bash ros2 run demo_nodes_py listener ``` 若终端显示消息交互,则基础通信功能正常[^1]。 4. **环境变量验证** 检查环境配置: ```bash printenv | grep -i ROS ``` 确认输出包含`ROS_DISTRO=humble`和`ROS_VERSION=2`[^1]。 5. **开发工具测试(可选)** 运行可视化工具: ```bash rqt ``` 若能打开图形界面,则开发工具安装成功[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值