0
点赞
收藏
分享

微信扫一扫

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

墨香子儿 2022-03-20 阅读 121


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

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

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

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

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

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


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

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

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

ROS 2 Foxy

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

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

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

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


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

一个网页学习机器人操作系统ROS2-1 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_python_05

一个网页学习机器人操作系统ROS2-2 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_linux_06

一个网页学习机器人操作系统ROS2-3 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_linux_07

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

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

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

C:\ros_ws\mobot>ros2 pkg list                                                                                           action_msgs                                                                                                             action_tutorials_cpp                                                                                                    action_tutorials_interfaces                                                                                             action_tutorials_py                                                                                                     actionlib_msgs                                                                                                          ament_clang_format                                                                                                      ament_clang_tidy                                                                                                        ament_cmake                                                                                                             ament_cmake_auto                                                                                                        ament_cmake_clang_format                                                                                                ament_cmake_clang_tidy                                                                                                  ament_cmake_copyright                                                                                                   ament_cmake_core                                                                                                        ament_cmake_cppcheck                                                                                                    ament_cmake_cpplint                                                                                                     ament_cmake_export_definitions                                                                                          ament_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_pyflakes                                                                                                    ament_cmake_pytest                                                                                                      ament_cmake_python                                                                                                      ament_cmake_ros                                                                                                         ament_cmake_target_dependencies                                                                                         ament_cmake_test                                                                                                        ament_cmake_uncrustify                                                                                                  ament_cmake_version                                                                                                     ament_cmake_xmllint                                                                                                     ament_copyright                                                                                                         ament_cppcheck                                                                                                          ament_cpplint                                                                                                           ament_flake8                                                                                                            ament_index_cpp                                                                                                         ament_index_python                                                                                                      ament_lint                                                                                                              ament_lint_auto                                                                                                         ament_lint_cmake                                                                                                        ament_lint_common                                                                                                       ament_mypy                                                                                                              ament_package                                                                                                           ament_pclint                                                                                                            ament_pep257                                                                                                            ament_pycodestyle                                                                                                       ament_pyflakes                                                                                                          ament_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_module                                                                                                    console_bridge_vendor                                                                                                   control_msgs                                                                                                            controller_interface                                                                                                    controller_manager                                                                                                      costmap_queue                                                                                                           cv_bridge                                                                                                               demo_nodes_cpp                                                                                                          demo_nodes_cpp_native                                                                                                   demo_nodes_py                                                                                                           depthimage_to_laserscan                                                                                                 diagnostic_msgs                                                                                                         diff_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_containers                                                                                                    example_interfaces                                                                                                      examples_rclcpp_minimal_action_client                                                                                   examples_rclcpp_minimal_action_server                                                                                   examples_rclcpp_minimal_client                                                                                          examples_rclcpp_minimal_composition                                                                                     examples_rclcpp_minimal_publisher                                                                                       examples_rclcpp_minimal_service                                                                                         examples_rclcpp_minimal_subscriber                                                                                      examples_rclcpp_minimal_timer                                                                                           examples_rclcpp_multithreaded_executor                                                                                  examples_rclpy_executors                                                                                                examples_rclpy_minimal_action_client                                                                                    examples_rclpy_minimal_action_server                                                                                    examples_rclpy_minimal_client                                                                                           examples_rclpy_minimal_publisher                                                                                        examples_rclpy_minimal_service                                                                                          examples_rclpy_minimal_subscriber                                                                                       examples_tf2_py                                                                                                         fake_joint_driver                                                                                                       fastrtps_cmake_module                                                                                                   forward_command_controller                                                                                              gazebo_dev                                                                                                              gazebo_msgs                                                                                                             gazebo_plugins                                                                                                          gazebo_ros                                                                                                              gazebo_ros_pkgs                                                                                                         geometric_shapes                                                                                                        geometry2                                                                                                               geometry_msgs                                                                                                           hardware_interface                                                                                                      image_common                                                                                                            image_geometry                                                                                                          image_tools                                                                                                             image_transport                                                                                                         interactive_markers                                                                                                     intra_process_demo                                                                                                      joint_state_controller                                                                                                  joint_state_publisher                                                                                                   joint_state_publisher_gui                                                                                               joint_trajectory_controller                                                                                             joy                                                                                                                     joy_linux                                                                                                               joy_teleop                                                                                                              kdl_parser                                                                                                              key_teleop                                                                                                              laser_geometry                                                                                                          launch                                                                                                                  launch_ros                                                                                                              launch_testing                                                                                                          launch_testing_ament_cmake                                                                                              launch_testing_ros                                                                                                      launch_xml                                                                                                              launch_yaml                                                                                                             libcurl_vendor                                                                                                          libstatistics_collector                                                                                                 libyaml_vendor                                                                                                          lifecycle                                                                                                               lifecycle_msgs                                                                                                          logging_demo                                                                                                            map_msgs                                                                                                                message_filters                                                                                                         mimick_vendor                                                                                                           mobot                                                                                                                   mobot_follow                                                                                                            mouse_teleop                                                                                                            move_base_msgs                                                                                                          moveit_common                                                                                                           moveit_core                                                                                                             moveit_fake_controller_manager                                                                                          moveit_kinematics                                                                                                       moveit_msgs                                                                                                             moveit_planners_ompl                                                                                                    moveit_resources                                                                                                        moveit_resources_fanuc_description                                                                                      moveit_resources_fanuc_moveit_config                                                                                    moveit_resources_panda_description                                                                                      moveit_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_visualization                                                                                                moveit_simple_controller_manager                                                                                        nav2_amcl                                                                                                               nav2_behavior_tree                                                                                                      nav2_bringup                                                                                                            nav2_bt_navigator                                                                                                       nav2_common                                                                                                             nav2_controller                                                                                                         nav2_core                                                                                                               nav2_costmap_2d                                                                                                         nav2_dwb_controller                                                                                                     nav2_gazebo_spawner                                                                                                     nav2_lifecycle_manager                                                                                                  nav2_map_server                                                                                                         nav2_msgs                                                                                                               nav2_navfn_planner                                                                                                      nav2_planner                                                                                                            nav2_recoveries                                                                                                         nav2_rviz_plugins                                                                                                       nav2_system_tests                                                                                                       nav2_util                                                                                                               nav2_voxel_grid                                                                                                         nav2_waypoint_follower                                                                                                  nav_2d_msgs                                                                                                             nav_2d_utils                                                                                                            nav_msgs                                                                                                                navigation2                                                                                                             object_recognition_msgs                                                                                                 octomap_msgs                                                                                                            opencv_tests                                                                                                            osrf_pycommon                                                                                                           pcl_conversions                                                                                                         pcl_msgs                                                                                                                pendulum_msgs                                                                                                           perception_pcl                                                                                                          pluginlib                                                                                                               position_controllers                                                                                                    python_cmake_module                                                                                                     python_qt_binding                                                                                                       qt_dotgraph                                                                                                             qt_gui                                                                                                                  qt_gui_app                                                                                                              qt_gui_core                                                                                                             qt_gui_cpp                                                                                                              qt_gui_py_common                                                                                                        quality_of_service_demo_cpp                                                                                             quality_of_service_demo_py                                                                                              random_numbers                                                                                                          rcl                                                                                                                     rcl_action                                                                                                              rcl_interfaces                                                                                                          rcl_lifecycle                                                                                                           rcl_logging_log4cxx                                                                                                     rcl_logging_noop                                                                                                        rcl_logging_spdlog                                                                                                      rcl_yaml_param_parser                                                                                                   rclcpp                                                                                                                  rclcpp_action                                                                                                           rclcpp_components                                                                                                       rclcpp_lifecycle                                                                                                        rclpy                                                                                                                   rcpputils                                                                                                               rcutils                                                                                                                 realtime_tools                                                                                                          resource_retriever                                                                                                      rmw                                                                                                                     rmw_connext_cpp                                                                                                         rmw_connext_shared_cpp                                                                                                  rmw_cyclonedds_cpp                                                                                                      rmw_dds_common                                                                                                          rmw_fastrtps_cpp                                                                                                        rmw_fastrtps_dynamic_cpp                                                                                                rmw_fastrtps_shared_cpp                                                                                                 rmw_implementation                                                                                                      rmw_implementation_cmake                                                                                                robot_state_publisher                                                                                                   ros2_control                                                                                                            ros2_controllers                                                                                                        ros2action                                                                                                              ros2bag                                                                                                                 ros2cli                                                                                                                 ros2component                                                                                                           ros2doctor                                                                                                              ros2interface                                                                                                           ros2launch                                                                                                              ros2lifecycle                                                                                                           ros2lifecycle_test_fixtures                                                                                             ros2multicast                                                                                                           ros2node                                                                                                                ros2param                                                                                                               ros2pkg                                                                                                                 ros2run                                                                                                                 ros2service                                                                                                             ros2test                                                                                                                ros2topic                                                                                                               ros2trace                                                                                                               ros_base                                                                                                                ros_core                                                                                                                ros_environment                                                                                                         ros_testing                                                                                                             rosbag2                                                                                                                 rosbag2_compression                                                                                                     rosbag2_converter_default_plugins                                                                                       rosbag2_cpp                                                                                                             rosbag2_storage                                                                                                         rosbag2_storage_default_plugins                                                                                         rosbag2_test_common                                                                                                     rosbag2_tests                                                                                                           rosbag2_transport                                                                                                       rosgraph_msgs                                                                                                           rosidl_adapter                                                                                                          rosidl_cmake                                                                                                            rosidl_default_generators                                                                                               rosidl_default_runtime                                                                                                  rosidl_generator_c                                                                                                      rosidl_generator_cpp                                                                                                    rosidl_generator_dds_idl                                                                                                rosidl_generator_py                                                                                                     rosidl_parser                                                                                                           rosidl_runtime_c                                                                                                        rosidl_runtime_cpp                                                                                                      rosidl_runtime_py                                                                                                       rosidl_typesupport_c                                                                                                    rosidl_typesupport_connext_c                                                                                            rosidl_typesupport_connext_cpp                                                                                          rosidl_typesupport_cpp                                                                                                  rosidl_typesupport_fastrtps_c                                                                                           rosidl_typesupport_fastrtps_cpp                                                                                         rosidl_typesupport_interface                                                                                            rosidl_typesupport_introspection_c                                                                                      rosidl_typesupport_introspection_cpp                                                                                    rpyutils                                                                                                                rqt                                                                                                                     rqt_action                                                                                                              rqt_common_plugins                                                                                                      rqt_console                                                                                                             rqt_graph                                                                                                               rqt_gui                                                                                                                 rqt_gui_cpp                                                                                                             rqt_gui_py                                                                                                              rqt_image_view                                                                                                          rqt_msg                                                                                                                 rqt_plot                                                                                                                rqt_publisher                                                                                                           rqt_py_common                                                                                                           rqt_py_console                                                                                                          rqt_reconfigure                                                                                                         rqt_service_caller                                                                                                      rqt_shell                                                                                                               rqt_srv                                                                                                                 rqt_top                                                                                                                 rqt_topic                                                                                                               run_move_group                                                                                                          run_moveit_cpp                                                                                                          rviz2                                                                                                                   rviz_assimp_vendor                                                                                                      rviz_common                                                                                                             rviz_default_plugins                                                                                                    rviz_ogre_vendor                                                                                                        rviz_rendering                                                                                                          rviz_rendering_tests                                                                                                    rviz_visual_testing_framework                                                                                           sdl2_vendor                                                                                                             sensor_msgs                                                                                                             shape_msgs                                                                                                              shared_queues_vendor                                                                                                    spdlog_vendor                                                                                                           sqlite3_vendor                                                                                                          srdfdom                                                                                                                 sros2                                                                                                                   sros2_cmake                                                                                                             statistics_msgs                                                                                                         std_msgs                                                                                                                std_srvs                                                                                                                stereo_msgs                                                                                                             tango_icons_vendor                                                                                                      teleop_tools                                                                                                            teleop_tools_msgs                                                                                                       teleop_twist_joy                                                                                                        teleop_twist_keyboard                                                                                                   test_interface_files                                                                                                    test_launch_ros                                                                                                         test_launch_testing                                                                                                     test_msgs                                                                                                               test_robot_hardware                                                                                                     test_tf2                                                                                                                tf2                                                                                                                     tf2_bullet                                                                                                              tf2_eigen                                                                                                               tf2_geometry_msgs                                                                                                       tf2_kdl                                                                                                                 tf2_msgs                                                                                                                tf2_py                                                                                                                  tf2_ros                                                                                                                 tf2_sensor_msgs                                                                                                         tf2_tools                                                                                                               tinyxml2_vendor                                                                                                         tinyxml_vendor                                                                                                          topic_monitor                                                                                                           tracetools                                                                                                              tracetools_launch                                                                                                       tracetools_read                                                                                                         tracetools_test                                                                                                         tracetools_trace                                                                                                        trajectory_msgs                                                                                                         transmission_interface                                                                                                  turtlebot3_msgs                                                                                                         turtlesim                                                                                                               uncrustify_vendor                                                                                                       unique_identifier_msgs                                                                                                  urdf                                                                                                                    urdfdom_py                                                                                                              velocity_controllers                                                                                                    vision_opencv                                                                                                           visualization_msgs                                                                                                      xacro                                                                                                                   yaml_cpp_vendor                                                                                                         zstd_vendor                                                                                                                                                                                                                                     C:\ros_ws\mobot>

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


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

ros2 pkg list

显示不全。

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


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

ros2 run turtlesim turtlesim_node

测试一下,基本工具:


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

查看可用节点和启动键盘遥控 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_linux_11

遥控小乌龟在环境中运动并触发消息 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_python_12

终端显示提示信息 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_xml_13

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


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

在windows环境下的ros和gazebo

启动的launch文件:

import os

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import ExecuteProcess, DeclareLaunchArgument
from launch.actions import IncludeLaunchDescription
from launch_ros.actions import Node
from launch.conditions import IfCondition
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration

# this is the function launch system will look for

def generate_launch_description():

robot_name = 'mobot'
world_file_name = 'racetrack.world'

# full path to urdf and world file

world = 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 mobot1
spawn_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 object
return 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_entity
ExecuteProcess(
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,

])

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


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

夜景模式

看看细节效果如何?


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

赛道--灯光效果 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能在Windows系统安装ROS机器人操作系统_linux_17

红绿灯效果

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

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

具体参考:

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

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



举报

相关推荐

0 条评论