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

工信部备案查询网站南宁高端网站建设

工信部备案查询网站,南宁高端网站建设,微信网站域名备案成功后怎么做,小程序服务器多少钱【置顶】感谢参考#xff1a;https://zhuanlan.zhihu.com/p/662074088 0.背景 工作一年多没有做 ROS 相关的开发了#xff0c;最近找工作想做回这一块来#xff0c;根据参考内容#xff0c;抽时间给这边的基础知识敲一遍复习一下 1.环境检查 打开了之前的笔记本#x…【置顶】感谢参考https://zhuanlan.zhihu.com/p/662074088 0.背景 工作一年多没有做 ROS 相关的开发了最近找工作想做回这一块来根据参考内容抽时间给这边的基础知识敲一遍复习一下 1.环境检查 打开了之前的笔记本Ubuntu 系统及 ros 环境都还在这边就不做环境配置了 运行一下小乌龟检查一下环境 启动 roscore roscore ... logging to /home/livvedia/.ros/log/a62ba306-8050-11ee-98d2-d07e354f2c70/roslaunch-livvedia-7447-4219.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is 1GB.started roslaunch server http://livvedia-7447:35877/ ros_comm version 1.14.11SUMMARY PARAMETERS* /rosdistro: melodic* /rosversion: 1.14.11NODESauto-starting new master process[master]: started with pid [4229] ROS_MASTER_URIhttp://livvedia-7447:11311/setting /run_id to a62ba306-8050-11ee-98d2-d07e354f2c70 process[rosout-1]: started with pid [4242] started core service [/rosout]另一个窗口启动小乌龟图像界面节点 rosrun turtlesim turtlesim_node [ INFO] [1699679624.841384968]: Starting turtlesim with node name /turtlesim [ INFO] [1699679624.854296725]: Spawning turtle [turtle1] at x[5.544445], y[5.544445], theta[0.000000]再一个窗口启动小乌龟运动控制节点 rosrun turtlesim turtle_teleop_key Reading from keyboard --------------------------- Use arrow keys to move the turtle. q to quit.使用方向键进行控制上下键用于前进后退左右键用于转向。 1.常用命令 1.1 rqt_graph 查看节点之间的联系 节点 teleop_turtle 发布话题 turtle1/cmd_vel 节点 turtlesim 订阅话题 turtle1/cmd_vel 1.2 rqt_plot 图形化显示话题传输的数据 话题 turtle1/pose 下传输的数据有 turtle1/pose/x 小乌龟在画面中x坐标 turtle1/pose/y 小乌龟在画面中y坐标 turtle1/pose/theta 小乌龟朝向角 turtle1/pose/linear_velocity 线速度 turtle1/pose/angular_velocity 角速度 1.3 rosnode rosnode list 显示当前运行的所有节点信息 rosnode list /rosout /teleop_turtle /turtlesimrosnode info /turtlesim 输出turtlesim节点的信息。 rosnode info /turtlesim -------------------------------------------------------------------------------- Node [/turtlesim] Publications: * /rosout [rosgraph_msgs/Log]* /turtle1/color_sensor [turtlesim/Color]* /turtle1/pose [turtlesim/Pose]Subscriptions: * /turtle1/cmd_vel [geometry_msgs/Twist]Services: * /clear* /kill* /reset* /spawn* /turtle1/set_pen* /turtle1/teleport_absolute* /turtle1/teleport_relative* /turtlesim/get_loggers* /turtlesim/set_logger_levelcontacting node http://livvedia-7447:37143/ ... Pid: 4691 Connections:* topic: /rosout* to: /rosout* direction: outbound (44969 - 127.0.0.1:43780) [26]* transport: TCPROS* topic: /turtle1/cmd_vel* to: /teleop_turtle (http://livvedia-7447:45971/)* direction: inbound (41294 - livvedia-7447:55953) [28]* transport: TCPROS列出来这个节点发布了哪些话题订阅了哪些话题提供了哪些服务还有当前的一些连接状态等信息 rosnode ping /turtlesim 测试节点连接 状态 rosnode ping /turtlesim rosnode: node is [/turtlesim] pinging /turtlesim with a timeout of 3.0s xmlrpc reply from http://livvedia-7447:37143/ time0.617981ms xmlrpc reply from http://livvedia-7447:37143/ time0.539064ms xmlrpc reply from http://livvedia-7447:37143/ time0.504971ms xmlrpc reply from http://livvedia-7447:37143/ time0.994921ms xmlrpc reply from http://livvedia-7447:37143/ time0.548124ms xmlrpc reply from http://livvedia-7447:37143/ time0.585079ms xmlrpc reply from http://livvedia-7447:37143/ time0.546932ms xmlrpc reply from http://livvedia-7447:37143/ time0.474930msrosnode machine 列出所有 ros 设备主从式分布的时候会显示多个设备 rosnode machine livvedia-7447当前只有一台设备设备名为 livvedia-7447 哈哈哈我8年前的笔记本 rosnode machine 设备名 查看指定设备上的运行节点 rosnode machine livvedia-7447 /rosout /teleop_turtle /turtlesimrosnode kill /turtlesim 杀死节点 turtlesimrosnode cleanup /turtlesim 清空节点 turtlesim 1.4 rostopic rostopic list 列出所有在使用的话题 rostopic list /rosout /rosout_agg /turtle1/cmd_vel /turtle1/color_sensor /turtle1/poserostopic info /turtle1/cmd_vel 查看话题信息 rostopic info /turtle1/cmd_vel Type: geometry_msgs/TwistPublishers: * /teleop_turtle (http://livvedia-7447:45971/)Subscribers: * /turtlesim (http://livvedia-7447:37143/)rostopic echo /turtle1/cmd_vel 查看话题具体内容 rostopic echo /turtle1/cmd_vel linear: x: 2.0y: 0.0z: 0.0 angular: x: 0.0y: 0.0z: 0.0 --- linear: x: 0.0y: 0.0z: 0.0 angular: x: 0.0y: 0.0z: -2.0 ---rostopic pub 话题名 消息类型 消息值 手动发布一个话题消息 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist linear:x: 1.0y: 1.0z: 0.0 angular:x: 0.0y: 0.0z: 1.0publishing and latching message. Press ctrl-C to terminate可以添加参数 -r 来控制发布的频率如 -r 1 表示 1 s 发送一次 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 linear:x: 1.0y: 1.0z: 0.0 angular:x: 0.0y: 0.0z: 1.0执行上述发布命令后小乌龟会自动画圆 1.5 rosservice rosservice list 列出所有服务 rosservice list /clear /kill /reset /rosout/get_loggers /rosout/set_logger_level /spawn /teleop_turtle/get_loggers /teleop_turtle/set_logger_level /turtle1/set_pen /turtle1/teleport_absolute /turtle1/teleport_relative /turtlesim/get_loggers /turtlesim/set_logger_levelrosservice info /spawn 查看服务 spawn 详细信息 rosservice info /spawn Node: /turtlesim URI: rosrpc://livvedia-7447:42833 Type: turtlesim/Spawn Args: x y theta namerosservice call /spawn Args… 手动调用服务 spawn 生成小乌龟 rosservice call /spawn x: 10.0 y: 10.0 theta: 0.0 name: turtle2右上角生成了个新乌龟 turtle2 注意输入命令时要在如x:后加空格否则会报错。上面的name可以用单引号也可以用双引号。 1.6 rosmsg rosmsg show geometry_msgs/Twist 查看消息 geometry_msgs/Twist 具体定义 rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 z geometry_msgs/Vector3 angularfloat64 xfloat64 yfloat64 zrosmsg packages 列出包含消息的所有包 rosmsg packages actionlib actionlib_msgs actionlib_tutorials base_local_planner bond cartographer_ros_msgs control_msgs controller_manager_msgs costmap_2d diagnostic_msgs dynamic_reconfigure farryn_controller gazebo_msgs gazebo_video_monitor_msgs1.7 rosparam rosparam list 列出所有参数 rosparam list /rosdistro /roslaunch/uris/host_livvedia_7447__35877 /rosversion /run_id /turtlesim/background_b /turtlesim/background_g /turtlesim/background_rrosparam get /turtlesim/background_r 获取参数 /turtlesim/background_r 的值rosparam set /turtlesim/background_r 100 将参数 /turtlesim/background_r 设置为 255重新启动 turtlesim 节点就好发现背景颜色发生了改变 2.话题通信实现topic 工作空间准备 mkdir -r ros_review/src/communication cd ros_review/src catkin_init_workspace Creating symlink /home/livvedia/ros_review/src/CMakeLists.txt pointing to /opt/ros/melodic/share/catkin/cmake/toplevel.cmake~/ros_review$ tree . └── src├── CMakeLists.txt - /opt/ros/melodic/share/catkin/cmake/toplevel.cmake└── communication 自动生成了个 CMakeLists.txt 文件软链接到 ros 安装目录下的一个 cmake 文件 编译工作空间 catkin_make Base path: /home/livvedia/ros_review Source space: /home/livvedia/ros_review/src Build space: /home/livvedia/ros_review/build Devel space: /home/livvedia/ros_review/devel Install space: /home/livvedia/ros_review/install #### #### Running command: cmake /home/livvedia/ros_review/src -DCATKIN_DEVEL_PREFIX/home/livvedia/ros_review/devel -DCMAKE_INSTALL_PREFIX/home/livvedia/ros_review/install -G Unix Makefiles in /home/livvedia/ros_review/build #### -- The C compiler identification is GNU 7.5.0 -- The CXX compiler identification is GNU 7.5.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c -- Check for working CXX compiler: /usr/bin/c -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using CATKIN_DEVEL_PREFIX: /home/livvedia/ros_review/devel -- Using CMAKE_PREFIX_PATH: /home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- This workspace overlays: /home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version 2.7.17, minimum required is 2) -- Using PYTHON_EXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/livvedia/ros_review/build/test_results -- Found gtest sources under /usr/src/googletest: gtests will be built -- Found gmock sources under /usr/src/googletest: gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version 2.7.17) -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- Configuring done -- Generating done -- Build files have been written to: /home/livvedia/ros_review/build #### #### Running command: make -j4 -l4 in /home/livvedia/ros_review/build ####检查编译后的文件目录 tree . ├── build │ ├── atomic_configure │ │ ├── env.sh │ │ ├── local_setup.bash │ │ ├── local_setup.sh │ │ ├── local_setup.zsh │ │ ├── setup.bash │ │ ├── setup.sh │ │ ├── _setup_util.py │ │ └── setup.zsh │ ├── catkin │ │ └── catkin_generated │ │ └── version │ │ └── package.cmake │ ├── catkin_generated │ │ ├── env_cached.sh │ │ ├── generate_cached_setup.py │ │ ├── installspace │ │ │ ├── env.sh │ │ │ ├── local_setup.bash │ │ │ ├── local_setup.sh │ │ │ ├── local_setup.zsh │ │ │ ├── setup.bash │ │ │ ├── setup.sh │ │ │ ├── _setup_util.py │ │ │ └── setup.zsh │ │ ├── order_packages.cmake │ │ ├── order_packages.py │ │ ├── setup_cached.sh │ │ └── stamps │ │ └── Project │ │ ├── interrogate_setup_dot_py.py.stamp │ │ ├── order_packages.cmake.em.stamp │ │ ├── package.xml.stamp │ │ └── _setup_util.py.stamp │ ├── CATKIN_IGNORE │ ├── catkin_make.cache │ ├── CMakeCache.txt │ ├── CMakeFiles │ │ ├── 3.10.2 │ │ │ ├── CMakeCCompiler.cmake │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ ├── CMakeSystem.cmake │ │ │ ├── CompilerIdC │ │ │ │ ├── a.out │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ └── tmp │ │ │ └── CompilerIdCXX │ │ │ ├── a.out │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ └── tmp │ │ ├── clean_test_results.dir │ │ │ ├── build.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── DependInfo.cmake │ │ │ └── progress.make │ │ ├── cmake.check_cache │ │ ├── CMakeDirectoryInformation.cmake │ │ ├── CMakeError.log │ │ ├── CMakeOutput.log │ │ ├── CMakeRuleHashes.txt │ │ ├── CMakeTmp │ │ ├── download_extra_data.dir │ │ │ ├── build.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── DependInfo.cmake │ │ │ └── progress.make │ │ ├── doxygen.dir │ │ │ ├── build.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── DependInfo.cmake │ │ │ └── progress.make │ │ ├── feature_tests.bin │ │ ├── feature_tests.c │ │ ├── feature_tests.cxx │ │ ├── Makefile2 │ │ ├── Makefile.cmake │ │ ├── progress.marks │ │ ├── run_tests.dir │ │ │ ├── build.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── DependInfo.cmake │ │ │ └── progress.make │ │ ├── TargetDirectories.txt │ │ └── tests.dir │ │ ├── build.make │ │ ├── cmake_clean.cmake │ │ ├── DependInfo.cmake │ │ └── progress.make │ ├── cmake_install.cmake │ ├── CTestConfiguration.ini │ ├── CTestCustom.cmake │ ├── CTestTestfile.cmake │ ├── gtest │ │ ├── CMakeFiles │ │ │ ├── CMakeDirectoryInformation.cmake │ │ │ └── progress.marks │ │ ├── cmake_install.cmake │ │ ├── CTestTestfile.cmake │ │ ├── googlemock │ │ │ ├── CMakeFiles │ │ │ │ ├── CMakeDirectoryInformation.cmake │ │ │ │ ├── gmock.dir │ │ │ │ │ ├── __ │ │ │ │ │ │ └── googletest │ │ │ │ │ │ └── src │ │ │ │ │ ├── build.make │ │ │ │ │ ├── cmake_clean.cmake │ │ │ │ │ ├── DependInfo.cmake │ │ │ │ │ ├── depend.make │ │ │ │ │ ├── flags.make │ │ │ │ │ ├── link.txt │ │ │ │ │ ├── progress.make │ │ │ │ │ └── src │ │ │ │ ├── gmock_main.dir │ │ │ │ │ ├── __ │ │ │ │ │ │ └── googletest │ │ │ │ │ │ └── src │ │ │ │ │ ├── build.make │ │ │ │ │ ├── cmake_clean.cmake │ │ │ │ │ ├── DependInfo.cmake │ │ │ │ │ ├── depend.make │ │ │ │ │ ├── flags.make │ │ │ │ │ ├── link.txt │ │ │ │ │ ├── progress.make │ │ │ │ │ └── src │ │ │ │ └── progress.marks │ │ │ ├── cmake_install.cmake │ │ │ ├── CTestTestfile.cmake │ │ │ ├── gtest │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── CMakeDirectoryInformation.cmake │ │ │ │ │ ├── gtest.dir │ │ │ │ │ │ ├── build.make │ │ │ │ │ │ ├── cmake_clean.cmake │ │ │ │ │ │ ├── DependInfo.cmake │ │ │ │ │ │ ├── depend.make │ │ │ │ │ │ ├── flags.make │ │ │ │ │ │ ├── link.txt │ │ │ │ │ │ ├── progress.make │ │ │ │ │ │ └── src │ │ │ │ │ ├── gtest_main.dir │ │ │ │ │ │ ├── build.make │ │ │ │ │ │ ├── cmake_clean.cmake │ │ │ │ │ │ ├── DependInfo.cmake │ │ │ │ │ │ ├── depend.make │ │ │ │ │ │ ├── flags.make │ │ │ │ │ │ ├── link.txt │ │ │ │ │ │ ├── progress.make │ │ │ │ │ │ └── src │ │ │ │ │ └── progress.marks │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── CTestTestfile.cmake │ │ │ │ └── Makefile │ │ │ └── Makefile │ │ └── Makefile │ ├── Makefile │ └── test_results ├── devel │ ├── cmake.lock │ ├── env.sh │ ├── lib │ ├── local_setup.bash │ ├── local_setup.sh │ ├── local_setup.zsh │ ├── setup.bash │ ├── setup.sh │ ├── _setup_util.py │ └── setup.zsh └── src├── CMakeLists.txt - /opt/ros/melodic/share/catkin/cmake/toplevel.cmake└── communication46 directories, 128 files编译后出现了 build 和 devel 目录 build编译空间用来存储工作空间编译过程中产生的中间文件文件夹里面还有 gtest 这是之前没注意到的 devel开发空间用来保存编译生成的可执行文件 需要将 devel/setup.bash 添加到环境变量中才能在终端中找到这个工作空间中的功能包 两种方式 1在终端中 source 一下这个文件 source ~/ros_review/devel/setup.bash只对当前终端生效每次新打开终端的时候都要运行一下 2将 source ~/ros_review/devel/setup.bash 其添加到 bashrc 文件中 创建功能包 ~/ros_review/src$ catkin_create_pkg communication_basic std_msg roscpp rospy Created file communication_basic/package.xml Created file communication_basic/CMakeLists.txt Created folder communication_basic/include/communication_basic Created folder communication_basic/src Successfully created files in /home/livvedia/ros_review/src/communication_basic. Please adjust the values in package.xml.~/ros_review/src$ tree . ├── CMakeLists.txt - /opt/ros/melodic/share/catkin/cmake/toplevel.cmake └── communication_basic├── CMakeLists.txt├── include│ └── communication_basic├── package.xml└── src创建消息类型 test.msg 位于新建文件夹 msg 内内容如下 cat msg/test_msg.msg string name int32 age int64 score修改 package.xml 中的内容 1 ?xml version1.0?2 package format23 namecommunication_basic/name4 version0.0.0/version5 descriptionThe communication_basic package/description6 7 !-- One maintainer tag required, multiple allowed, one person per tag --8 !-- Example: --9 !-- maintainer emailjane.doeexample.comJane Doe/maintainer --10 maintainer emaillivvediatodo.todolivvedia/maintainer11 12 13 !-- One license tag required, multiple allowed, one license per tag --14 !-- Commonly used license strings: --15 !-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 --16 licenseTODO/license17 18 19 !-- Url tags are optional, but multiple are allowed, one per tag --20 !-- Optional attribute type can be: website, bugtracker, or repository --21 !-- Example: --22 !-- url typewebsitehttp://wiki.ros.org/communication_basic/url --23 24 25 !-- Author tags are optional, multiple are allowed, one per tag --26 !-- Authors do not have to be maintainers, but could be --27 !-- Example: --28 !-- author emailjane.doeexample.comJane Doe/author --29 30 31 !-- The *depend tags are used to specify dependencies --32 !-- Dependencies can be catkin packages or system dependencies --33 !-- Examples: --34 !-- Use depend as a shortcut for packages that are both build and exec dependencies --35 !-- dependroscpp/depend --36 !-- Note that this is equivalent to the following: --37 !-- build_dependroscpp/build_depend --38 !-- exec_dependroscpp/exec_depend --39 !-- Use build_depend for packages you need at compile time: --40 build_dependmessage_generation/build_depend41 !-- Use build_export_depend for packages you need in order to build against this package: --42 !-- build_export_dependmessage_generation/build_export_depend --43 !-- Use buildtool_depend for build tool packages: --44 !-- buildtool_dependcatkin/buildtool_depend --45 !-- Use exec_depend for packages you need at runtime: --46 exec_dependmessage_runtime/exec_depend47 !-- Use test_depend for packages you need only for testing: --48 !-- test_dependgtest/test_depend --49 !-- Use doc_depend for packages you need only for building documentation: --50 !-- doc_dependdoxygen/doc_depend --51 buildtool_dependcatkin/buildtool_depend52 build_dependroscpp/build_depend53 build_dependrospy/build_depend54 build_dependstd_msg/build_depend55 build_export_dependroscpp/build_export_depend56 build_export_dependrospy/build_export_depend57 build_export_dependstd_msg/build_export_depend58 exec_dependroscpp/exec_depend59 exec_dependrospy/exec_depend60 exec_dependstd_msg/exec_depend61 62 63 !-- The export tag contains other, unspecified, tags --64 export65 !-- Other tools can request additional information be placed here --66 67 /export68 /package将第 40 行 和第 46 行注释去掉 build_dependxxx/build_depend 标签定义了功能包中代码编译时所依赖的其他功能包 exec_dependxxxx/exec_depend 标签定义了功能包中可执行程序运行时所依赖的其他功能包 修改CMakeLists.txt 文件 (1) find_package() 中加入 message_generation find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgmessage_generation )(2)设置运行依赖 catkin_package() 中解除注释并添加 message_runtime catkin_package( # INCLUDE_DIRS include # LIBRARIES communication_basicCATKIN_DEPENDS roscpp rospy std_msg message_runtime # DEPENDS system_lib )(3)加入新的消息类型 add_message_files(FILEStest_msg.msg)(4)添加生成消息 generate_messages(DEPENDENCIESstd_msgs # Or other packages containing msgs)(4)编译 ~/ros_review$ catkin_make Base path: /home/livvedia/ros_review Source space: /home/livvedia/ros_review/src Build space: /home/livvedia/ros_review/build Devel space: /home/livvedia/ros_review/devel Install space: /home/livvedia/ros_review/install #### #### Running command: make cmake_check_build_system in /home/livvedia/ros_review/build #### -- Using CATKIN_DEVEL_PREFIX: /home/livvedia/ros_review/devel -- Using CMAKE_PREFIX_PATH: /home/livvedia/ros_review/devel;/home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- This workspace overlays: /home/livvedia/ros_review/devel;/home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version 2.7.17, minimum required is 2) -- Using PYTHON_EXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/livvedia/ros_review/build/test_results -- Found gtest sources under /usr/src/googletest: gtests will be built -- Found gmock sources under /usr/src/googletest: gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version 2.7.17) -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 1 packages in topological order: -- ~~ - communication_basic -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- processing catkin package: communication_basic -- add_subdirectory(communication_basic) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- communication_basic: 1 messages, 0 services -- Configuring done -- Generating done -- Build files have been written to: /home/livvedia/ros_review/build #### #### Running command: make -j4 -l4 in /home/livvedia/ros_review/build #### Scanning dependencies of target _communication_basic_generate_messages_check_deps_test_msg [ 0%] Built target std_msgs_generate_messages_py [ 0%] Built target std_msgs_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_cpp [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_eus [ 0%] Built target _communication_basic_generate_messages_check_deps_test_msg [ 28%] Generating Python from MSG communication_basic/test_msg [ 28%] Generating Javascript code from communication_basic/test_msg.msg [ 42%] Generating C code from communication_basic/test_msg.msg [ 57%] Generating Lisp code from communication_basic/test_msg.msg [ 57%] Built target communication_basic_generate_messages_nodejs [ 71%] Generating EusLisp code from communication_basic/test_msg.msg [ 71%] Built target communication_basic_generate_messages_lisp [ 85%] Built target communication_basic_generate_messages_eus [100%] Generating Python msg __init__.py for communication_basic [100%] Built target communication_basic_generate_messages_cpp [100%] Built target communication_basic_generate_messages_py [100%] Built target communication_basic_generate_messages编译后自动生成了 test_msg.h (devel/include/communication_basic 文件夹中 使用 rosmsg show 可以查看新增的 msg 类型 ~/ros_review$ rosmsg show communication_basic/test_msg string name int32 age int64 score编写发布者节点 src/publish_test.cpp 内容如下 //发布话题 Test_msg //消息类型为communication_basic::test_msg #include ros/ros.h #includecommunication_basic/test_msg.hint main(int argc,char **argv)//argc和argv都是输入参数 {//初始化节点ros::init(argc,argv,test_publisher);//创建句柄-管理节点资源ros::NodeHandle n;//创建一个Publisher发布名为 Test_msg消息类型是 communication_basic::test_msg队列长度为10ros::Publisher test_publisher n.advertisecommunication_basic::test_msg(Test_msg,10);//循环频率ros::Rate loop_rate(10);std::string name(tom);int age 18;int score 0;//roscpp会默认安装以SIGINT句柄这句话就是用来处理由ctrlc键盘操作、该节点被另一同名节点踢出ROS网络、ros::shutdown()被程序在某个地方调用、所有ros::NodeHandle句柄都被销毁等触发而使ros::ok()返回false值的情况while (ros::ok()){//初始化消息communication_basic::test_msg test_msg;test_msg.name name;test_msg.ageage;test_msg.scorescore;//发布消息test_publisher.publish(test_msg);ROS_INFO(Publish test msg :[name:%s ,age:%d, score:%d],test_msg.name.c_str(),test_msg.age,test_msg.score);//设置循环频率loop_rate.sleep();}return 0; }编写订阅者节点 src/subscriber.cpp 内容如下 #include ros/ros.h #includecommunication_basic/test_msg.hvoid TestCallback(const communication_basic::test_msg test_msg){ROS_INFO( name:[%s]\n, test_msg.name.c_str());ROS_INFO( age:[%d]\n, test_msg.age);ROS_INFO( score:[%d]\n, test_msg.score); }int main(int argc, char** argv){ros::init(argc, argv,test_subscriber);ros::NodeHandle n;ros::Subscriber sub n.subscribe( Test_msg, 1000, TestCallback);ros::spin();return 0; }添加目标节点到 CMakeList.txt 文件中 # 第一个参数是生成后的可执行文件名 第二个参数是源文件路径名 add_executable(test_publisher src/publisher.cpp)# 链接库 target_link_libraries(test_publisher ${catkin_LIBRARIES})add_executable(test_subscriber src/subscriber.cpp) target_link_libraries(test_subscriber ${catkin_LIBRARIES})编译节点 ~/ros_review$ catkin_make Base path: /home/livvedia/ros_review Source space: /home/livvedia/ros_review/src Build space: /home/livvedia/ros_review/build Devel space: /home/livvedia/ros_review/devel Install space: /home/livvedia/ros_review/install #### #### Running command: make cmake_check_build_system in /home/livvedia/ros_review/build #### -- Using CATKIN_DEVEL_PREFIX: /home/livvedia/ros_review/devel -- Using CMAKE_PREFIX_PATH: /home/livvedia/ros_review/devel;/home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- This workspace overlays: /home/livvedia/ros_review/devel;/home/livvedia/car_arm_ws/devel;/home/livvedia/ARM/devel;/home/livvedia/wpr1/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version 2.7.17, minimum required is 2) -- Using PYTHON_EXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/livvedia/ros_review/build/test_results -- Found gtest sources under /usr/src/googletest: gtests will be built -- Found gmock sources under /usr/src/googletest: gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version 2.7.17) -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 1 packages in topological order: -- ~~ - communication_basic -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- processing catkin package: communication_basic -- add_subdirectory(communication_basic) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- communication_basic: 1 messages, 0 services -- Configuring done -- Generating done -- Build files have been written to: /home/livvedia/ros_review/build #### #### Running command: make -j4 -l4 in /home/livvedia/ros_review/build #### [ 0%] Built target std_msgs_generate_messages_cpp [ 9%] Linking CXX executable /home/livvedia/ros_review/devel/lib/communication_basic/test_subscriber [ 18%] Linking CXX executable /home/livvedia/ros_review/devel/lib/communication_basic/test_publisher [ 18%] Built target _communication_basic_generate_messages_check_deps_test_msg [ 18%] Built target std_msgs_generate_messages_nodejs [ 18%] Built target std_msgs_generate_messages_lisp [ 18%] Built target std_msgs_generate_messages_py [ 18%] Built target std_msgs_generate_messages_eus [ 27%] Built target communication_basic_generate_messages_cpp [ 45%] Built target communication_basic_generate_messages_py [ 54%] Built target communication_basic_generate_messages_nodejs [ 63%] Built target communication_basic_generate_messages_lisp [ 81%] Built target communication_basic_generate_messages_eus [ 81%] Built target communication_basic_generate_messages [ 90%] Built target test_subscriber [100%] Built target test_publisher运行测试 三个终端界面 roscorerosrun communication_basic test_publisherrosrun communication_basic te_subscriber结果如图 3. 服务通信实现service 新建服务消息 ~/ros_review$ cat src/communication_basic/srv/add.srv string str1 string str2 int64 a int64 b --- string str_sum修改 CMakeList.txt add_service_files(FILESadd.srv )add_executable(add_server src/add_server.cpp) target_link_libraries(add_server ${catkin_LIBRARIES})add_executable(add_client src/add_client.cpp) target_link_libraries(add_client ${catkin_LIBRARIES})编写测试程序 src/add_server.cpp #include ros/ros.h #include communication_basic/add.h// service 回调函数 形参数据类型是固定的用引用 bool add( communication_basic::add::Request req, communication_basic::add::Response resp){resp.str_sum req.str1req.str2;resp.sum req.areq.b;ROS_INFO(request: a%d, b%d, str1%s, str2%s, req.a,req.b,req.str1.c_str(),req.str2.c_str());ROS_INFO(sending back response: sum%d, str_sum%s, resp.sum, resp.str_sum.c_str());return true; }int main(int argc, char**argv){// ROS 节点初始化ros::init(argc,argv,add_server);// 创建节点句柄ros::NodeHandle n;// 创建一个名为 add 的 server 注册回调函数 add()ros::ServiceServer service n.advertiseService(add, add);// 循环等待回调函数ROS_INFO(add server is ok);ros::spin();return 0; }src/add_client.cpp #include ros/ros.h #include communication_basic/add.hint main(int argc,char** argv){// 从终端获取两个数字和两个字符串if(argc ! 5){ROS_INFO(usage: please input 4 params(2 number 2 string), params size is:%d,argc);return 1;}//ROS 节点初始化ros::init(argc,argv,add_client);// 创建节点句柄ros::NodeHandle n;// 创建一个 client 请求 add serverros::ServiceClient client n.serviceClientcommunication_basic::add(add);// 创建消息communication_basic::add test_msg;test_msg.request.aatoll(argv[1]);test_msg.request.batoll(argv[2]);test_msg.request.str1argv[3];test_msg.request.str2argv[4];// 发布 service 请求等待加法运算的返回结果if(client.call(test_msg)){ROS_INFO(response: sum is:%d, sum_str is:%s, test_msg.response.sum, test_msg.response.str_sum.c_str());} else{ROS_ERROR(Failed to call service add);return 1;}return 0; }编译代码 ~/ros_review$ catkin_make Base path: /home/livvedia/ros_review Source space: /home/livvedia/ros_review/src Build space: /home/livvedia/ros_review/build Devel space: /home/livvedia/ros_review/devel Install space: /home/livvedia/ros_review/install #### #### Running command: make cmake_check_build_system in /home/livvedia/ros_review/build #### #### #### Running command: make -j4 -l4 in /home/livvedia/ros_review/build #### [ 0%] Built target std_msgs_generate_messages_py [ 0%] Built target _communication_basic_generate_messages_check_deps_add [ 0%] Built target std_msgs_generate_messages_cpp [ 0%] Built target _communication_basic_generate_messages_check_deps_test_msg [ 0%] Built target std_msgs_generate_messages_eus [ 0%] Built target std_msgs_generate_messages_lisp [ 9%] Built target test_publisher [ 19%] Built target test_subscriber Scanning dependencies of target add_client Scanning dependencies of target add_server [ 23%] Building CXX object communication_basic/CMakeFiles/add_client.dir/src/add_client.cpp.o [ 28%] Building CXX object communication_basic/CMakeFiles/add_server.dir/src/add_server.cpp.o [ 47%] Built target communication_basic_generate_messages_py [ 57%] Built target communication_basic_generate_messages_cpp [ 57%] Built target std_msgs_generate_messages_nodejs [ 71%] Built target communication_basic_generate_messages_eus [ 80%] Built target communication_basic_generate_messages_nodejs [ 90%] Built target communication_basic_generate_messages_lisp [ 90%] Built target communication_basic_generate_messages In file included from /opt/ros/melodic/include/ros/ros.h:40:0,from /home/livvedia/ros_review/src/communication_basic/src/add_server.cpp:1: /home/livvedia/ros_review/src/communication_basic/src/add_server.cpp: In function ‘bool add(communication_basic::add::Request, communication_basic::add::Response)’: /opt/ros/melodic/include/ros/console.h:348:176: warning: format ‘%d’ expects argument of type ‘int’, but argument 8 has type ‘communication_basic::addRequest_std::allocatorvoid ::_a_type {aka long int}’ [-Wformat]location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__)^ /opt/ros/melodic/include/ros/console.h:351:5: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER’ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(NULL, __VA_ARGS__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:387:7: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION’ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:572:35: note: in expansion of macro ‘ROS_LOG_COND’#define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__)^~~~~~~~~~~~ /opt/ros/melodic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’#define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)^~~~~~~ /home/livvedia/ros_review/src/communication_basic/src/add_server.cpp:9:5: note: in expansion of macro ‘ROS_INFO’ROS_INFO(request: a%d, b%d, str1%s, str2%s, req.a,req.b,req.str1.c_str(),req.str2.c_str());^~~~~~~~ /opt/ros/melodic/include/ros/console.h:348:176: warning: format ‘%d’ expects argument of type ‘int’, but argument 9 has type ‘communication_basic::addRequest_std::allocatorvoid ::_b_type {aka long int}’ [-Wformat]location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__)^ /opt/ros/melodic/include/ros/console.h:351:5: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER’ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(NULL, __VA_ARGS__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:387:7: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION’ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:572:35: note: in expansion of macro ‘ROS_LOG_COND’#define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__)^~~~~~~~~~~~ /opt/ros/melodic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’#define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)^~~~~~~ /home/livvedia/ros_review/src/communication_basic/src/add_server.cpp:9:5: note: in expansion of macro ‘ROS_INFO’ROS_INFO(request: a%d, b%d, str1%s, str2%s, req.a,req.b,req.str1.c_str(),req.str2.c_str());^~~~~~~~ /opt/ros/melodic/include/ros/console.h:348:176: warning: format ‘%d’ expects argument of type ‘int’, but argument 8 has type ‘communication_basic::addResponse_std::allocatorvoid ::_sum_type {aka long int}’ [-Wformat]location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__)^ /opt/ros/melodic/include/ros/console.h:351:5: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER’ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(NULL, __VA_ARGS__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:387:7: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION’ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:572:35: note: in expansion of macro ‘ROS_LOG_COND’#define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__)^~~~~~~~~~~~ /opt/ros/melodic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’#define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)^~~~~~~ /home/livvedia/ros_review/src/communication_basic/src/add_server.cpp:10:5: note: in expansion of macro ‘ROS_INFO’ROS_INFO(sending back response: sum%d, str_sum%s, resp.sum, resp.str_sum.c_str());^~~~~~~~ In file included from /opt/ros/melodic/include/ros/ros.h:40:0,from /home/livvedia/ros_review/src/communication_basic/src/add_client.cpp:1: /home/livvedia/ros_review/src/communication_basic/src/add_client.cpp: In function ‘int main(int, char**)’: /opt/ros/melodic/include/ros/console.h:348:176: warning: format ‘%d’ expects argument of type ‘int’, but argument 8 has type ‘communication_basic::addResponse_std::allocatorvoid ::_sum_type {aka long int}’ [-Wformat]::ros::console::print(filter, __rosconsole_define_location__loc.logger_, __rosconsole_define_location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__)^ /opt/ros/melodic/include/ros/console.h:351:5: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER’ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(NULL, __VA_ARGS__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:387:7: note: in expansion of macro ‘ROSCONSOLE_PRINT_AT_LOCATION’ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /opt/ros/melodic/include/ros/console.h:572:35: note: in expansion of macro ‘ROS_LOG_COND’#define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__)^~~~~~~~~~~~ /opt/ros/melodic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’#define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)^~~~~~~ /home/livvedia/ros_review/src/communication_basic/src/add_client.cpp:30:9: note: in expansion of macro ‘ROS_INFO’ROS_INFO(response: sum is:%d, sum_str is:%s, test_msg.response.sum, test_msg.response.str_sum.c_str());^~~~~~~~ [ 95%] Linking CXX executable /home/livvedia/ros_review/devel/lib/communication_basic/add_client [100%] Linking CXX executable /home/livvedia/ros_review/devel/lib/communication_basic/add_server [100%] Built target add_client [100%] Built target add_server 测试 三个终端界面 roscorerosrun communication_basic add_server [ INFO] [1699810722.572002386]: add server is ok rosrun communication_basic add_client 1 2 ab cd [ INFO] [1699810740.389112254]: response: sum is:3, sum_str is:abcd
http://wiki.neutronadmin.com/news/216304/

相关文章:

  • 北京建设银行招聘网站公司网站如何做
  • 深圳 建设银行国际互联网站国外seo
  • 网站图怎么做才能小而清晰度怎么利用网站做淘宝客
  • 百度减少大量网站收录flash网站设计概述
  • 淘宝做网站被骗做网站的公司 北京
  • 如何选择顺德网站建设2022百度seo优化工具
  • 和君设计专业网站建设公司办宽带要多少钱
  • 江门专业制作网站做网站哪种编程语言好
  • 做网站要会哪些软件太原要做网站的公司
  • 东莞常平汽车站时刻表用什么网站做问卷
  • 竞价网站推广python 网站开发书籍
  • html5手机网站织梦模板wordpress中文版 乱码
  • 做网站知识河北网站开发
  • 一级域名 二级域名 目录网站推广网站建设 $ 金手指排名效果好
  • 厦门网站建设公司电话网站商品支付怎么做
  • 网站如何做二维码网站模版建设
  • 成都网站推广营销设计h5的网站
  • 网站建设中哪些最重要性电脑搭建网站
  • 旅游门户网站源码怎么做的网站空间到期怎么办
  • 如何做网站二级域名做下载网站好不好做
  • 学佛网站开发项目需求分析wordpress免费企业模板
  • 荣耀官方网站wordpress 自适应主题
  • 免费招聘网站有哪些平台xampp部署wordpress
  • 焦作建网站科技设计网站
  • 学网站建设的工资高吗大型门户网站建设多少钱
  • 国外出名设计网站有哪些广东东莞营销
  • 百度网站优化外包惠州网站制作公司哪家好
  • w3c验证网站烈焰传奇网页版
  • 想给大学做网站网站建设改代码改哪些
  • 网站开发招聘需要揭阳网站制作服务