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

ROS入门教程(一)Python实现Hello world

代码在git

link

Python实现Hello world
在ROS中编写Python程序与编写C++程序大同小异。

step1.创建工作空间
Ctrl+Alt+T打开终端分别输入:【在主目录下创建工作空间】

mkdir -p helloworld_ws/src
cd helloworld_ws
catkin_make

其中helloworld_ws为我们命名的工作空间名称,catkin_make是一个编译命令,该编译命令会帮我们创建好我们所需的文件并输出若干日志,成功结果如下:

step2.创建功能包
继续在该终端输入:【在工作空间的src文件中创建功能包】

cd src
catkin_create_pkg helloworld roscpp rospy std_msgs

其中helloworld为我们的功能包名称,roscpp 、rospy和std_msgs为添加的依赖,这些依赖是我们在ROS中运行程序最基本的一些依赖,成功结果如下:【低版本的ROS中message依赖可能为ros_msgs】

step3.编辑源文件
在功能包中新建名称为【scripts】的文件夹与【src】文件夹同级

在终端中输入:【创建源文件】

cd ~/helloworld_ws/src/helloworld/scripts
gedit  talker.py

在空白文档中输入:【Hello world!】

#!/home/lg/anaconda3/bin/python

import rospy
from std_msgs.msg import String

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rospy.init_node('talker', anonymous=True)
    rate = rospy.Rate(10) # 10hz
    while not rospy.is_shutdown():
        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass
gedit listener.py
#!/home/lg/anaconda3/bin/python


import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + 'I heard %s', data.data)

def listener():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # name are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber('chatter', String, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()

step4.编辑配置文件
打开helloworld功能包中的CMakeLists.txt【helloworld_ws/src/helloword/CMakeLists.txt】

catkin_install_python(PROGRAMS
   scripts/talker.py
   scripts/listener.py
   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )

step5.编译并执行
新打开一个输入:【启动ros核心】

roscore

重新打开一个终端输入:【在工作空间中编译并执行】

cd ~/helloworld_ws
catkin_make
source ./devel/setup.bash
rosrun helloworld talker.py

再重新打开一个终端输入:【在工作空间中编译并执行】

cd ~/helloworld_ws
catkin_make
source ./devel/setup.bash
rosrun helloworld listener.py

在这里插入图片描述


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

相关文章:

  • 【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing
  • 【MySQL】约束
  • NAT网络工作原理和NAT类型
  • vivo 游戏中心包体积优化方案与实践
  • C#文字识别API场景解析、表格识别提取
  • C++,STL 054(24.11.13)
  • 前端架构师-week3-大厂怎么做项目
  • vue dom 更新nextTick
  • restTemplate发送multipartFile和String混合参数及接收
  • 素数环PrimeRing [3*]
  • redis 基础数据结构
  • 基于多种算法实现鸢尾花聚类
  • Spark SQL实战(04)-API编程之DataFrame
  • 最新阿里、腾讯、华为、字节等大厂的薪资和职级对比,看看你差了多少...
  • 企业工程项目管理系统源码+java版本+项目模块功能清单+spring cloud +spring boot
  • 打开 plist 文件
  • 因薪资低拒绝offer,HR恼羞成怒,网友瞬间炸翻了..
  • Numpy基础用法
  • Android中的接口回调机制
  • 时光煮雨,岁月缝花
  • 两亲性聚合物Stearic acid PEG acid,STA-PEG-acid,硬脂酸聚乙二醇羧酸
  • LAMP架构的配置
  • Flink CDC 自定义反序列化
  • java 合作社交易系统Myeclipse开发mysql数据库mvc结构serlvet编程计算机网页项目
  • 多维时序 | MATLAB实现GRU门控循环单元多变量时间序列预测(多指标评价)
  • 【大数据开发运维解决方案】ssh: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b问题解决过程