【3. 初学ROS,年轻人的第一个Node节点】

简介: 【3. 初学ROS,年轻人的第一个Node节点】

1. 工作空间设置

cd catkin_ws/src/


2. 创建Package



catkin_creat_pkg ssr_pkg rospy roscpp std_msgs

1.png

2.png



3. 回访依赖包



3.png

4.png

5.png

roscd roscpp
ls
code package.xml

6.png

7.png

8.png

9.png

10.png


下载包可直接运行,源文件须编译运行


4. 创建Node节点



#include  <ros/ros.h>
int main(int argc, char const *argv[])
{
    /* code */
    return 0;
}


11.png

代码误报删除c_cpp_properties文件




5. 源码编译



#include  <ros/ros.h>
int main(int argc, char const *argv[])
{
    /* code */
    printf("HelloWorld!\n");
    return 0;
}



12.png

13.png

14.png






add_executable(chao_node src/chao_node.cpp)

ctrl+shift+b编译

15.png


6. 运行Node节点


16.png



roscore



17.png

rosrun ssr_pkg chao_node

18.png

如果报错如下操作

19.png



code ~/.bashrc

20.png



# Set ROS melodic
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

7. Node节点完善



21.png

#include  <ros/ros.h>
int main(int argc, char  *argv[])
{
    /* code */
    ros :: init ( argc, argv, "chao_node");
    printf("我是个弟弟!\n");
    return 0;
}



22.png




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

23.png

编译运行

24.png

保持运行,加while循环




#include  <ros/ros.h>
int main(int argc, char  *argv[])
{
    /* code */
    ros :: init ( argc, argv, "chao_node");
    printf("我是个弟弟!\n");
    while (true)
    {
        /* code */
        printf("我是大哥!\n");
    }
    return 0;
}

编译运行

25.png


26.png




#include  <ros/ros.h>
int main(int argc, char  *argv[])
{
    /* code */
    ros :: init ( argc, argv, "chao_node");
    printf("我是个弟弟!\n");
    while (ros::ok())
    {
        /* code */
        printf("我是大哥!\n");
    }
    return 0;
}


27.png


8. 总结

28.png

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
7月前
|
运维 Kubernetes API
解决Kubernetes集群中master节点无法与node节点通信的策略。
这些策略不仅需要执行命令来获取信息,更要深入理解集群组件如何交互,以便进行准确的故障定位与修复。一条一条地排查,并适时回顾配置文件,证书有效性等,通常可以找到问题所在。给出的命令需要根据具体环境的配置进行适当的修改。故障排除往往是一个细致且需求反复验证的过程,但遵循上述策略可以高效定位大部分通信故障的原因。
568 12
|
7月前
|
Kubernetes 网络协议 API
在k8s集群中解决master节点与node通信问题
整个排查和解决流程需要综合应用以上方法,以及根据具体情况调整排查顺序或应用其他技术细节。为保证解决方案的实用性和有效性,还需紧跟Kubernetes社区的最新动态和最佳实践。在实际操作过程中,应记录所采取的步骤和观察到的系统响应,以便在遇到类似问题时能够快速定位和解决。
528 8
|
8月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
601 1
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
11月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
912 17
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
本文介绍了Twaver HTML5中的拓扑元素(Element),包括网元(Element)、节点(Node)和连线(Link)的基本概念和使用方法。文章详细解释了Element的属性和方法,并通过示例代码展示了如何在React组件中创建节点、设置节点属性和样式。
373 1
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)

推荐镜像

更多
  • ros