1.å¦ä½ç¼årosçpythonç¨åº
2.创建ROS工作空间
3.ROS自定义msg类型及其使用
å¦ä½ç¼årosçpythonç¨åº
1 å 建ç«å·¥ä½ç©ºé´~/catkin_ws
ä¸çå建工ä½ç©ºé´
catkin_create_pkg basic std_msgs rospy
2 å¨å·¥ä½ç©ºé´~/catkin_wsä¸å建å pkgç®å½basic
好å¤æ¯éè¿å建å èªå¨çæpackage.xmlåCMakeLists.txt
3 å¨å·¥ç¨ç®å½ä¸å»ºä¸ä¸ªsrcåç®å½å.pyæ件
æºä»£ç æ件ï¼topic_publisher.py
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from std_msgs.msg import Int
rospy.init_node('topic_publisher')
pub = rospy.Publisher('counter', Int)
rate = rospy.Rate(2)
count = 0
while not rospy.is_shutdown():
pub.publish(count)
count += 1
rate.sleep()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
æä½æ¥éª¤å¦ä¸
liao@liao-eagle:~/catkin_ws$ ls
build devel install src
liao@liao-eagle:~/catkin_ws$ cd src
liao@liao-eagle:~/catkin_ws/src$ ls
basic beginner_tutorials CMakeLists.txt first second
liao@liao-eagle:~/catkin_ws/src$ cd basic/
liao@liao-eagle:~/catkin_ws/src/basic$ ls
CMakeLists.txt package.xml src
liao@liao-eagle:~/catkin_ws/src/basic$ cd src
liao@liao-eagle:~/catkin_ws/src/basic/src$ vi topic_publisher.py
liao@liao-eagle:~/catkin_ws/src/basic/src$ chmod +x topic_publisher.py
4 åå°~/catkin_wsç®å½ä¸ï¼ç¼è¯ç¨åº
$ cd ï½/catkin_ws
liao@liao-eagle:~/catkin_ws$ catkin_make
5 å°å½åå·¥ç¨å å ¥å°shellç¯å¢éå»
liao@liao-eagle:~/catkin_ws$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
liao@liao-eagle:~/catkin_ws$ source ~/.bashrc
6 è¿è¡ç¨åºï¼éå¼ä¸¤ä¸ªç»ç«¯ï¼
liao@liao-eagle:~/catkin_ws$ roscore
liao@liao-eagle:~/catkin_ws$ rosrun basic topic_publisher.py
7 éè¿rostopicæ¥çç¸å ³ä¿¡æ¯
liao@liao-eagle:~/catkin_ws$ rostopic list
/counter
/rosout
/rosout_agg
liao@liao-eagle:~/catkin_ws$ rostopic info /counter
Type: std_msgs/Int
Publishers:
* /topic_publisher (h/)
Subscribers: None
liao@liao-eagle:~/catkin_ws$ rostopic echo /counter
data:
---
data:
---
data:
---
data:
---
data:
---
data:
---
data:
---
data:
---
data:
---
data:
创建ROS工作空间
在Linux环境中,创建并初始化ROS(Robot Operating System)工作空间是开发ROS项目的基础。首先,通过命令mkdir -p example 创建一个名为example的工作空间文件夹,src目录用于存放源代码,其命名至关重要。工程公司网站源码
初始化工作空间是通过catkin_init_workspace完成的,它会生成CMakeLists.txt文件。接着,回到example目录并执行catkin_make,这将生成build和devel文件夹,前者存放编译中间文件,后者存放编译后的可执行文件,如devel/lib下的example_package1_node1_exe。
为了使系统能找到工作空间中的如何调试内核源码包,需要运行source devel/setup.bash来更新环境变量。你可以通过echo $ROS_PACKAGE_PATH验证更改。为了方便每次新终端启动时自动执行,可以将上述命令添加到.bashrc文件中,或者使用快捷键ctrl+H查看并编辑隐藏文件。
创建功能包的步骤包括切换到src目录,使用catkin_create_pkg创建名为package1的18公里源码功能包,它依赖roscpp、rospy和std_msgs。创建后,需要编辑CMakeLists.txt以指定编译规则,并在src文件夹中创建一个cpp文件,如talker节点代码。
修改CMakeLists.txt后,bb指标源码公式再次执行catkin_make编译,然后通过运行命令运行新生成的可执行文件,可以看到chatter话题已经成功创建并在rostopic list中显示。至此,你的ROS工作空间及消息发布节点已经建立并运行成功。
ROS自定义msg类型及其使用
创建msg消息:在test_msgs中创建msg文件夹并在其中新建一个名为Test.msg的消息类型文件。Test.msg的键盘模拟乐器 源码内容需参考std_msgs和common_msgs的基本类型。接着在package.xml中添加命令,使用message_generation生成C++或Python代码,并引入message_runtime以提供运行时支持。
修改CMakeLists.txt:调整此文件以引入依赖包如roscpp、rospy、message_generation等。添加add_message_files以指定msg文件,并在generate_messages中列出任何嵌套的消息类型,如geometry_msgs/Pose。最后,使用catkin_package设置运行时依赖。
使用自定义msg类型:在其他包中调用自定义消息类型test_msgs/Test时,需将该工作空间源代码包含至项目中,否则rosmsg和rostopic操作可能会报错。如果在test_msgs包内的节点中使用test_msgs/Test,仅需在.cpp文件中调用即可。若在其他包如test中使用,需在package.xml和CMakeLists.txt中修改,确保引入包含该消息类型的包,并在CMakeLists.txt中声明对test_msgs_gencpp的依赖,避免编译顺序问题。
总结:创建和使用ROS自定义msg类型涉及文件结构、配置和编译步骤。正确配置可以确保消息类型被其他包和节点正确识别和使用,避免编译和运行时错误。