最全创建ROS 2工作区+导入第三方软件包_ros2 使用第三方库,2024年最新高级大数据开发面试题及答案

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

导入第三方软件包

cd ~/bookros2_ws/src
sudo apt install python3-vcstool
vcs import . < third_parties.repos

这个命令用于安装名为 python3-vcstool 的软件包。vcstool 是一个用于管理多个版本控制系统(Version Control System,VCS)仓库的工具。它是 ROS 2 中用于管理工作空间中的多个软件包的版本控制的工具之一。

具体而言,python3-vcstool 提供了一个名为 vcs 的命令行工具,可以使用YAML文件描述工作空间中包含的各个软件包及其对应的版本控制信息。这样,通过一个简单的配置文件,你可以方便地一次性克隆、更新或检查多个软件包的状态。

执行 sudo apt install python3-vcstool 后,你就能在系统中使用 vcs 命令了,该命令可帮助你更有效地管理 ROS 2 工作空间中的软件包。

这个命令使用 vcs 工具,通过读取名为 third\_parties.repos 的配置文件,将多个版本控制系统(VCS)仓库克隆到当前工作目录中。让我解释一下这个命令的各个部分:

  1. vcs import: 这是 vcs 工具的命令,用于执行导入(import)操作,即根据指定的配置文件克隆或更新多个仓库。

  2. .: 这表示当前工作目录。克隆的仓库将被放置在当前目录下。

  3. < book\_ros2/third\_parties.repos: < 符号用于将配置文件 book\_ros2/third\_parties.repos 的内容传递给 vcs import 命令。该配置文件通常包含了需要导入的各个仓库的信息,如URL、分支等。

这个命令的实际效果是根据 third\_parties.repos 文件中的配置信息,使用 vcs 工具将多个仓库克隆到当前目录中。这对于管理工作空间中的依赖项和第三方软件包非常有用,因为它能够一次性处理多个仓库的克隆操作,简化了配置和管理的过程。

安装配置文件并生成软件包

cd ~/bookros2_ws
rosdep install --from-paths src --ignore-src -r -y
sudo apt update
sudo apt install python3-colcon-common-extensions
colcon build --symlink-install
  1. rosdep install: 这是 ROS 工具链中的一个工具,用于安装 ROS 软件包的系统依赖项。rosdep 通过读取软件包的 package.xml 文件,确定软件包所需的系统依赖项,并尝试安装它们。
  2. --from-paths src: 指定 rosdep 从指定的路径中读取软件包信息。在这里,src 表示 ROS 2 工作空间中的 src 目录。
  3. --ignore-src: 忽略 src 目录中的源码,只处理已构建的软件包。通常,src 目录包含源码和已构建的软件包,但在使用 --ignore-src 选项时,rosdep 将仅处理已构建的软件包。
  4. -r: 递归安装依赖项。这表示 rosdep 将检查工作空间中所有软件包的依赖项,并确保这些依赖项被安装。
  5. -y: 不询问用户确认,直接安装。这个选项用于自动确认 rosdep 提示,使安装过程无需用户交互。

总的来说,这个命令的作用是根据 ROS 2 工作空间中 src 目录下的软件包信息,递归地安装所有依赖项,并通过 -y 选项直接应用这些更改,无需用户确认。这是为了在构建 ROS 2 工作空间之前确保所有的依赖项都已安装

ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies: diff_drive_controller: Cannot locate rosdep definition for [realtime_tools] gazebo_ros2_control_demos: Cannot locate rosdep definition for [gazebo_ros] forward_command_controller: Cannot locate rosdep definition for [realtime_tools] tiago_gazebo: Cannot locate rosdep definition for [play_motion_msgs] br2_tracking: Cannot locate rosdep definition for [vision_msgs] joint_trajectory_controller: Cannot locate rosdep definition for [realtime_tools] pmb2_description: Cannot locate rosdep definition for [joint_state_publisher_gui] gazebo_ros2_control: Cannot locate rosdep definition for [gazebo_ros] tiago_controller_configuration: Cannot locate rosdep definition for [pal_local_joint_control] br2_fsm_bumpgo_py: Cannot locate rosdep definition for [rclcpy] imu_sensor_broadcaster: Cannot locate rosdep definition for [realtime_tools] pal_gazebo_worlds: Cannot locate rosdep definition for [gazebo_msgs] tiago_2dnav_gazebo: Cannot locate rosdep definition for [tiago_2dnav] force_torque_sensor_broadcaster: Cannot locate rosdep definition for [realtime_tools] pal_gripper_description: Cannot locate rosdep definition for [rostest] tiago_bringup: Cannot locate rosdep definition for [tiago_moveit_config] pmb2_bringup: Cannot locate rosdep definition for [joy_teleop] tiago_description: Cannot locate rosdep definition for [custom_ee_description] gripper_controllers: Cannot locate rosdep definition for [realtime_tools] Continuing to install resolvable dependencies… #All required rosdeps installed successfully ------------------------------------------------

在构建过程中,出现了一些无法解析的 rosdep 错误,其中一些软件包无法找到其依赖项的 rosdep 定义。解决这些问题的一般步骤如下:

  1. 手动安装缺失的系统依赖项: 对于每个无法解析的 rosdep 错误,你可以手动安装相应软件包的依赖项。
sudo apt install ros-foxy-realtime-tools ros-foxy-gazebo-ros ros-foxy-play-motion-msgs ros-foxy-vision-msgs ros-foxy-joint-state-publisher-gui ros-foxy-gazebo-msgs ros-foxy-pal-local-joint-control ros-foxy-rclcpp ros-foxy-tiago-2dnav ros-foxy-rostest ros-foxy-tiago-moveit-config ros-foxy-joy-teleop ros-foxy-custom-ee-description

正在读取软件包列表… 完成
正在分析软件包的依赖关系树       
正在读取状态信息… 完成       
E: 无法定位软件包 ros-foxy-play-motion-msgs
E: 无法定位软件包 ros-foxy-pal-local-joint-control
E: 无法定位软件包 ros-foxy-tiago-2dnav
E: 无法定位软件包 ros-foxy-rostest
E: 无法定位软件包 ros-foxy-tiago-moveit-config
E: 无法定位软件包 ros-foxy-custom-ee-description

  1. 重新运行 colcon build 命令
  • colcon build: 这是构建 ROS 2 工作空间的命令,colcon 是用于构建、测试和分发 ROS 2 软件包的构建工具。
  • --symlink-install: 通过使用符号链接方式进行安装,软件包的文件将被链接到安装目录而不是复制。这使得对软件包的更改可以立即在系统中生效,而无需重新构建。这对于开发和调试过程中的迭代非常方便。

综合起来,这个命令的目的是使用 colcon 构建 ROS 2 工作空间,并通过 --symlink-install 选项以符号链接方式进行软件包的安装。这有助于提高开发效率,特别是在频繁进行修改和测试的情况下。

附加依赖项

twist_mux 软件包的构建失败。错误信息表明缺少 diagnostic_updater 软件包的配置文件。

hardware_interface 软件包的构建失败。错误信息表明缺少 control_msgs 软件包的配置文件。

br2_bt_bumpgobr2_bt_patrolling 软件包的构建失败。错误信息表明缺少 behaviortree_cpp_v3 软件包的配置文件。

sudo apt install ros-foxy-diagnostic-updater
sudo apt-get install ros-foxy-control-msgs
sudo apt-get install ros-foxy-xacro
sudo apt-get install ros-foxy-behaviortree-cpp-v3
sudo apt-get install ros-foxy-nav2-msgs
sudo apt-get install ros-foxy-vision-msgs
sudo apt-get install ros-foxy-realtime-tools
sudo apt-get install ros-foxy-gazebo-dev
sudo apt-get install ros-foxy-control-toolbox
sudo apt-get install ros-foxy-gazebo-ros

成功构建

colcon build --symlink-install
Starting >>> controller_manager_msgs
Starting >>> ros2_control_test_assets                  
Starting >>> launch_pal                                                
Starting >>> twist_mux                                                 
Starting >>> hey5_description                                          
Starting >>> tiago_description_calibration                             
Starting >>> pal_gazebo_worlds                                         
Starting >>> urdf_test                                                 
Finished <<< ros2_control_test_assets [3.16s]                                  
Finished <<< hey5_description [2.81s]                                          
Starting >>> hardware_interface
Starting >>> pmb2_maps                                                         
Finished <<< tiago_description_calibration [3.22s]                             
Starting >>> br2_tracking_msgs
Finished <<< pal_gazebo_worlds [3.45s] 
Finished <<< launch_pal [4.95s]        
Finished <<< urdf_test [4.27s]         
Starting >>> br2_basics
Starting >>> br2_bt_bumpgo             
Starting >>> pal_gripper_description   
Finished <<< controller_manager_msgs [6.57s]
Finished <<< twist_mux [6.20s]                                    
Starting >>> br2_bt_patrolling
Starting >>> br2_fsm_bumpgo_cpp                                               
Finished <<< pmb2_maps [4.51s]                                                
Finished <<< br2_bt_bumpgo [2.80s]                                         
Starting >>> pmb2_2dnav
Starting >>> br2_fsm_bumpgo_py                                              
Finished <<< br2_tracking_msgs [5.76s]                                      
Starting >>> br2_navigation                                                 
Finished <<< pal_gripper_description [4.91s]                                
Finished <<< hardware_interface [7.56s]                                     
Finished <<< br2_basics [5.78s]                                     
Starting >>> controller_interface                                          
Starting >>> br2_tf2_detector                                              
Starting >>> br2_tiago                                                     
Finished <<< br2_fsm_bumpgo_cpp [5.37s]                                    
Starting >>> br2_vff_avoidance
Finished <<< br2_bt_patrolling [6.06s]                                     
Starting >>> groot
Finished <<< br2_fsm_bumpgo_py [5.24s]                              
Finished <<< pmb2_2dnav [5.65s]                                     
Starting >>> br2_tracking
Starting >>> pmb2_navigation                                            
Finished <<< br2_navigation [5.16s]                                     
Starting >>> transmission_interface
Finished <<< br2_tiago [3.74s]                                                
Finished <<< br2_tf2_detector [4.24s]                                         
Finished <<< controller_interface [4.71s]                                     
Starting >>> controller_manager                                            
Finished <<< br2_vff_avoidance [4.92s]                                     
Finished <<< groot [4.75s]                                     
Finished <<< pmb2_navigation [4.11s]                                  
Finished <<< br2_tracking [4.57s]                                     
Finished <<< transmission_interface [4.04s]
Finished <<< controller_manager [3.10s]                     
Starting >>> forward_command_controller
Starting >>> joint_state_broadcaster                        
Starting >>> diff_drive_controller                                          
Starting >>> imu_sensor_broadcaster                                         
Starting >>> joint_trajectory_controller                                    
Starting >>> force_torque_sensor_broadcaster                                
Starting >>> ros2controlcli                                                 
Starting >>> gazebo_ros2_control                                            
Finished <<< forward_command_controller [3.56s]                             
Finished <<< imu_sensor_broadcaster [3.35s]
Starting >>> position_controllers
Starting >>> effort_controllers         
Finished <<< joint_state_broadcaster [4.35s]
Finished <<< ros2controlcli [3.70s]                                            
Finished <<< force_torque_sensor_broadcaster [4.43s]                           
Starting >>> joint_state_controller
Starting >>> velocity_controllers                                              
Finished <<< joint_trajectory_controller [5.35s]                               
Starting >>> ros2_control
Starting >>> gripper_controllers                                               
Finished <<< diff_drive_controller [6.73s]                                     
Finished <<< gazebo_ros2_control [7.60s]                                     
Finished <<< ros2_control [3.97s]       
Finished <<< joint_state_controller [5.68s]
Starting >>> pmb2_controller_configuration
Finished <<< pmb2_controller_configuration [4.51s]
Starting >>> pmb2_description
Finished <<< effort_controllers [16.0s]                                        
Finished <<< position_controllers [16.5s]

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

…(img-gvigoM2g-1715475747667)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值