1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

时间:2022-12-07 00:38:40

相关推荐

计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练。

这篇博文围绕windows系统展开,之前也写过一些类似的文章,为何现在又写一遍呢?

之前的方法过程繁琐,现在windows系统安装ROS简单易行,效果非常好,并且之前课程中在Linux下所有案例无需移植修改代码直接可以在windows使用!

以前Windos系统安装ROS效果是这样的:

在Windows系统安装ROS机器人操作系统

现在是这样的!!!如下图所示:

ROS 1 Melodic

ROS 2 Eloquent

ROS 2 Foxy

嗯,这只是安装过程的截图,和正常安装windows应用程序一样啦,那么使用过程还没有完善到双击图标或单击APP的那种程度,但几乎和在Linux一样简单易用。

我在ROS暑期学校直播中有两个课程分享,分别如下:

原创ROS机器人TF基础(坐标相关概念和实践)原创ROS机器人URDF建模还有一篇由于时间关系没有更新到博客中

这些课程是全云端环境的,具体如下:

一个网页学习机器人操作系统ROS2-1

一个网页学习机器人操作系统ROS2-2

一个网页学习机器人操作系统ROS2-3

一个网页学习机器人操作系统ROS2-4

现在来补充一下在windows跑这些案例的例子,就用刚才装好了ROS1Melodic和ROS2Foxy试一下。

先看一下默认包有哪些?使用ros2 pkg list

C:\ros_ws\mobot>ros2 pkg list action_msgs action_tutorials_cppaction_tutorials_interfaces action_tutorials_py actionlib_msgsament_clang_format ament_clang_tidy ament_cmake ament_cmake_auto ament_cmake_clang_formatament_cmake_clang_tidy ament_cmake_copyright ament_cmake_core ament_cmake_cppcheckament_cmake_cpplint ament_cmake_export_definitionsament_cmake_export_dependencies ament_cmake_export_include_directories ament_cmake_export_interfaces ament_cmake_export_libraries ament_cmake_export_link_flags ament_cmake_export_targets ament_cmake_flake8 ament_cmake_gmock ament_cmake_gtest ament_cmake_include_directories ament_cmake_libraries ament_cmake_lint_cmake ament_cmake_mypy ament_cmake_nose ament_cmake_pclint ament_cmake_pep257 ament_cmake_pycodestyle ament_cmake_pyflakesament_cmake_pytest ament_cmake_python ament_cmake_rosament_cmake_target_dependencies ament_cmake_test ament_cmake_uncrustify ament_cmake_version ament_cmake_xmllint ament_copyrightament_cppcheckament_cpplint ament_flake8 ament_index_cppament_index_python ament_lintament_lint_autoament_lint_cmake ament_lint_common ament_mypyament_package ament_pclint ament_pep257 ament_pycodestyle ament_pyflakesament_uncrustify ament_xmllint angles behaviortree_cpp_v3 builtin_interfaces camera_calibration_parsers camera_info_manager cartographer_ros cartographer_ros_msgs class_loader common_interfaces composition composition_interfaces connext_cmake_moduleconsole_bridge_vendor control_msgs controller_interfacecontroller_manager costmap_queue cv_bridge demo_nodes_cppdemo_nodes_cpp_native demo_nodes_py depthimage_to_laserscan diagnostic_msgsdiff_drive_controller domain_coordinator dummy_map_server dummy_robot_bringup dummy_sensors dwb_core dwb_critics dwb_msgs dwb_plugins effort_controllers eigen3_cmake_module eigen_stl_containersexample_interfaces examples_rclcpp_minimal_action_client examples_rclcpp_minimal_action_server examples_rclcpp_minimal_clientexamples_rclcpp_minimal_compositionexamples_rclcpp_minimal_publisher examples_rclcpp_minimal_service examples_rclcpp_minimal_subscriberexamples_rclcpp_minimal_timer examples_rclcpp_multithreaded_executor examples_rclpy_executorsexamples_rclpy_minimal_action_client examples_rclpy_minimal_action_server examples_rclpy_minimal_client examples_rclpy_minimal_publisher examples_rclpy_minimal_serviceexamples_rclpy_minimal_subscriber examples_tf2_pyfake_joint_driver fastrtps_cmake_module forward_command_controller gazebo_devgazebo_msgs gazebo_pluginsgazebo_rosgazebo_ros_pkgsgeometric_shapes geometry2 geometry_msgs hardware_interface image_common image_geometryimage_tools image_transportinteractive_markers intra_process_demo joint_state_controller joint_state_publisher joint_state_publisher_guijoint_trajectory_controller joy joy_linux joy_teleopkdl_parserkey_teleoplaser_geometrylaunch launch_roslaunch_testinglaunch_testing_ament_cmake launch_testing_ros launch_xmllaunch_yaml libcurl_vendorlibstatistics_collector libyaml_vendorlifecycle lifecycle_msgslogging_demo map_msgs message_filtersmimick_vendor mobotmobot_follow mouse_teleop move_base_msgsmoveit_common moveit_core moveit_fake_controller_managermoveit_kinematics moveit_msgs moveit_planners_omplmoveit_resources moveit_resources_fanuc_descriptionmoveit_resources_fanuc_moveit_config moveit_resources_panda_descriptionmoveit_resources_panda_moveit_config moveit_resources_pr2_description moveit_ros_benchmarks moveit_ros_move_group moveit_ros_occupancy_map_monitor moveit_ros_planning moveit_ros_planning_interface moveit_ros_robot_interaction moveit_ros_visualizationmoveit_simple_controller_manager nav2_amcl nav2_behavior_tree nav2_bringup nav2_bt_navigator nav2_common nav2_controllernav2_core nav2_costmap_2dnav2_dwb_controller nav2_gazebo_spawner nav2_lifecycle_manager nav2_map_servernav2_msgs nav2_navfn_planner nav2_planner nav2_recoveriesnav2_rviz_plugins nav2_system_tests nav2_util nav2_voxel_gridnav2_waypoint_follower nav_2d_msgs nav_2d_utils nav_msgs navigation2 object_recognition_msgs octomap_msgs opencv_tests osrf_pycommon pcl_conversionspcl_msgs pendulum_msgs perception_pclpluginlib position_controllerspython_cmake_module python_qt_binding qt_dotgraph qt_gui qt_gui_appqt_gui_core qt_gui_cppqt_gui_py_common quality_of_service_demo_cpp quality_of_service_demo_py random_numbersrcl rcl_actionrcl_interfacesrcl_lifecycle rcl_logging_log4cxx rcl_logging_noop rcl_logging_spdlog rcl_yaml_param_parser rclcpp rclcpp_action rclcpp_components rclcpp_lifecycle rclpyrcpputils rcutils realtime_toolsresource_retriever rmw rmw_connext_cpprmw_connext_shared_cpp rmw_cyclonedds_cpp rmw_dds_commonrmw_fastrtps_cpp rmw_fastrtps_dynamic_cpprmw_fastrtps_shared_cpp rmw_implementation rmw_implementation_cmakerobot_state_publisher ros2_control ros2_controllers ros2actionros2bag ros2cli ros2component ros2doctorros2interface ros2launchros2lifecycle ros2lifecycle_test_fixtures ros2multicast ros2node ros2param ros2pkg ros2run ros2service ros2test ros2topic ros2trace ros_base ros_core ros_environmentros_testing rosbag2 rosbag2_compression rosbag2_converter_default_plugins rosbag2_cpp rosbag2_storagerosbag2_storage_default_plugins rosbag2_test_common rosbag2_tests rosbag2_transport rosgraph_msgs rosidl_adapterrosidl_cmake rosidl_default_generatorsrosidl_default_runtime rosidl_generator_c rosidl_generator_cpprosidl_generator_dds_idlrosidl_generator_py rosidl_parser rosidl_runtime_c rosidl_runtime_cpp rosidl_runtime_py rosidl_typesupport_crosidl_typesupport_connext_c rosidl_typesupport_connext_cpprosidl_typesupport_cpp rosidl_typesupport_fastrtps_c rosidl_typesupport_fastrtps_cpp rosidl_typesupport_interface rosidl_typesupport_introspection_crosidl_typesupport_introspection_cpp rpyutils rqt rqt_actionrqt_common_plugins rqt_console rqt_graph rqt_gui rqt_gui_cpp rqt_gui_pyrqt_image_viewrqt_msg rqt_plot rqt_publisher rqt_py_common rqt_py_consolerqt_reconfigurerqt_service_caller rqt_shell rqt_srv rqt_top rqt_topic run_move_grouprun_moveit_cpprviz2rviz_assimp_vendor rviz_common rviz_default_pluginsrviz_ogre_vendor rviz_renderingrviz_rendering_testsrviz_visual_testing_framework sdl2_vendor sensor_msgs shape_msgsshared_queues_vendorspdlog_vendor sqlite3_vendorsrdfdom sros2sros2_cmake statistics_msgsstd_msgs std_srvs stereo_msgs tango_icons_vendor teleop_tools teleop_tools_msgs teleop_twist_joy teleop_twist_keyboard test_interface_filestest_launch_rostest_launch_testing test_msgs test_robot_hardware test_tf2 tf2 tf2_bullettf2_eigen tf2_geometry_msgs tf2_kdl tf2_msgs tf2_py tf2_ros tf2_sensor_msgstf2_tools tinyxml2_vendortinyxml_vendortopic_monitor tracetoolstracetools_launch tracetools_readtracetools_testtracetools_trace trajectory_msgstransmission_interface turtlebot3_msgsturtlesim uncrustify_vendor unique_identifier_msgs urdfurdfdom_pyvelocity_controllersvision_opencv visualization_msgs xacroyaml_cpp_vendorzstd_vendor C:\ros_ws\mobot>

可能显示会出问题,看截图吧:

ros2 pkg list

显示不全。

打开默认测试,一切正常:

ros2 run turtlesim turtlesim_node

测试一下,基本工具:

查看可用节点和启动键盘遥控

遥控小乌龟在环境中运动并触发消息

终端显示提示信息

rqt图形化控制台界面显示提示

这样所有原来在linux可以测试的代码与应用,都可以到windows测试了。

来咱们再来看一个酷炫一些的案例:

#ROS 2 编译

rosdep install --from-paths . --ignore-src -r -y

colcon build

#ROS 2 运行

call install/setup.sh

roslaunch aws_robomaker_racetrack_world view_racetrack.launch

在windows环境下的ros和gazebo

启动的launch文件:

import osfrom ament_index_python.packages import get_package_share_directoryfrom launch import LaunchDescriptionfrom launch.actions import ExecuteProcess, DeclareLaunchArgumentfrom launch.actions import IncludeLaunchDescriptionfrom launch_ros.actions import Nodefrom launch.conditions import IfConditionfrom launch.launch_description_sources import PythonLaunchDescriptionSourcefrom launch.substitutions import LaunchConfiguration# this is the function launch system will look fordef generate_launch_description():robot_name = 'mobot'world_file_name = 'racetrack.world'# full path to urdf and world fileworld = os.path.join(get_package_share_directory(robot_name), 'worlds', world_file_name)urdf = os.path.join(get_package_share_directory(robot_name), 'urdf', 'mobot.urdf')#urdf1 = os.path.join(get_package_share_directory('mobot'), 'urdf', 'mobot.urdf')#urdf2 = os.path.join(get_package_share_directory('mobot'), 'urdf', 'mobot.urdf')# read urdf contents because to spawn an entity in # gazebo we need to provide entire urdf as string on command line#small_house = launch.actions.IncludeLaunchDescription(# launch.launch_description_sources.PythonLaunchDescriptionSource(# os.path.join(# get_package_share_directory('aws_robomaker_small_house_world'),# 'launch',# 'small_house.launch.py')))# Spawn mobot1spawn_mobot = Node(package='gazebo_ros',node_executable='spawn_entity.py',node_name='spawn_entity',node_namespace='mobot',output='screen',#emulate_tty=True,arguments=['-entity','mobot','-x', '2.75', '-y', '-15.00', '-z', '0.2','-file', urdf])# Spawn mobot2#spawn_mobot2 = Node(# package='gazebo_ros',# node_executable='spawn_entity.py',# node_name='spawn_entity',# node_namespace='mobot2',# output='screen',# emulate_tty=True,# arguments=['-entity',#'mobot2',#'-x', '0.5', '-y', '1.8', '-z', '0.1',#'-file', urdf#]#)#xml = open(urdf, 'r').read()# double quotes need to be with escape sequence#xml = xml.replace('"', '\\"')# this is argument format for spwan_entity service #spwan_args = '{name: \"mobot\", xml: \"' + xml + '\"}'# create and return launch description objectreturn LaunchDescription([# start gazebo, notice we are using libgazebo_ros_factory.so instead of libgazebo_ros_init.so# That is because only libgazebo_ros_factory.so contains the service call to /spawn_entityExecuteProcess(cmd=['gazebo', '--verbose', world, '-s', 'libgazebo_ros_factory.so'],output='screen'),# tell gazebo to spwan your robot in the world by calling service# ExecuteProcess(# cmd=['ros2', 'service', 'call', '/spawn_entity', 'gazebo_msgs/SpawnEntity', spwan_args],# output='screen'),#small_house,spawn_mobot,#spawn_mobot2,])

如果觉得还是不过瘾,需要玩玩夜景模式,来看一下吧,不清楚能否成功呢???

夜景模式

看看细节效果如何?

赛道--灯光效果

红绿灯效果

等等,感觉跑题了,物联网的部分在哪里???

ESP8266和ESP32完全支持,没有任何问题。

具体参考:

ESP8266和ESP32配置(需使用ROS1和ROS2)

使用内容等有空再补充吧,机器人操作系统ROS1和ROS2已经完全支持windows,macos和linux,并且支持PC和ARM。还在快速发展中。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。