创建ROS 2工作区+导入第三方软件包

创建ROS 2工作区

mkdir -p ~/bookros2_ws/src
cd ~/bookros2_ws/src
git clone https://github.com/eather0056/Robot-Programming-with-ROS2.git

导入第三方软件包

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]                                      
Starting >>> pal_gripper_controller_configuration
Finished <<< pmb2_description [5.37s]   
Starting >>> pmb2_bringup
Finished <<< gripper_controllers [15.9s]                                       
Finished <<< velocity_controllers [16.9s]                                      
Starting >>> ros2_controllers
Finished <<< pmb2_bringup [2.64s]       
Starting >>> pmb2_robot
Finished <<< pal_gripper_controller_configuration [3.57s]
Starting >>> tiago_controller_configuration
Starting >>> pal_gripper                                                
Finished <<< ros2_controllers [2.58s]                                     
Starting >>> gazebo_ros2_control_demos
Finished <<< pal_gripper [1.95s]                                    
Finished <<< pmb2_robot [3.00s]                                     
Finished <<< tiago_controller_configuration [2.82s]
Starting >>> tiago_description
Starting >>> tiago_bringup              
Finished <<< tiago_bringup [2.38s]      
Finished <<< tiago_description [3.20s]  
Starting >>> tiago_gazebo
Starting >>> tiago_robot                
Finished <<< gazebo_ros2_control_demos [6.16s]
Finished <<< tiago_robot [1.70s]                                      
Finished <<< tiago_gazebo [3.23s]                     
Starting >>> tiago_2dnav_gazebo
Starting >>> tiago_simulation                       
Finished <<< tiago_simulation [1.59s]                                     
Finished <<< tiago_2dnav_gazebo [2.00s]                         

Summary: 57 packages finished [1min 1s]
 

将工作空间激活为覆盖,打开终端时默认激活

source bookros2_ws/install/setup.bash

echo "source ~/bookros2_ws/install/setup.bash" >> ~/.bashrc

 

 问题补充

ament_cmake

rosdep install --from-paths src --ignore-src -r -y
WARNING: ROS_PYTHON_VERSION is unset. Defaulting to 3
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies (ROS distro is not set. Make sure `ROS_DISTRO` environment variable is set, or use `--rosdistro` option to specify the distro, e.g. `--rosdistro indigo`):
pal_gripper_description: Cannot locate rosdep definition for [rostest]
gripper_controllers: Cannot locate rosdep definition for [ament_lint_common]
transmission_interface: Cannot locate rosdep definition for [ament_lint_common]
br2_tracking_msgs: Cannot locate rosdep definition for [rosidl_default_generators]
br2_tf2_detector: Cannot locate rosdep definition for [ament_lint_common]
br2_basics: Cannot locate rosdep definition for [ament_lint_common]
controller_manager: Cannot locate rosdep definition for [ament_lint_common]
pmb2_description: Cannot locate rosdep definition for [launch_testing_ament_cmake]
joint_trajectory_controller: Cannot locate rosdep definition for [ament_lint_common]
joint_state_controller: Cannot locate rosdep definition for [rclcpp]
urdf_test: Cannot locate rosdep definition for [ament_lint_common]
launch_pal: Cannot locate rosdep definition for [ament_pep257]
hardware_interface: Cannot locate rosdep definition for [ament_lint_common]
pmb2_2dnav: Cannot locate rosdep definition for [ament_lint_common]
ros2_control: Cannot locate rosdep definition for [ament_cmake]
pal_gripper: Cannot locate rosdep definition for [ament_cmake]
br2_bt_patrolling: Cannot locate rosdep definition for [ament_cmake_gtest]
tiago_gazebo: Cannot locate rosdep definition for [play_motion_msgs]
force_torque_sensor_broadcaster: Cannot locate rosdep definition for [ament_cmake_gmock]
br2_tracking: Cannot locate rosdep definition for [ament_cmake_gtest]
pmb2_controller_configuration: Cannot locate rosdep definition for [ament_lint_common]
controller_interface: Cannot locate rosdep definition for [ament_lint_common]
pmb2_navigation: Cannot locate rosdep definition for [ament_cmake_auto]
effort_controllers: Cannot locate rosdep definition for [ament_lint_common]
br2_tiago: Cannot locate rosdep definition for [ament_cmake]
tiago_simulation: Cannot locate rosdep definition for [ament_cmake]
br2_navigation: Cannot locate rosdep definition for [ament_cmake]
velocity_controllers: Cannot locate rosdep definition for [ament_lint_common]
tiago_description_calibration: Cannot locate rosdep definition for [xacro]
pal_gazebo_worlds: Cannot locate rosdep definition for [gazebo_msgs]
br2_vff_avoidance: Cannot locate rosdep definition for [ament_cmake_gtest]
tiago_controller_configuration: Cannot locate rosdep definition for [ament_lint_common]
tiago_robot: Cannot locate rosdep definition for [ament_cmake]
pmb2_robot: Cannot locate rosdep definition for [ament_cmake]
tiago_description: Cannot locate rosdep definition for [launch_testing_ament_cmake]
pal_gripper_controller_configuration: Cannot locate rosdep definition for [ament_cmake_auto]
ros2_control_test_assets: Cannot locate rosdep definition for [ament_lint_auto]
joint_state_broadcaster: Cannot locate rosdep definition for [rclcpp]
diff_drive_controller: Cannot locate rosdep definition for [ament_lint_common]
pmb2_maps: Cannot locate rosdep definition for [ament_cmake_auto]
position_controllers: Cannot locate rosdep definition for [ament_lint_common]
br2_fsm_bumpgo_cpp: Cannot locate rosdep definition for [ament_lint_common]
tiago_2dnav_gazebo: Cannot locate rosdep definition for [ament_lint_common]
pmb2_bringup: Cannot locate rosdep definition for [ament_lint_common]
br2_fsm_bumpgo_py: Cannot locate rosdep definition for [ament_pep257]
forward_command_controller: Cannot locate rosdep definition for [ament_lint_common]
imu_sensor_broadcaster: Cannot locate rosdep definition for [ament_lint_common]
controller_manager_msgs: Cannot locate rosdep definition for [ament_lint_common]
ros2controlcli: Cannot locate rosdep definition for [ament_xmllint]
gazebo_ros2_control: Cannot locate rosdep definition for [ament_cmake_gtest]
hey5_description: Cannot locate rosdep definition for [xacro]
ros2_controllers: Cannot locate rosdep definition for [ament_cmake]
groot: Cannot locate rosdep definition for [behaviortree_cpp_v3]
br2_bt_bumpgo: Cannot locate rosdep definition for [ament_cmake_gtest]
twist_mux: Cannot locate rosdep definition for [launch_testing_ros]
tiago_bringup: Cannot locate rosdep definition for [ament_lint_common]
gazebo_ros2_control_demos: Cannot locate rosdep definition for [ament_lint_common]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully
 

 原因:

source /opt/ros/foxy/setup.bash找不到

解决:

小鱼一键安装选择,4

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用VSCode创建ROS2的工作空间非常简单。首先,确保已经安装了ROS2和VSCode。 1. 打开VSCode,并安装ROS插件。插件名称为“ROS”。 2. 创建一个新的文件夹作为ROS2的工作空间。可以通过在VSCode的资源管理器中右键单击并选择“新建文件夹”来创建。 3. 在新建的工作空间文件夹中,右键单击并选择“在终端中打开”。 4. 在终端中输入以下命令来初始化ROS2工作空间: ``` ros2 init ``` 这将创建一个名为“src”的文件夹,用于存放ROS2软件包。 5. 然后,您可以在“src”文件夹中创建自己的ROS2软件包。可以通过在VSCode资源管理器中右键单击“src”文件夹并选择“新建文件夹”来创建新的软件包。 注意:您也可以使用ROS2命令行工具来创建软件包。在终端中,使用以下命令: ``` ros2 pkg create <package_name> ``` 这将在“src”文件夹中创建一个新的软件包。 6. 在VSCode的资源管理器中,导航到您的软件包文件夹。您可以在其中添加和编辑ROS2节点、话题和服务。 7. 在VSCode左侧的侧边栏中,选择“运行”选项卡。然后,单击顶部的绿色播放按钮以启动ROS2环境。 8. 现在,您可以使用VSCode的终端来运行ROS2命令和节点。 9. 要构建和编译您的ROS2软件包,可以使用以下命令: ``` colcon build --packages-select <package_name> ``` 或者您可以在VSCode的终端中使用ROS2命令行工具。 通过以上步骤,您已经成功创建ROS2的工作空间,并可以使用VSCode进行开发、构建和调试ROS2应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值